[Tex/LaTex] Should I use fix-cm

computer-modernfontsfontsizepackages

I recently became aware of the existence of the fix-cm package. I've looked at the documentation in fixltx2e.pdf, but it's not clear to me exactly what the problem is that it fixes. Should I worry that I have been getting suboptimal glyphs all this time? Or should I only worry if the log contains something like:

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

or

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

?

Should I just always use it? Are there any downsides?

Concern stems from this part of the documentation:

The appearance of the T1 and TS1 encoded CM fonts (aka ‘EC’) is made
as similar as possible to the traditional (OT1 encoded) ones.
Particularly, a number of broken or ugly design sizes are no longer
used, the look of the bold sans serif typeface at large sizes is
considerably improved, and mismatches between the text fonts and the
corresponding math fonts are avoided.

Does this apply to the default situation with pdflatex, with Postscript Type 1 CM fonts embedded in the PDF? Can anyone provide an example of output with different appearance when using fix-cm?

While searching for information, I discovered the package anyfontsize, which apparently allows arbitrary scaling for any font, not just Computer Modern. Does this accomplish the same thing as fix-cm, but more generally?
The fixltx2e documentation is adamant that one must load fix-cm before \documentclass and use the command \RequirePackage, like so:

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

and says not to do this for any other package. Meanwhile, anyfontsize is just loaded normally with \usepackage{anyfontsize}. If anyfontsize accomplishes the same thing, how come it doesn't need to be loaded first with \RequirePackage? Conversely, if the fix can be done in a normal package, why is fix-cm so stringent?

Thanks for the suggestions for alternate font packages. Let's assume that I want to use Computer Modern, and I want to stick with the default version in TeX Live 2012 (which I believe is the Bluesky conversion of CM to Postscript Type 1), because I've heard that this is the highest-quality vectorization (at least if you don't need the new symbols in lmodern.) Discussion about this properly belongs to another question, like Why does Latin Modern make strange-appearing output? or Latin Modern vs cm-super?.

Best Answer

It is generally best to switch to more modern font packages. Use fix-cm if you are using the standard Computer Modern fonts and notice problems, such as those messages in the log file. As the name suggests, the package only works with the cm fonts, and additionally the latex symbol font lasy. A downside mentioned in the documentation is that it can lead to generation of some large .pk files.

The reason that it is loaded with \RequirePackage rather than \usepackage, is that the command \usepackage explicitly checks that it is called after \documentclass and complains otherwise. \usepackage is the user level command for loading packages. \RequirePackage is the equivalent, usually for use in package and class files. According to the documentation, the load order for fix-cm is important, though the documentation also points out that the circumstances under which it will not work via a usual \usepackage in the preamble are rare. To quote:

In case the package is loaded in the preamble, any of the CM fonts may have been used already and cannot be redefined. Yet we try to intercept at least the problem that is most likely to occur, i.e., a hidden \normalfont. [...] fix-cm may still fail, if the EC fonts are preloaded in the LATEX format file. This situation is, however, very unlikely and could occur only with a customized format.

anyfontsize is essentially an extension of the package type1cm, rather than fix-cm, and its purpose is more to allow continuous scaling of font sizes, rather than loading of certain fixed design sizes.