在 XeLaTeX 中使用 .ttf 字體時出現問題

在 XeLaTeX 中使用 .ttf 字體時出現問題

我有一些.ttf字體~/Library/Fonts想與 XeLaTeX 一起使用,但它似乎找不到它們。例如,這將編譯:

\documentclass[]{article}
\usepackage{fontspec}
\setmainfont{Times New Roman}

\begin{document}
The quick brown fox jumps over the lazy dog.
\end{document}

但這不會:

\documentclass[]{article}
\usepackage{fontspec}
\setmainfont{Times New Roman.ttf}

\begin{document}
The quick brown fox jumps over the lazy dog.
\end{document}

是的,Times New Roman.ttf是在~/Library/Fonts.

答案1

您似乎對 的字體查找有誤解xetex。不同的查找機制在XeTeX手冊,但我會嘗試將事情歸結為一個答案。

如果您提供字體名稱,例如 Times New Roman,如第一個範例所示,您在其中調用

\setmainfont{Times New Roman}

然後 XeTeX 將使用系統的字體實用程式來尋找字體。在 GNU/Linux 上,這通常是fontconfig. XeTeX 會詢問fontconfig“名稱為“Times New Roman”的字體在哪裡?”,並fontconfig會回覆“它位於.fonts/Times New Roman/Times New Roman.ttf”之類的內容。然後 XeTeX 將繼續呼叫xdvipdfm從該檔案載入字型。

如果您提供檔案名稱而不是字體名稱,例如Times New Roman.ttf,如

\setmainfont{Times New Roman.ttf}

然後 XeTeX 將立即移交給xdvipdfm實用程式以包含該文件中的字體,即來自Times New Roman.ttf當前目錄或來自kpathsea樹的字體texmf

建議將字體安裝為系統字體,這樣您的目錄中就不會出現多個字體副本。如果由於某種原因無法做到這一點,那麼您應該將字體檔案與文件放在同一目錄中,或者如果您使用多種字體,則可以將字體檔案放在專門用於字體的子資料夾中。然後,您可以透過相對路徑載入字體,如下所示

\setmainfont{fonts/Times New Roman.ttf}

注意:我不喜歡檔案名稱中的空格,因為如果不正確轉義某些軟體,它們往往會崩潰。

相關內容