24

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.

10
  • 4
    Change the paper feeder or the tray.... Sorry it had to be done.
    – percusse
    Mar 2, 2013 at 16:29
  • 2
    Paper output is fine. It's the screen output that's too skinny. I don't have a paper feeder on my monitor. Do you??
    – bubba
    Mar 2, 2013 at 16:46
  • 3
    You say you're ok with the look of CM when the output is printed on paper. Have you tried a version of this font with better on-screen "hinting"? E.g., have you tried using Latin Modern instead of Computer Modern? Separately, have you tried changing the resolution (pixel count) of your display? Oddly enough, sometimes lowering the resolution slightly can produce better-looking on-screen rendering of certain fonts.
    – Mico
    Mar 2, 2013 at 19:12
  • 3
    A font is both an aesthetic object and a practical tool. I wouldn't take the blueprints for a car, distort the x and y axes by unequal scale factors, and expect the result to be a good blueprint for a car. I also wouldn't go through an art museum taking snapshots of paintings and subjecting them to similar changes in their horizontal and vertical proportions. Metafont provides the ability to do this kind of thing so that it can be done by the designer, who presumably has carefully considered practical and aesthetic reasons for his choices. If you want a less spindly font, don't use CM.
    – user6853
    Mar 2, 2013 at 19:53
  • 6
    @Ben -- sounds like you think parameterizing a font is a bad idea, and any attempt at adjusting the parameters will lead to a design atrocity. Maybe. Depends who does it, obviously. But, OTOH, it seems likely that it could improve screen readability. So, my questions were "can it be done", and "has it been done". I didn't ask "should it be done". If someone gives a positive answer to the "has it been done" question, then I can judge whether the results are useful to me, and you are free to ignore them if you find them unbearably hideous.
    – bubba
    Mar 4, 2013 at 15:03

3 Answers 3

15

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.

5
  • Good ideas. Thanks. My German is pretty poor, but I will try to struggle through the article you referenced.
    – bubba
    Mar 6, 2013 at 10:55
  • The German guy did the adjustments using the "blacker" parameter in Metafont, which only works if you use Metafont-generated bitmap fonts, of course. I'd prefer to stick with outline fonts, if possible.
    – bubba
    Mar 7, 2013 at 3:30
  • The idea of using a smaller design size seems promising. I'm going to try that out. Also, I might try using the fontspec FakeStretch command to make some further minor adjustments.
    – bubba
    Mar 7, 2013 at 3:32
  • The idea involving FakeStretch sounds interesting! Could you maybe post an example when you find a pleasing solution?
    – NauC
    Mar 7, 2013 at 16:12
  • I added a picture to the question. Thanks again.
    – bubba
    Mar 9, 2013 at 11:49
8

The MLModern package was designed to address precisely this; it is a drop-in replacement for cm-super and lmodern in all major TeX engines, with \usepackage{mlmodern}.

1

In case you are only interested in physical prints, you can take a look at the mpfonts package. These fonts wont look good digitally, at-least they don't when I tried, but print fine. The printed document looks nice and the character glyphs come out to be quite black, perhaps this is how they were intended to look, although I agree that this isn't the best solution available for viewing on computer screens. You can take a look at the New Computer Modern fonts for a modern OTF font, with full Unicode support, which come in a thicker "Book" weight.

1
  • 1
    I ended up using the “book” variant of New Computer Modern
    – bubba
    Oct 23 at 10:31

You must log in to answer this question.

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