Tue, 20 Mar 2007

I used to do a lot of PHP and web development (CSS, HTML, Javascript) using Vim in the past. Things change, I'm now mostly on Eclipse doing Java. Although this blog entry is not about comparing development platforms, I feel an urge to say that Eclipse+Java is much less error prone than anything I've used in the past. If you have written some code and Eclipse doesn't bug you with errors and warnings, it will most probably do what you want it to do.

But to get it what you want to do, you'll probably have to spend some time looking at some text you yourself have typed in. We developers have developed a habit of organizing our product using blocks of text and to achieve further granularity we (ab)use indented text. So we end up with text blocks indented, and to be able to easily see what's going on in some particular code; most of us prefer monospaced (fixed-with) fonts.

On GNU/Linux we have very few monospaced fonts: Bitstream Vera Sans Mono, Lucida Sans Typewriter, FreeMono, Terminus and misc-fixed to name a few. All these fonts are designed for use on a CRT screen, and they look just as good when printed. But hey, it's 2007, portable computers with LCD screens are affordable everywhere. They're more friendly to the environment, they consume much less power and space, they're lighter so we can carry them easier. I'm not sure about whether if they are more fragile or not. What I'm sure is, they need extra love in typesetting software.

The font renderer in Freetype2 can use hinting, antialiasing and subpixel rendering techniques to make a font look better, so Pango takes advantage of these. Subpixel rendering is a brilliant idea, really. While searching for information about font rendering, I stumbled upon SubLCD, an unpatented and free subpixel rendering algorith by Kim G. S. Øyhus. I think this can benefit Freetype and the rest of the desktop freedom people a bit, I wonder if I can help with a patch.

And our dear old friend, Microsoft has something slightly better, called ClearType which is based on subpixel rendering. Unfortunately our old friend has a patent of this so-called technology, we are either forced to use Windows XP/Vista or we don't get the polish. There are close choices though, see my older (Turkish but helpful) blog entry about font settings in GNOME.

The news is that, our old friend takes another step forward to increase text readability on LCD screens by spending a small fortune on designing fonts to further support ClearType™. The new Windows Vista comes with a very good set of fonts. I didn't look at Vista yet, for the record.

If you're looking for some good fonts for programming, I would recommend taking a look at Keith Devens' page and Trevor Lowing's collection. If you have a valid Vista or Microsoft Visual Studio license, I recommend Consolas, when used with ClearType it's the best monospaced fonts I've ever used.

Really, it's a pleasure to read text using Consolas because even in the smallest size you can easily distinguish between some characters that otherwise would look very similar (a-e, g-y, O-o-0, 1-l-| and so on).

I remember GNOME Foundation's agreement with Bitstream to provide a good set of default fonts (the Vera family) for the GNOME Desktop. It was a good step, and I believe we should be doing more. Currently we consider fonts as data, or even worse, consumer goods. Apparently users perception is different: modern Linux distributions don't have enough decent fonts included, compared to Vista. There are Microsoft's Core fonts for the web available, but NIH syndrome doesn't let most us see them as a friendly tool for productivity.