使用 XeTeX 调试 OpenType 功能/替换问题

使用 XeTeX 调试 OpenType 功能/替换问题

我收到了一组由专业开发的 OTF 字体更新的字体,我正尝试将其与普通 XeTeX 一起使用。

当将它们与 XeTeX 一起使用时,我无法使用 OpenType 功能,即使是最基本的功能(如 +liga),尽管它们似乎存在。我后来通过添加 :script=DFLT 解决了这个问题(见最后),但我仍然不确定如何调试它,因为我通过反复试验找到了解决方案。

例如,问题是:

\font\rm"New Font" at 12pt
\rm Office \bye

生成了不带 ffi 连字符的“Office”,同时:

\font\rm"Old Font" at 12pt
\rm Office \bye

使用连字生成 Office。其他功能(例如 +smcp、+ornm、+hlig)可与其他字体配合使用,但不能与新字体配合使用(例如,\font\rm"Old Font:+smcp" at 12pt可以给我小写字母,但\font\rm"New Font:+smcp" at 12pt不能)。

如果我尝试otfinfo -f newfont.otf

我明白了

c2sc    Small Capitals From Capitals
dlig    Discretionary Ligatures
dnom    Denominators
frac    Fractions
hist    Historical Forms
hlig    Historical Ligatures
liga    Standard Ligatures
lnum    Lining Figures
medi    Medial Forms
[etc.]

所以我知道字体中存在这些特征。

我还用 fontforge 打开了字体并检查了 ffi 替换是否存在:确实如此。

比较旧字体和新字体,除了字形形状的差异外,我还注意到新字体是 OS/2 版本 3 而不是 2。这有什么区别吗?此外,我注意到新字体中有更多的替换(20 个而不是 18 个);它们以不同的顺序出现(首先是 +c2sm);有两个 +frac 替换;并且有一个与 +frac 替换相关的单个替换。这些中的任何一个都会导致 XeTeX 阻塞吗?

最后,如果我使用 abiword,它会执行 ffi 替换,以及一些不太常见的替换,例如字体中以 +liga 形式出现的 Th。

XeTeX 没有错误。

有人可以建议我如何调试这个问题并看看 XeTeX 不喜欢什么吗?


经过深入阅读 XeTeX 参考指南并逐一检查字体选项后,我最终发现指定脚本语言可以解决问题:

\font\rm"New Font:script=DFLT" at 12pt
\rm Office \bye

但是,我仍然不确定为什么 XeTeX 似乎不喜欢这种字体。我原本以为 DFLT 脚本会默认被读取... 我也不确定如何正确调试它。

相关内容