我刚刚升级到 TeXLive 2020,通过 torrent 下载。
一个编译时没有错误并给出预期 PDF 的文件现在抛出错误。我的 MWE 如下:
\documentclass[a4paper,12pt]{article}
% Compiles with xelatex under TeXLive 2019 but not under TeXLive 2020.
\usepackage{fontspec}
\setmainfont{Noto Serif}
% From https://www.fontsquirrel.com/fonts/amadeus
\newfontfamily\amadeus{Amadeus Regular}
% From https://www.fontsquirrel.com/fonts/kingthings-calligraphica
\newfontfamily\kingthings{Kingthings Calligraphica Light}
\begin{document}
Test.
{\amadeus\fontsize{50}{60}\selectfont Test\normalfont}
Test.
Test.
{\kingthings\fontsize{50}{60}\selectfont Test\normalfont}
Test.
\end{document}
错误是:
(/home/chandra/extra/texlive/2020/texmf-dist/tex/latex/fontspec/fontspec.cfg)))
kpathsea:make_tex: Invalid filename `Kingthings Calligraphica Light', contains ' '
! Package fontspec Error: The font "Kingthings Calligraphica Light" cannot be
(fontspec) found.
For immediate help type H <return>.
我附加了使用 TeXlive 2019 编译的 PDF 图像。
请建议如何使其在 TeXLive 2020 下运行。
PS 字体安装在哪里?
fc-list | grep Amadeus
给出
/usr/local/share/fonts/a/Amadeus.ttf: Amadeus Regular,Amadeus:style=Amadeus Regular,Regular
同样地
fc-list | grep Kingthings
给出
/usr/local/share/fonts/k/Kingthings_Calligraphica_Light.ttf: Kingthings Calligraphica Light:style=Light
/usr/local/share/fonts/k/Kingthings_Calligraphica_2.ttf: Kingthings Calligraphica 2:style=Regular
/usr/local/share/fonts/k/Kingthings_Calligraphica_Italic.ttf: Kingthings Calligraphica Italic:style=Calligraphica
TeXLive 2019 和 TeXLive 2020 的路径
TeXLive 2019 的路径:PATH=/usr/local/texlive/2019/bin/x86_64-linux:$PATH;
TeXLive 2020 的路径:PATH=/usr/local/texlive/2020/bin/x86_64-linux:$PATH;
笔记:TeXLive 树位于 之下/home/chandra/texlive
,符号链接到/usr/local/texlive
。
调用 xelatex
source texlive2020
which xelatex
给出
/usr/local/texlive/2020/bin/x86_64-linux/xelatex
天气
source texlive2019
which xelatex
给出
/usr/local/texlive/2019/bin/x86_64-linux/xelatex
可执行文件texlive2020
包含texlive2019
以下行
MANPATH=/usr/local/texlive/20xx/texmf-dist/doc/man:$MANPATH;
INFOPATH=/usr/local/texlive/20xx/texmf-dist/doc/info:$INFOPATH;
PATH=/usr/local/texlive/20xx/bin/x86_64-linux:$PATH;
其中分别xx
为20
和19
。
对两个不同版本的调用xelatex
是这样完成的:
xelatex
从2020年起:source texlive2020; xelatex [filename]
xelatex
从2019年起:source texlive2019; xelatex [filename]
TeXLive 2019 和 TeXLive 2020 的日志文件
字体相关
fc-cache -fsv
并luaotfload-tool --update --force
成功执行。- lualatex [文件名]编译成功使用上述源文件来提供正确的 PDF 输出。没有问题。
Kingthings Calligraphica Light Light
不起作用。- 如果字体指定为
\newfontfamily\kingthings[Path=/usr/local/share/fonts/k/]{Kingthings_Calligraphica_Light.ttf}
两个都xelatex
和lualatex
编译成功。 fontforge
检测到 的 PostScript 字体名称不符合要求Kingthings Calligraphica Light
。我会将此情况告知字体作者。
结论
解决方法是通过文件名和路径调用字体。这对xelatex
和都有效lualatex
。
仍然存在识别 TeXLive 2019 和 TeXLive 2020 之间发生了什么变化导致不合规字体名称失败的问题。我将把这个问题留给专家来解决。
目前,对于报告为“未找到”的字体,使用文件名和路径似乎是明智的。
感谢@Davislor 通过他的评论提出此解决方法。