28

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?.

13
  • 8
    I would avoid Computer Modern altogether, and use Latin Modern instead: \usepackage{lmodern}.
    – Xavier
    Feb 14, 2013 at 19:36
  • 1
    But I am typesetting with a computer, not with Latin! ;-) And I have the vague feeling that using Metafont is more TeXy. I really don't know anything about fonts in TeX, but surely Knuth knew what he was doing? @Xavier Feb 15, 2013 at 1:52
  • 2
    @Kundor, Knuth did the best possible then, things have changed substantially (his were raster fonts, today fonts defined by curves as outlines are in).
    – vonbrand
    Feb 15, 2013 at 2:29
  • 2
    In short, Latin Modern is a set of true handmade vector fonts (CM generates bitmaps through Metafont and CM-super was vectorized automatically from CM) and offers more glyphs, more accents and more variants. You can read more about it here: Latin Modern vs CM-super
    – Xavier
    Feb 15, 2013 at 16:37
  • 2
    @Kundor Definitely post this as a new question with a MWE comparing LM to CM and the result of \listfiles.
    – Xavier
    Feb 15, 2013 at 20:12

2 Answers 2

16

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.

2
  • Thanks for the information about \RequirePackage. The docs say it's necessary for fix-cm because "a preceding package or even the code of the document class may have used any of the CM fonts already. However, the definitions of those fonts, that are already in use, cannot be changed any more." Why doesn't this apply to anyfontsize? Feb 16, 2013 at 3:44
  • Thanks for the additional explanation of load order. That's somewhat reassuring about using anyfontsize. I edited my question to clarify my remaining concerns (around the blockquote.) Feb 17, 2013 at 19:04
13

I would avoid Computer Modern altogether, and use Latin Modern instead

\usepackage{lmodern}

Latin Modern is a set of true handmade vector fonts (CM generates bitmaps through Metafont and CM-super was vectorized automatically from CM) and offers more glyphs, more accents and more variants. You can read more about it here: Latin Modern vs cm-super?

As for any issue in rendering Latin Modern, they are almost certainly due to errors / missing files in your TeX installation, not to issues within the Latin Modern set of fonts.

1

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .