我希望在我的类文件中使用自定义字体。为此,我将.ttf
文件与.cls
文件一起复制到texlive/texmf-local/tex/latex/local
,然后运行texhash
。
令我惊讶的是,fontspec
似乎无法找到字体文件。但是,如果我将这些.ttf
文件直接复制到文件路径.tex
,一切正常。
(添加:即使我将字体文件复制到/texmf-local/fonts
并运行texhash
或mktexlsr
,我仍然会收到许多错误,例如Package fontspec: The font "***.otf" cannot be found.
)
我怎样才能正确地将这些.ttf
文件添加到 TeXlive 本地文件夹,这样我就不必随每个.tex
文件一起携带这些字体文件?(我宁愿不将这些字体安装为系统字体,因为它们仅在这个单个文档类中使用)
我在 macOS 上使用 XeLaTeX、TeXlive 2020。
答案1
我们texmf.cnf
发现
% TrueType outline fonts.
TTFONTS = $TEXMFDOTDIR;$TEXMF/fonts/{truetype,opentype}//;$OSFONTDIR//
% OpenType outline fonts.
OPENTYPEFONTS = $TEXMFDOTDIR;$TEXMF/fonts/{opentype,truetype}//;$OSFONTDIR//
这就是.ttf
寻找字体的地方。
如果我这样做kpsewhich -expand-var='$TEXMF'
,我会得到(重新格式化以便于阅读)
/<omitted personal id>/Library/texlive/2020/texmf-config,
/<omitted personal id>/Library/texlive/2020/texmf-var,
/<omitted personal id>/Library/texmf,
!!/usr/local/texlive/texmf-local,
!!/usr/local/texlive/2020/texmf-config,
!!/usr/local/texlive/2020/texmf-var,
!!/usr/local/texlive/2020/texmf-dist
所以你想将whatever.ttf
字体保存为
/usr/local/texlive/texmf/local/fonts/truetype/whatever/whatever.ttf
然后运行mktexlsr
(使用适当的权限)。之后,
\usepackage{fontspec}
\setmainfont{whatever}[
Extension=.ttf,
% other options
]
将找到该字体。
答案2
字体不会存储在texmf-local/tex
目录树下,而是存储在 下temxf-local/fonts
。TeX Live 默认在 下包含一些 ttf 字体fonts/truetype
,我可能会为安装在 下的任何字体保留类似的结构texmf-local
。