/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 找不到現有字體

相關內容