想象一下,您正在从正在开发的 C 程序中“手动”(没有库)生成 PDF 程序。您想编写一个下标任意文本的函数。在这里可以想象的最好的事情是 TeX在排版数学时如何下标\inf
和符号。\sup
现在,当您为\inf
符号添加下标时,不会发生任何有趣的事情,它就在那里。另一方面,为\sup
符号添加下标会导致下标文本向下移动几个单位,因为字母“p”的下降幅度略低于字体基线。
那么我的问题是,从 Type-1 或 OTF 字体读取字形度量的最佳方法是什么,以便可以完美地完成排版?我正在寻找特别是在 PDF 格式规范中提到的ascent、descent和width指标。
由于解析字体文件看起来像“做工作而不是 PostScript 解释器”,它必须执行这些计算以放置最终构成单词和段落的单个字母,如果我可以参考“最后一个文本的结尾”会很好字符串”在 PDF PostScript 流中。
考虑一下 PDF PostScript 流的这个片段:BT /F1 12 Tf 0 0 Td (Hello World!)Tj (Hello again!)Tj ET
“Hello again”精确地呈现在它应该在的位置。所以 PostScript 解释器(当然)知道下一批文本Tj
应该从哪里开始,但我不知道如何引用这些信息,这样我就可以避免所有混乱的字体解析。
如果有人遇到这个问题,请查看我在 Adobe 论坛上发布的类似问题,我也在那里获得了一些有价值的信息。