[Tex/LaTex] Fatter Computer Modern

computer-modernfonts

I very much like the design of the Computer Modern fonts, except that the strokes (mostly the hairlines) are too thin and "spindly", so not well suited to low-resolution devices like computer screens. I guess I'm not alone — I often see complaints about this. This problem could be solved just by re-running Metafont with some "fatter" parameter values, couldn't it? Has anyone done that?

A few things I discovered by myself:

  1. Alan Hoenig created a package called MathKit. The idea is to define sets of parameters that make the Computer Modern fonts look like standard ones (Times, Palatino, etc.) The Cambria font is nice and fat. I suppose one could use MathKit to create a CM fat-alike of Cambria. Of course, I could just use Cambria, but CM just looks "nicer" to me (somehow).

  2. Metafont has parameters like "blacker" that are intended to adjust rasterization according to the properties of the output device. In ancient times, people used to fiddle with these parameters quite a bit to get good output on the printers of the day (which typically had resolutions of 200 to 300 dpi). Of course, none of this helps if you're using outline fonts rather than bitmap ones. When using outline fonts, the OS or the viewing app handle the rasterization, and it's beyond your control.

  3. Something could perhaps be done by adjusting the hinting of the CM outline fonts, but hinting seems like a black art that hardly anyone knows much about. The standard Y&Y/Blue Sky CM fonts were hinted by real experts, so no further hinting exercise is likely to produce better results, presumably.

  4. One could use a smaller design size, as suggested by NauC in the answer below. This will produce thicker strokes. It will also produce wider characters, but I was thinking I might be able to narrow them again using fontspec's "FakeStretch". The end result (if I'm lucky) will be characters with thicker hairlines.

To try out the idea from #4, I used the following code:

\documentclass[a4paper,10pt]{memoir}
\usepackage{fontspec}
\defaultfontfeatures{Scale=MatchLowercase}

\begin{document}
\raggedright

\chapter{Motivation}
\section{Background Material}
bedbugs in flowery bloomers.

\fontspec[OpticalSize=0, FakeStretch = 0.876]{Latin Modern Roman 7 Regular}
bedbugs in flowery bloomers.

\fontspec[OpticalSize=0, FakeStretch = 1.09]{Latin Modern Roman 17 Regular}
bedbugs in flowery bloomers.

\end{document}

and I got these results:
three bedbugs

At huge sizes like this, any rasterization looks fine, of course. I provided the images just so that people could see the outline differences. The important thing (to me) is that the second line looks better than the first one at small sizes in a PDF viewer, so I'm happy with the progress. I am a raw beginner with TeX/LateX, so maybe someone with more expertise can improve my solution. Now I need to figure out how to do the same thing with math.

Best Answer

This post on a german typography board provides a possible solution for this problem. The OP also gives a snippet of Knuth's 'Digital Typography' to show that the CM was never meant to look that thin in print (as it does with modern laser printers; see third snippet).

Another workaround – although kludgy – would be to use a different optical size for standard text. If you set the text in 11pt, the default optical size is 10pt. Choosing 9pt instead will result in slightly thicker strokes but also a slightly wider letter shape.