出现错误“字体形状未定义”-解释解决方案?

出现错误“字体形状未定义”-解释解决方案?

当我编译我的文档时出现错误。

Font shape `TS1/TeXGyreTermes(0)/m/n' undefined
(Font)  using `TS1/cmr/m/n' instead.

它不会阻止我的文档正确编译,但收到此警告真的很烦人。
我已经发现我可以使用以下命令修复它:通过查看过时\DeclareFontFamilySubstitution{TS1}{\rmdefault}{udidot}软件包的文档substitutefont这里

通过这个 MWE 你可以重现错误:

\documentclass{scrreprt}

\usepackage{fontspec}
\setmainfont{TeX Gyre Termes}

\usepackage{gensymb}
\usepackage{textcomp}
\usepackage{scrlayer-scrpage}


\begin{document}

asdf

\end{document}


正如您所看到的,它来自树包的组合\usepackage{gensymb} \usepackage{textcomp}\usepackage{scrlayer-scrpage}
如果我仅使用,gensymb我会收到警告:

Not defining \perthousand.
Not defining \micro.

可以通过使用包来修复这个问题textcomp,但这会产生初始错误。
有人可以向我解释一下为什么会发生这种情况以及该命令\DeclareFontFamilySubstitution{TS1}{\rmdefault}{udidot}实际上在做什么吗?

答案1

不要使用textcompgensymb打包带有 Unicode 字体的带有 fontspec 的旧式 tex 编码。–

T1 编码只有 256 个字符,因此添加了 TS1 编码以允许额外的字体,从而允许另外 256 个字符,但您使用的是 TU(Unicode)编码的 TeX Gyre 字体,这种字体可以有几千个字符,所以不,它们不仅没必要,而且如您所见,它们是有害的并会破坏 unicode 设置。

在最近的 latex 版本中textcomp甚至在经典的 8 位 latex 或 pdflatex 中都没有用,因为它基本上是预加载的,并且 TS1 编码字体默认可用。

相关内容