
我有一些.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}
注意:我不喜歡檔案名稱中的空格,因為如果不正確轉義某些軟體,它們往往會崩潰。