/setmainfont 路径 2 级深度上存在错误?

/setmainfont 路径 2 级深度上存在错误?

我试图将所有自定义项和字体放在一个资源文件夹中,以便可以在多个文档中使用它并保持相同的样式。不幸的是,每当我尝试将字体放入两级深度的路径中时,我都无法编译文档。我收到错误:

! 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 找不到现有字体

相关内容