在 XeLaTeX 中使用 .ttf 字体时出现问题

在 XeLaTeX 中使用 .ttf 字体时出现问题

我有一些.ttf字体~/Library/Fonts想在 XeLaTeX 中使用,但似乎找不到它们。例如,这将编译:

\documentclass[]{article}
\usepackage{fontspec}
\setmainfont{Times New Roman}

\begin{document}
The quick brown fox jumps over the lazy dog.
\end{document}

但这不会:

\documentclass[]{article}
\usepackage{fontspec}
\setmainfont{Times New Roman.ttf}

\begin{document}
The quick brown fox jumps over the lazy dog.
\end{document}

是的,Times New Roman.ttf~/Library/Fonts

答案1

您似乎对 的字体查找有误解xetex。不同的查找机制在XeTeX 手册但我会尝试将事情简单概括一下来寻找答案。

如果您提供字体名称,例如 Times New Roman,如第一个示例中所示,您调用

\setmainfont{Times New Roman}

然后 XeTeX 将使用系统的字体实用程序来查找字体。在 GNU/Linux 上,这通常是fontconfig。XeTeX 会问fontconfig“名为 «Times New Roman» 的字体在哪里?”,并fontconfig会回答类似“它位于.fonts/Times New Roman/Times New Roman.ttf”的内容。然后 XeTeX 将继续调用xdvipdfm从该文件加载字体。

如果你提供的是文件名而不是字体名称,Times New Roman.ttf例如

\setmainfont{Times New Roman.ttf}

然后 XeTeX 将立即移交给xdvipdfm实用程序以包含来自该文件的字体,即来自Times New Roman.ttf当前目录或通过kpathseatexmf

建议将字体安装为系统字体,这样您的目录中就不会有多个字体副本。如果出于某种原因无法做到这一点,那么您应该将字体文件放在文档旁边的同一目录中,或者,如果您使用多种字体,则将其放在专门用于字体的子文件夹中。然后,您可以通过字体的相对路径加载字体,如下所示

\setmainfont{fonts/Times New Roman.ttf}

注意:我不喜欢文件名中有空格,因为如果不正确转义空格,某些软件就会崩溃。

相关内容