我正在寻找估计 PostScript 字体高度(上升部分的空间)和深度(下降部分的空间)的 PostScript 代码。字体的边界框可以吗(FontBBox
)用于此目的?
这是我的问题的一些背景:字体的字形位于基线上。显然,带有下降部分的字形将到达基线以下,我想知道下降部分可以到达基线以下多远,以便我可以在布局中提供足够的空间。
我见过渲染给定字符串以检查其尺寸的 PostScript 代码 https://stackoverflow.com/q/3618194/44082。我对给定字体的一般答案很感兴趣。
好吧,你已经发现了这两条“捷径”。 FontBBox 给出了叠加在一起的字体中所有字形的边界框。false charpath flattenpath pathbbox
给出指定字符串的框.
对于 Type 3(用户定义)字体,这就是您可以合理期望做的全部事情;但对于更流行的 Type 1 字体,两者都有丰富的度量信息in字体和“metrics”文件(对于其他应用程序)。
但这是我不太了解的部分。所以我将阅读(在 Adobe Type 1 手册中)并稍后扩展这个答案。
Edit:事实上,看起来这些可能是一般情况下最好的方法。
There is垂直对齐值数组,采用 Type 1 字体,位于 /Private 字典中,名称为 /BlueValues;但不能保证字体会尊重它们。数组中的第一个数字是基线超调;这是像“O”这样的字母的底部边缘,它低于基线。数组中的最大值将是上升高度超调 or the 上限高度超调(以较高者为准)。但任何单独的角色都可以在不考虑这些值的情况下绘制(因此,不能保证)。
另一方面,FontBBox 本身可能反映字体中存在的任何“特殊”字符的边界框,无论它们是否可以通过编码向量访问(即,您不能show
他们,但必须glyphshow
them).
所以最好的选择可能是采取pathbbox
您打算使用的所有字符的字符串。这将忽略可能存在但与您的目的无关的任何其他角色的贡献。并且不要忘记flattenpath
从曲线中删除控制点(可能远离“真实”边界框)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)