我試圖將所有自訂和字體放在資產資料夾中,以便我可以在多個文件上使用它並保持相同的樣式。不幸的是,每當我嘗試將字體放入兩層深度的路徑中時,我都無法編譯該文件。我收到錯誤:
! 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 找不到現有字體