我有一些.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
当前目录或通过kpathsea
树texmf
。
建议将字体安装为系统字体,这样您的目录中就不会有多个字体副本。如果出于某种原因无法做到这一点,那么您应该将字体文件放在文档旁边的同一目录中,或者,如果您使用多种字体,则将其放在专门用于字体的子文件夹中。然后,您可以通过字体的相对路径加载字体,如下所示
\setmainfont{fonts/Times New Roman.ttf}
注意:我不喜欢文件名中有空格,因为如果不正确转义空格,某些软件就会崩溃。