Monday, March 17, 2008

One font to rule them all

I have started a new Font, called "Solstice". This is my second attempt to make "one font to rule them all". In other words, I want to have a font that is good enough to be used as the only font on a small "embedded" Linux system. This is useful for mini-Linux distributions, for running Linux on older computers, and for having a single general-purpose font suitable for on-screen reading, editing files, and printing.

In 2007, I attempted to make a screen-readable version of the Bitstream Charter font. This project was, looking back, unsuccessful. Bitstream Charter is a font for laser printers; it is not a screen font. In particular, making it legible below "14" in size is nay-to-impossible.

I finally threw in the towel; my mini-linux system that needs a good screen font uses a bitmap conversion of "Verdana" I call "Vorpal". While this is legal in the USA, the legal status in some other countries is still up in the air.

This time, instead of trying to make a font optimized for 300dpi printers screen readable, I'm making a mostly-libre font designed for the screen one that looks good using old-school non-anti-aliased font rendering technology. The goal is to have a font that looks good on the screen, when printed, and, ideally, can be used as both a monospaced and a porportional font.

I am basing this font off of DejaVu Serif, which in turn is derived from Bitstream Vera Serif. The license is not as good as the OFL; in particular, I have some concerns about embedding a font with this license in PDF files. The license states "The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces." Since the preposition "in" instead of "with" is used here, there is some ambiguity about whether, when making a PDF file embedding this font, one merely has to include the license in the PDF file (this is fairly easily done), or whether the license has to be in the part of the PDF file containing the font information (which is more difficult to do).

Right now, I have taken the font, and had Fontforge make bitmap renderings of the font at various small sizes. I am now, by hand, making those low-resolution renderings as readable as I can at various resolutions. Since Bitstream Vera is a screen font, this is easier to do than it was with Bitstream Charter.

I am doing this with Vera Serif instead of Vera Sans because:
  1. Vera Serif is about as readible on the screen as Vera Sans.
  2. Vera Serif is easier to read when printed out.
Here are my current plans:
  1. Make bitmap renderings of Serif Roman at 8,9,10,11,12,14,16 pixel sizes (current work)
  2. From the Verily project, make a monospace version of Vera Serif that is both a screen and a printing project. This will only be rendered at 12 pixel size on the screen (and will replace misc fixed when done)
  3. Make an oblique version of Vera Serif that only uses the "a" and "f" glyphs from "DejaVu Serif Italic"; I feel the quality of "DejaVu Serif Italic" doesn't have the same quality as "Vera Serif"; so my oblique version will just mostly be a slanted version of V.S.
  4. Make bitmap renderings of Serif Italic at 10,11,12,14,16 pixel sizes.
  5. Make bitmap renderings of Serif Bold at 10,11,12,14,16 pixel sizes.
This font will only exist in Roman, Bold, and Italic forms, and only in Roman form at smaller screen resolutions.

My work on this project can be downloaded here. In particular, unlike my Charter-derived font, this font is, even without full hinting, about as readable as Verdana on the screen. This is even true in Windows XP (Vista is nice because just about any font looks decent on the screen; older systems like XP need fonts made for the screen).

This project is part of my project to update MOAM-CD. I plan on holding on to MOAM-CD 20080217 for a while; it is "good enough" for the amount of time I actually need to use MOAM-CD these days (almost never; I lug my laptop around with me, which seems to be helping develop my muscles, making me more attractive with the latinas). The main change I did was to make as much room for music as possible, since the most common use for MOAM-CD is to put it in my roomate's stereo and listen to music I relax to.

There are bugs to be fixed in MOAM-CD, but nothing I can't work around. For example, RXVT seg faults and dies when trying to use aspell in terminal mode; the workaround is aspell -a < file | grep '^&'