为什么 XeTeX 不能正确地将此 Th 连字符映射到 T_h?

为什么 XeTeX 不能正确地将此 Th 连字符映射到 T_h?

我意识到我在这里使用了专有字体,但这就是我发现这个问题的地方(它也适用于其他连字符以及旧式数字)。

\documentclass{article}
\usepackage{fontspec}
\setmainfont[
        Path = M:/MyStuff/Fonts/timesnewroman6.80/,
        UprightFont = times.ttf,
        Ligatures = Discretionary]{tnr}
\begin{document}
Th
\end{document}

在此处输入图片描述

另一方面,当我从 pdf 复制并粘贴此内容时,我得到了

答案1

Times New Roman 字体(至少是 Windows 附带的版本)有版本 3post表不包含任何字形名称(post是包含 TrueType 字体中字形名称的表)。因此,PDF 驱动程序(xdvipdfmx)将为字形提供合成名称;对于像这样的未编码字形,它将只是字形 ID 的位置glyphXXXXXXXX

您在 FontForge UI 中看到的名称只是 FontForge 本身生成的合成名称,它似乎应用了一些启发式方法,根据字体的字形替换规则猜测未编码字形的字形名称。

xdvipdfmx目前不执行这样的启发式方法,因为它需要解析GSUB字体表(这不是驱动程序通常所做的事情;OpenType 布局由 XeTeX 本身完成),并且并不总是万无一失的(如果相同的字形被重新用于两个不同的连字符会怎样?)。

相关内容