我最近开始在 Mac OSX 上使用 XeLaTeX,但无法让 XeLaTeX 识别我已安装的字体。打开 Font Book,调出“首选项”对话框,并选择将字体安装到系统级目录 ( /System/Library/Fonts
) 而不是用户级目录 ( ~/Library/fonts
) 后,一切正常。
但是,我不希望将下载的字体与操作系统自带的字体混在一起。将来,我可能还希望 XeLaTeX 使用系统上任意目录中的字体(例如,本地 Git 存储库中的某个子目录)。我非常天真地猜测,XeLaTeX 找不到我的用户级字体的原因是它们不在操作系统字体缓存中。但是,调用fc-cache
我的用户级字体目录仍然不会更新我fc-list
使用用户字体获得的输出。
所以,我的问题是这样:如何让 XeLaTeX 使用位于系统上任意目录中的 TTF 和 OTF 字体?目前,我只能让 XeLaTeX 使用系统字体。
感谢您的见解!
答案1
fontspec
允许设置不在当前搜索路径(或系统范围内安装)中的特定字体的路径。此示例SpecialFont.ttf
在下载后立即使用:
% !TEX TS-program = XeLaTeX
\documentclass[a4paper]{article}
\usepackage{fontspec,lipsum}
\setmainfont[Path=/Users/username/Downloads/]{SpecialFont.ttf}
\begin{document}
\lipsum
\end{document}
答案2
@hakaze 的回答对我帮助很大。我仍然需要添加一些参数,以便可以找到每个变体:
\setmainfont{LibertinusSerif}[Path = input/fonts/,
Extension = .otf,
UprightFont = *-Regular,
BoldFont = *-Bold,
ItalicFont = *-Italic,
BoldItalicFont = *-BoldItalic,
Ligatures=TeX
]
如 fontspec 中所述文档。
input/fonts/ 文件夹包含:
LibertinusSerif-BoldItalic.otf
LibertinusSerif-Bold.otf
LibertinusSerifDisplay-Regular.otf
LibertinusSerifInitials-Regular.otf
LibertinusSerif-Italic.otf
LibertinusSerif-Regular.otf
LibertinusSerif-SemiboldItalic.otf
LibertinusSerif-Semibold.otf