![/setmainfont 路径 2 级深度上存在错误?](https://linux22.com/image/370757/%2Fsetmainfont%20%E8%B7%AF%E5%BE%84%202%20%E7%BA%A7%E6%B7%B1%E5%BA%A6%E4%B8%8A%E5%AD%98%E5%9C%A8%E9%94%99%E8%AF%AF%EF%BC%9F.png)
我试图将所有自定义项和字体放在一个资源文件夹中,以便可以在多个文档中使用它并保持相同的样式。不幸的是,每当我尝试将字体放入两级深度的路径中时,我都无法编译文档。我收到错误:
! error: (type 2): cannot find file ''
! ==> Fatal error occurred, no output PDF file produced!
以下作品:
\newcommand{\fontmercury}{\setmainfont[Path = ./fonts/,
BoldFont=mercurybd.ttf,
ItalicFont=mercuryi.ttf,
BoldItalicFont=mercurybi.ttf
]{mercury.ttf}
}
这不起作用:
\newcommand{\fontmercury}{\setmainfont[Path = ./assets/fonts/,
BoldFont=mercurybd.ttf,
ItalicFont=mercuryi.ttf,
BoldItalicFont=mercurybi.ttf
]{mercury.ttf}
}
路径是正确的,但只要我深入超过一个级别就会产生错误。
编辑:我搞明白了。这是这里讨论的缓存问题。在我的情况下,删除 otl 文件夹可以让它编译。LuaTeX 找不到现有字体
答案1
除了删除过期otl
目录之外,您还应该考虑使用不同的设置\fontmercury
。该fontspec
软件包提供了\newfontfamily
指令。对于当前的情况,使用\newfontfamily
似乎比发出\setmainfont
指令更有效。您可以在序言中插入以下说明:
\newfontfamily{\mercury}{mercury.ttf}%
[Path = ./fonts/,
BoldFont = mercurybd.ttf,
ItalicFont = mercuryi.ttf,
BoldItalicFont = mercurybi.ttf]
\newcommand{\fontmercury}[1]{{\mercury #1}}
然后,在文档正文中,你可以写
\fontmercury{...}
答案2
我想我会把这个作为答案发布,因为我不确定如何将其标记为已回答。但我在发布后不久就明白了。我使用 TeXLive + TeXWorks。所以我删除了路径中的 otl 文件夹C:\texlive\2017\texmf-var\luatex-cache\generic\fonts\otl
。它在之后构建文档时起作用了。
更多细节:LuaTeX 找不到现有字体