fontspec/xelatex:从 TeXLive 2019 升级到 TeXLive 2020 后找不到字体

fontspec/xelatex:从 TeXLive 2019 升级到 TeXLive 2020 后找不到字体

我刚刚升级到 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;

其中分别xx2019

对两个不同版本的调用xelatex是这样完成的:

xelatex从2020年起:source texlive2020; xelatex [filename]

xelatex从2019年起:source texlive2019; xelatex [filename]

TeXLive 2019 和 TeXLive 2020 的日志文件

TeXLive 2019 的 xelatex 日志文件。

TeXLive 2020 的 xelatex 日志文件。

字体相关

  1. fc-cache -fsvluaotfload-tool --update --force成功执行。
  2. lualatex [文件名]编译成功使用上述源文件来提供正确的 PDF 输出。没有问题。
  3. Kingthings Calligraphica Light Light不起作用。
  4. 如果字体指定为 \newfontfamily\kingthings[Path=/usr/local/share/fonts/k/]{Kingthings_Calligraphica_Light.ttf} 两个都 xelatexlualatex 编译成功
  5. fontforge检测到 的 PostScript 字体名称不符合要求Kingthings Calligraphica Light。我会将此情况告知字体作者。

结论

解决方法是通过文件名和路径调用字体。这对xelatex和都有效lualatex

仍然存在识别 TeXLive 2019 和 TeXLive 2020 之间发生了什么变化导致不合规字体名称失败的问题。我将把这个问题留给专家来解决。

目前,对于报告为“未找到”的字体,使用文件名和路径似乎是明智的。

感谢@Davislor 通过他的评论提出此解决方法。

相关内容