lualatex:从相对路径加载字体时出错

lualatex:从相对路径加载字体时出错

我正在尝试从 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预期的结果。

这能解释这个问题吗?

相关内容