我使用 XeLaTeX 来访问某些 opentype Unicode 字体,包括 Calluna。但是,XeLaTeX 拒绝显示字体中存在的某些字符。我知道它们存在于字体中,因为我可以在字符映射中看到它们,并且 Windows 可以在其他应用程序中正常显示它们。输入 TeXworks 时,这些字符也能正常显示。
不幸的是,当通过 XeLaTeX(使用 TeXworks)处理时,字符会被替换为该字体的“无字符”占位符。
下面的截图显示了原始的 XeLaTeX、生成的 pdf(在 Adobe Acrobat 中显示相同)和字符映射:
以下是演示代码:
\documentclass[10pt,letterpaper]{article}
\usepackage{fontspec}
\setmainfont[Numbers=Lining]{Calluna}
\setsansfont[Numbers=Lining]{Museo Sans 300}
\begin{document}
◆●■▲◄►▼◎∴∑→㎏€\\
\textsf{◆●■▲◄►▼◎∴∑→㎏€}
\end{document}
TeXworks 设置为其默认编码,即 UTF-8。
日志文件显示 XeTeX 认为字符丢失了;然而,根据字符映射,显然并非如此:
Missing character: There is no ◆ in font Calluna/ICU:script=latn;language=DFL
T;+lnum;!
Missing character: There is no ● in font Calluna/ICU:script=latn;language=DFL
T;+lnum;!
Missing character: There is no ■ in font Calluna/ICU:script=latn;language=DFL
T;+lnum;!
Missing character: There is no ◎ in font Calluna/ICU:script=latn;language=DFL
T;+lnum;!
Missing character: There is no ∴ in font Calluna/ICU:script=latn;language=DFL
T;+lnum;!
Missing character: There is no ㎏ in font Calluna/ICU:script=latn;language=DFL
T;+lnum;!
有没有什么办法解决这一问题?
答案1
字符映射表不是证明:它可以从其他字体中提取字符来填充空白 - 几天前,我遇到了另一种字体的相同问题。您应该使用 fontforge 或 fontlab 检查字体以查看实际字形。您还可以尝试此代码来查看字形映射表,从而检查是否只有编码错误:如何在 XeLaTeX 中访问 Webdings OpenType 字体。
我不知道如何、何时以及从哪个字体窗口提取字形。