Many, many years ago I adopted the Inconsolata font because it was one of the first widely available, free, antialiased programming fonts. In those days, I was still using Vim but when I moved to Emacs, I brought it along with me. From time-to-time I see recommendations for the “ultimate” programming font but I always stay with Inconsolata.
Once you’ve dealt with antialiasing, I think that the critical aspects of a programming font are:
- Distinguishing between oh and zero in a visually obvious way
- Distinguishing between el, eye, and one in a visually obvious way
It’s a bit shocking how many fonts get this wrong.
Over at Evil Martians there’s a nice post on what constitutes the perfect coding font. That includes my desiderata about 0, o, O, i, I, l, L, 1
but also considers additional characters than can cause confusion. The post recommends
- Widening the various brackets types so they can be more easily distinguished
- Making the hyphen and the minus signs the same
- Making
^
and*
resemble the corresponding mathematical symbols - Mathematical symbols, ticks, and quotes should not be too small
- Slashes and bars should be centered
These are all useful criteria but I’m happy if I can distinguish zero and one from other characters. The comments over at reddit suggest all sorts of recommendations for the perfect programming font but, as I say, I’ve been happy with Inconsolata for a long time and probably won’t be changing.