我应该使用 fix-cm 吗?

我应该使用 fix-cm 吗?

我最近才知道这个fix-cm包的存在。我查看了 fixltx2e.pdf 中的文档,但我不清楚它到底修复了什么问题。我应该担心我一直以来得到的字形都不理想吗?或者我应该只担心日志是否包含类似以下内容:

LaTeX Font Warning: Size substitutions with differences
(Font)              up to 13.12pt have occurred.

或者

LaTeX Font Warning: Font shape `OT1/cmr/m/n' in size <X> not available

我应该一直使用它吗?有什么缺点吗?

人们的担忧源于该文档的这一部分:

T1 和 TS1 编码的 CM 字体(又名“EC”)的外观尽可能与传统(OT1 编码)字体相似。特别是,许多不完整或丑陋的设计尺寸不再使用,大尺寸粗体无衬线字体的外观得到显著改善,并且避免了文本字体与相应数学字体之间的不匹配。

这是否适用于 PDF 中嵌入 Postscript Type 1 CM 字体的默认情况pdflatex?有人可以提供使用时具有不同外观的输出示例吗fix-cm

在搜索信息时,我发现了软件包anyfontsize,它显然允许对任何字体进行任意缩放,而不仅仅是 Computer Modern。这是否能实现与相同的功能fix-cm,但更通用?fixltx2e 文档坚持认为必须在使用命令fix-cm之前加载,如下所示:\documentclass\RequirePackage

\RequirePackage{fix-cm}
\documentclass ...

并表示不要对任何其他包执行此操作。同时,anyfontsize只需使用 正常加载即可\usepackage{anyfontsize}。如果anyfontsize完成相同的操作,为什么不需要先使用 加载\RequirePackage?相反,如果可以在普通包中完成修复,为什么要fix-cm如此严格?

感谢您对替代字体包的建议。假设我想使用 Computer Modern,并且我想坚持使用 TeX Live 2012 中的默认版本(我相信这是 CM 到 Postscript Type 1 的 Bluesky 转换),因为我听说这是最高质量的矢量化(至少如果你不需要 中的新符号lmodern)。关于这个问题的讨论应该属于另一个问题,例如为什么拉丁现代语言会产生奇怪的输出?或者拉丁现代与 cm-super?

答案1

通常,最好切换到更现代的字体包。fix-cm如果您使用的是标准 Computer Modern 字体并注意到问题(例如日志文件中的那些消息),请使用。顾名思义,该包仅适用于字体cm,此外还适用于 latex 符号字体lasy。文档中提到的一个缺点是它可能导致生成一些大.pk文件。

\RequirePackage使用而不是来加载它的原因\usepackage是,该命令\usepackage明确检查它是否在之后调用\documentclass,否则会发出警告。 \usepackage是用于加载包的用户级命令。 \RequirePackage是等效命令,通常用于包和类文件。根据文档, 的加载顺序fix-cm很重要,尽管文档还指出,\usepackage在前言中通过通常的方式无法工作的情况很少见。引用:

如果在序言中加载了该包,则任何 CM 字体可能已被使用,无法重新定义。然而,我们试图拦截最有可能出现的问题,即隐藏的 \normalfont。[...] fix-cm如果 EC 字体已预加载到 LATEX 格式文件中,则仍可能失败。但是,这种情况不太可能发生,并且只可能发生在自定义格式中。

anyfontsize本质上是包的扩展type1cm,而不是fix-cm,它的目的更多的是允许字体大小的连续缩放,而不是加载某些固定的设计大小。

答案2

我会完全避免使用计算机现代,而使用拉丁现代

\usepackage{lmodern}

Latin Modern 是一套真正的手工矢量字体(CM 通过 Metafont 生成位图,CM-super 则从 CM 自动矢量化),提供更多字形、更多重音和更多变体。您可以在此处阅读更多相关信息:拉丁现代与 cm-super?

至于渲染拉丁现代字体时出现的任何问题,几乎肯定是由于 TeX 安装中的错误/文件丢失造成的,而不是拉丁现代字体集中的问题。

相关内容