![字距调整数据在实际字体文件中的存储位置在哪里/如何存储?](https://linux22.com/image/267111/%E5%AD%97%E8%B7%9D%E8%B0%83%E6%95%B4%E6%95%B0%E6%8D%AE%E5%9C%A8%E5%AE%9E%E9%99%85%E5%AD%97%E4%BD%93%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E5%AD%98%E5%82%A8%E4%BD%8D%E7%BD%AE%E5%9C%A8%E5%93%AA%E9%87%8C%2F%E5%A6%82%E4%BD%95%E5%AD%98%E5%82%A8%EF%BC%9F.png)
在大多数字体文件中,它们在哪里存储诸如“如果字符 %1 后面跟着字符 %2,则将间距减少 x 点”之类的信息?所有 (%1,%2, resulting_kerning) 元组是否都单独位于中心位置,或者描述 %2 的字体文件部分是否有一个将 %1 标识为字距调整对的部分(或者如果 %2 对于不同的前导字符具有多个可能的字距调整结果,则为 (%1, resulting_kerning) 元组的表)?还是其他什么?它在大多数字体文件格式中实际上是如何构建的?
在我的问题中,%1 和 %2 只是用作符号占位符。
答案1
对于使用tfm
文件的 Classic TeX,字距调整和连字符信息位于 tfm 文件中的 ligtable 中。这是一个二进制文件,但有一个人类可读的“属性列表”格式版本,以及一个tftopl
用于转换文件的实用程序:
在命令行上(texlive 版本,其他实现可能略有不同)
tftopl cmr10.tfm
生成一长串字体度量信息,您可能希望将其直接发送到文件中。您感兴趣的部分是
(LIGTABLE
(LABEL O 40)
(KRN C l R -0.277779)
(KRN C L R -0.319446)
(STOP)
例如你可以在哪里找到
(LABEL C F)
(LABEL C V)
(LABEL C W)
(KRN C o R -0.083334)
(KRN C e R -0.083334)
(KRN C u R -0.083334)
(KRN C r R -0.083334)
(KRN C a R -0.083334)
(KRN C A R -0.111112)
哪些信息在人物主条目中作为注释重复出现:
(CHARACTER C V
(CHARWD R 0.750002)
(CHARHT R 0.683332)
(CHARIC R 0.013888)
(COMMENT
(KRN C o R -0.083334)
(KRN C e R -0.083334)
(KRN C u R -0.083334)
(KRN C r R -0.083334)
(KRN C a R -0.083334)
(KRN C A R -0.111112)
(KRN C O R -0.027779)
(KRN C C R -0.027779)
(KRN C G R -0.027779)
(KRN C Q R -0.027779)
)
它会告诉您大写字母的高度宽度和斜体校正,以及如果后跟 则V
其字距为负的事实。-0.111112 *10pt
A
答案2
在 Computer Modern 系列 (METAFONT) 中,此类信息在 *.mf (METAFONT) 文件中描述并通过 *.tfm (字体度量表) 文件使用。