Good sans-serif fonts

What makes a sans-serif font good?


Many fonts render “I” (capital “eye”) practically identical to “l” (lowercase “ell”), or “l” (lowercase “ell”) practically identical to “1” (digit one). Even those fonts that have three distinct glyphs, tend to let either “I” (capital “eye”) or “l” (lowercase “ell”) be a non-descript tall rectangle, meaning that the reader needs to know the font well, to determine which character the glyph represents. The problem is even worse if a text contains any “|” (vertical pipe) Similarly, many fonts have a “0” (digit zero) which is either identical to, or a narrower variant of “O” (capital “oh”), or have “0” (digit zero) virtually identical to “o” (lowercase “oh”). Again, without familiarity, or comparing “O” (capital “oh”) and “0” (digit zero) side-by-side, it can be hard to tell which is which. These problems exist with almost all sans-serif fonts today. A historical overview is given by Charles Bigelow in Oh, oh, zero!.

A solution

To enable instant recognition of each character, “I” (capital “eye”) must be fitted with slab-serifs (horizontal bars), while “l” (lowercase “ell”) gets a finial, “1” (digit one) maintains a prominent slanted top serif, and “0” (digit zero) has an inner slash or dot. Incidentally, this also avoids any confusion with “|” (vertical bar). While this may be obvious, very few fonts in fact do this. The only ones I’ve found living up to all the above requirements are (with links to repositories):


  1. Requires font-feature-settings: 'zero' for slashed “0” (digit zero).
  2. Requires font-feature-settings: 'ss01', 'zero' for barred “I” (capital “eye”) and slashed “0” (digit zero).

Some editors do not allow choosing font features, which makes even these fonts inadequate.

Font samples

Click on a sample to make generic text on this page use that font: