XeLaTeX 用缺失的字符占位符替换字体中现有的字符

XeLaTeX 用缺失的字符占位符替换字体中现有的字符

我使用 XeLaTeX 来访问某些 opentype Unicode 字体,包括 Calluna。但是,XeLaTeX 拒绝显示字体中存在的某些字符。我知道它们存在于字体中,因为我可以在字符映射中看到它们,并且 Windows 可以在其他应用程序中正常显示它们。输入 TeXworks 时,这些字符也能正常显示。

不幸的是,当通过 XeLaTeX(使用 TeXworks)处理时,字符会被替换为该字体的“无字符”占位符。

下面的截图显示了原始的 XeLaTeX、生成的 pdf(在 Adob​​e 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 字体

我不知道如何、何时以及从哪个字体窗口提取字形。

相关内容