我正在尝试从 lualatex 加载 .ttf,当我将 .ttf 放在与 .tex 文件相同的文件夹中时,效果很好。但是,对于我的项目结构,将 .ttf 文件存储在父目录中并从中加载字体会很有帮助../Fonts/myCustomFont.ttf
。从这个答案我了解到我可以使用Path
例如的参数setmainfont
。我的最小示例如下所示:
\documentclass{article}
\usepackage{lipsum}
\usepackage{fontspec}
\setmainfont[Path = ../Fonts/]{agfarotissansserif.ttf}
% check: the required trailing slash is there
\begin{document}
\lipsum[1-3]
\end{document}
但是,lualatex 在以下示例中会产生致命错误:
!LuaTeX error: cannot find OpenType font file for reading ()
我得出了以下观察:
- 将文件放在
agfarotissansserif.ttf
同一目录中(并删除Path
参数)就可以了。 - 为了检查 lualatex 是否真的读取了 .ttf,我将其重命名,这样我实际上是从不存在的路径加载的。在这种情况下,lualatex 给出了“未找到字体”错误。这意味着路径参数似乎有效果,lualatex 可以找到该文件。
- 这似乎不是字体问题。我对其他 .ttf 文件也遇到了同样的情况。
总的来说,我很困惑:lualatex 似乎确实找到了 .ttf,并且它能够加载字体。但你知道为什么我还是会收到致命错误吗?
记录如下:我ExternalLocation
确实尝试过Path
,看起来它的行为完全一样。字体文件夹是父目录还是子目录也无关紧要。这个技巧清除 lua 字体缓存也无济于事。
我的规格:Ubuntu 14.04,带有来自 Ubuntu 存储库的 Texlive 2013。
更新:
如果我运行luaotfload-tool --find=../Fonts/agfarotissansserif.ttf
(从.tex 的子目录,以便路径有意义),我会得到:
luaotfload | resolve : Font "../Fonts/agfarotissansserif.ttf" found!
luaotfload | resolve : Resolved file name "/usr/share/fonts/truetype/padauk/Padauk-bold.ttf"
另一个奇怪的现象:../Fonts/agfarotissansserif.ttf
即使不是存在。
相反,如果我luaotfload-tool --find=agfarotissansserif.ttf
在与 .ttf 相同的文件夹中运行,我会得到:
luaotfload | resolve : Font "agfarotissansserif.ttf" found!
luaotfload | resolve : Resolved file name "./agfarotissansserif.ttf"
在这种情况下,如果 .ttf 不存在,我就会得到Cannot find "agfarotissansserif.ttf" in index
预期的结果。
这能解释这个问题吗?