我似乎无法让 XeLaTeX 使用 加载 OpenType 字体\fontspec
。fontspec
文档说我需要通过文件名而不是字体名来加载 OpenType 字体,但是当我编译以下内容时:
\documentclass[letterpaper]{scrartcl}
\usepackage{xltxtra}
\fontspec[Path = /home/[MYHOME]/.fonts/]{lmroman10-regular.otf}
\begin{document}
0123456789.
The quick brown fox jumped over the lazy dogs.
``firefly''
\end{document}
XeLaTeX 会产生以下错误:
[XeLaTeX] finished with exit code 1
./xelatexbase.tex:12:Undefined control sequence ... /home/[MYHOME]/.fonts/{lmroman10-regular.otf}
./xelatexbase.tex:12:Package xkeval Error: 'Path' undefined in families 'options' ... /home/[MYHOME]/.fonts/
我已经验证了lmroman10-regular.otf
在/home/[MYHOME]/.fonts/
。我肯定对 Path 参数做了一些错误,我怀疑这是一些简单的事情,但我不明白是什么。
我发布了生成此错误的最小示例,但使用\fontspec
参数的文档与文档第 4 部分中的示例更接近,也会出现同样的错误。当我注释掉时,文档可以编译\fontspec
。
这是在 Ubuntu 10.10 上从存储库安装的最新 TexLive 完整版本。
答案1
对我来说,它与完全更新的 Tex Live 2010 配合使用。不要当您想使用时,请使用 Ubuntu texlive 软件包fontspec
(或任何其他现代软件包)。Ubuntu 中的版本现已有一年半多了,因此有很多错误早已被修复。直接安装 TeX Live。
还有几点值得指出:
手册上说(第 4.2 节)
[您的字体可能位于] 系统字体目录之外。
由于它
~/.fonts
是系统字体目录,您可以从那里按名称加载字体。我认为
fontspec
默认加载 Latin Modern 字体。如果您想明确加载它们,从系统 TEXMF 树加载它们会更方便(TeX Live 应该包含这些字体)。\fontspec
在序言中不会影响任何内容,因为它会更改当前字体,而序言中没有当前字体。请改用\setmainfont
。总之,要从 TeX Live 字体目录显式加载 LM Roman 10 字体,您应该使用
\setmainfont[ Extension = .otf, UprightFont = *-regular, BoldFont = *-bold, ItalicFont = *-italic, BoldItalicFont = *-bolditalic, ]{lmroman10}
请注意,TeX Live 字体目录是自动搜索的。您可能应该使用 和 执行类似的操作
\setsansfont
。\setmonofont
此外,您可能还想添加选项Ligatures=TeX
。
[备注:MikTeX 中的 XeLaTeX 和所有系统上的 LuaLaTeX 都可以通过名称从 TEXMF 树中加载字体。]