我正在尝试使用 TEXMF 树中的 otf 文件,但却使用了另一个同名文件。
我从本地安装的 TexLive 2019 在此文件上运行 lualatex:
\documentclass{article}
\usepackage{fontspec}
\setmainfont [
ItalicFont = LinLibertine_RI.otf,
BoldFont = LinLibertine_RB.otf,
]{LinLibertine_R.otf}
\begin{document}
foo
\end{document}
并得到输出
This is LuaTeX, Version 1.10.0 (TeX Live 2019)
restricted system commands enabled.
(./whichfont.tex
LaTeX2e <2018-12-01>
luaotfload | main : initialization completed in 0.076 seconds
(/usr/local/texlive/2019/texmf-dist/tex/latex/base/article.cls
Document Class: article 2018/09/03 v1.4i Standard LaTeX document class
(/usr/local/texlive/2019/texmf-dist/tex/latex/base/size10.clo))
(/usr/local/texlive/2019/texmf-dist/tex/latex/fontspec/fontspec.sty
(/usr/local/texlive/2019/texmf-dist/tex/latex/l3packages/xparse/xparse.sty
(/usr/local/texlive/2019/texmf-dist/tex/latex/l3kernel/expl3.sty
(/usr/local/texlive/2019/texmf-dist/tex/latex/l3kernel/expl3-code.tex)
(/usr/local/texlive/2019/texmf-dist/tex/latex/l3kernel/l3pdfmode.def)))
(/usr/local/texlive/2019/texmf-dist/tex/latex/fontspec/fontspec-luatex.sty
(/usr/local/texlive/2019/texmf-dist/tex/latex/base/fontenc.sty
(/usr/local/texlive/2019/texmf-dist/tex/latex/base/tuenc.def))
(/usr/local/texlive/2019/texmf-dist/tex/latex/fontspec/fontspec.cfg)))
No file whichfont.aux.
[1{/usr/local/texlive/2019/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
(./whichfont.aux))
410 words of node memory still in use:
3 hlist, 1 vlist, 1 rule, 2 glue, 3 kern, 1 glyph, 5 attribute, 48 glue_spec
, 5 attribute_list, 1 write nodes
avail lists: 2:15,3:4,4:1,5:22,6:1,7:16,9:7
</usr/share/texlive/texmf-dist/fonts/opentype/public/libertine/LinLibertine_R.o
tf>
Output written on whichfont.pdf (1 page, 2910 bytes).
Transcript written on whichfont.log.
如您所见,使用的是 Texlive 2019 安装中的文件,只是文件LinLibertine_R.otf
来自其他位置。我想使用其中的版本/usr/local/texlive/2019/texmf-dist/fonts/opentype/public/libertine
(或者更确切地说,是我在对文件进行 TeXing 时使用的 TEXMF 树中的版本)。
我认为这样做可以做到:
$ luaotfload-tool --cache=erase
$ luaotfload-tool --update --prefer-texmf
但即使在这些命令之后重复 lualatex,它仍使用相同的 otf 文件。我该怎么办?(Akpsewhich LinLibertine_R.otf
符合/usr/local/texlive/2019/texmf-dist/fonts/opentype/public/libertine/LinLibertine_R.otf
预期。)
我认为解决方法是使用显式路径,但实际上,在添加
Path = /usr/local/texlive/2019/texmf-dist/fonts/opentype/public/libertine/
它仍然选择另一个文件!(不过,我写的路径很重要,因为如果我给出另一个目录,它会抱怨找不到该文件!)
答案1
如果你只是想优先使用 texmf 目录中的字体而不是系统字体,你可以设置location_precedence
luaotfload 的“ ”:
\documentclass{article}
\usepackage{fontspec}
\directlua{
fonts.names.set_location_precedence{
"local", "texmf", "system" % The default is "local", "system", "texmf"
}
}
\setmainfont [
ItalicFont = LinLibertine_RI.otf,
BoldFont = LinLibertine_RB.otf,
]{LinLibertine_R.otf}
\begin{document}
foo
\end{document}
这仍然使用 luaotfload 的数据库来查找字体。字体加载系统还允许加载字体以kpse:the_filname.otf
明确请求使用 kpse,但这不会通过 fontspec 公开。