【发布时间】:2017-11-23 00:39:31
【问题描述】:
在编写后记文件时,可以选择这样的字体:
/Courier-Bold findfont 16 scalefont setfont
(bar baz) show
我想更改字体的字母间距 - 有没有办法做到这一点?直接作为字体操作符,或者只是能够在字形渲染之间插入任意 postscript 命令?
【问题讨论】:
标签: fonts postscript eps
在编写后记文件时,可以选择这样的字体:
/Courier-Bold findfont 16 scalefont setfont
(bar baz) show
我想更改字体的字母间距 - 有没有办法做到这一点?直接作为字体操作符,或者只是能够在字形渲染之间插入任意 postscript 命令?
【问题讨论】:
标签: fonts postscript eps
是的,show 运算符有多种变体可用于以下用途:
ax ay 字符串 ashow -
添加 (ax, ay) 到每个字符的宽度,同时显示 string
cx cy 字符字符串 widthshow -
添加 (cx, cy) 到 char 的宽度,同时显示 string
cx cy char ax ay 字符串 awidthshow强> -
结合ashow和widthshow的效果
proc 字符串 kshow -
在 string
一些提示。由于 postscript 没有字符文字,一个常见的习惯用法是从 1 字节字符串文字中提取整数值,以提供 widthshow 和 awidthshow 的 char 参数。例如。
( ) 0 get %the space char, aka 32 or 16#20
除非你想要某种楼梯效果,否则所有 y 值都应该是 0。
在每个字符之间由 kshow 执行的 proc 按顺序接收 char-just-shown 和 char-about-to-be-shown 作为参数。这大概是为了让您在某种“字距调整表”中查找该对。但我从来没有真正看到过这样做。但是如果不需要(通常),请记住弹出它们。
关于制作派生字体,我推荐您参考 codegolf.SE 上的 this answer of mine,它通过在 Times-Roman 周围绘制框来创建填字游戏字体。字符的宽度由 /BuildChar 过程中的 setcachedevice 运算符声明。对于我来说,我只需要一个恒定的宽度,所以我使用 1 直接将其与字体大小联系起来。
【讨论】: