字体警告:为什么会发生尺寸替换?

字体警告:为什么会发生尺寸替换?

如果这个问题不允许,我很抱歉...我试图理解编译(使用 xelatex)后 LaTeX 日志文件中输出的一些警告。其中一个与字体大小有关:

LaTeX Font Warning: Font shape `OMS/cmsy/m/n' in size <30> not available
(Font)              size <24.88> substituted on input line XYZ.

我想了解这里发生了什么以及为什么会发生。我没有在任何地方加载此字体“OMS/cmsy”... LaTeX 从哪里获取它?此外,为什么它经常替换如此奇怪的尺寸(例如 24.88)?

同样的事情也会发生在我未明确加载的其他字体上,例如 OT1/cmr 或 OMS/cmsy...为什么 LaTeX 使用这些字体并用它们替换大小?

答案1

LaTeX 相当古老,一开始仅使用离散大小的字体来节省内存和磁盘空间。因此,许多较旧的字体定义文件包含仅使用此大小的字体的指令,并且如果请求其他大小,它们会触发大小替换。例如,在 OT1cmr.fd 中您可以找到:

\DeclareFontShape{OT1}{cmr}{m}{n}%
     {<5><6><7><8><9><10><12>gen*cmr%
      <10.95>cmr10%
      <14.4>cmr12%
      <17.28><20.74><24.88>cmr17}{}

这些数字是 1.2 的倍数:12=10*1.214.4= 1.2*1217.28 = 1.2*14.4

我不知道您在哪里加载此类字体,因为您没有提供示例,但您可以通过加载 fix-cm 来避免大多数消息:

\RequirePackage{fix-cm} %avoid size substituation
\documentclass{article}

\begin{document}
\fontsize{30pt}{30pt} \selectfont xxx %
\end{document}

相关内容