在PostScript中更改字母间距

qdo*_*dot 2 fonts postscript eps

在编写postscript文件时,可以选择这样的字体:

/Courier-Bold findfont 16 scalefont setfont
(bar baz) show
Run Code Online (Sandbox Code Playgroud)

我想改变我的字体的字母间距 - 有没有办法做到这一点?要么直接作为字体操作符,要么只是能够在字形呈现之间插入任意postscript命令?

lus*_*oog 5

是的,show运算符有几种变体可用于这样的事情:

  • a x a y string   ashow   - 在显示字符串时
    将(a x,a y)添加到每个字符的宽度

  • c x c y char string   widthshow   - 在显示字符串时
    将(c x,c y)添加到char的宽度

  • c x c y char a x a y string   awidthshow   -
    结合ashow和widthshow的效果

  • proc string   kshow   - 在字符串中显示的字符之间
    执行proc

一些提示.由于postscript没有字符文字,因此常见的习惯用法是从1字节的字符串文字中提取整数值,以便为和提供char参数.例如.widthshowawidthshow

( ) 0 get %the space char, aka 32 or 16#20
Run Code Online (Sandbox Code Playgroud)

除非你想要某种阶梯效应,否则所有y值都应为0.

每个字符之间由kshow执行的proc接收作为参数的char-just-shown和char-about-to-be-shown,按顺序.这可能是为了让你在某种"kerning table"中查找这对.但我从来没有真正看到这件事.但如果不需要(通常),请记得弹出它们.


至于制作派生字体,我在codegolf.SE上引用你的这个答案,它通过在Times-Roman周围绘制框来创建一个填字游戏字体.使用/ BuildChar过程中的setcachedevice运算符声明字符的宽度.对于我的,我只需要一个恒定的宽度,所以我用1将它直接绑定到字体大小.