By my reckoning, six of the ten have major flaws that make them completely unacceptable for use as a programming font. Courier, Profont, Consolas, and Incosolata all have insufficient distinctions between 'l' (lowercase L) and '1' (one). Droid Sans Mono has an 'O' (uppercase O) that can pass for '0' (zero). Perhaps by virtue of the font size, Proggy has a lowercase L that can pass for a vertical bar at a glimpse. If you look closely, Proggy's lowercase L looks like a one -- this is less of an issue because it is visually distinct from Proggy's one glyph, but I still don't like it.
Personally, Proggy is the only font that I can agree with @ spoondan's complaints about. But I wouldn't use it for other reasons. Too narrow for my liking. However, I have to flat out disagree with his assessment of ProFont and Droid Sans Mono having confusing O and 0's. The slash through the middle really drives the point that it's a 0..
Thanks for taking the time to put that together. Please note, however, that I complained about Profont's lowercase L looking like a one, not about its zero. Also, the original article's rendering of Droid Sans Mono does not have a slashed zero. Is the original article in error or did you perhaps accidentally reuse Profont for the Droid Sans Mono sample?
It's possible that you just have sharper eyes than I do; I have been getting older (a deadly habit I keep meaning to break, but the withdrawals seem prohibitive). However, just to clarify, my point is not that these glyphs are indistinguishable when directly compared, but that they can mislead you while reading code. I can certainly tell them apart when I compare them. But can I immediately see that "e1" is "e-one", or that "42l" is the long integer 42? If not, having wasted hours on such stupid things, I would disqualify the font.
1. Working with inherited code, one of the original programmers had an identifier I believed was "el" (short for "element") but that was actually "e1" (presumably short for "element 1"). You don't know frustration until your compiler tells you "undefined identifier 'el'" when, by all appearances, there's nothing wrong with your code. Not only did I waste a couple of hours on this, but the stress probably shortened my life by a few hours, too.
2. Embarrassingly enough: For reasons that I don't understand, I have on a couple of occasions typed a zero where I meant to type an uppercase 'O'. I shipped Python code that had a bug in it because I assigned a value to "box0ffset" instead of "boxOffset". The bug was thankfully minor, and I obviously must have been smoking crack to make this typo, but it has happened and could have been avoided if I'd been using a good font.
3. I've seen C code (I think in an open source project) where the programmer typed something along the lines of "100l". He probably meant to type "100L" and just missed the SHIFT key. By this time, I'd switched to a font that had an "l" that was clearly distinct from a "1", but I imagine that I would have otherwise been utterly perplexed.
These are probably not everyday examples. The circumstances in which confusion is possible are rare. But they do happen and are (in some sense) expensive. At the very least, it's a whole class of errors that's easily and cheaply avoided by choosing an attractive font that minimizes the opportunities for confusion. Why risk the frustration?
I always thought it was amusing that the 3 is right above the 3, and the 0 above the o. I've made a few "leet-speak" errors in the past just due to finger-slips.
Typos like these are some of the hardest to debug. More than once I've been at the point of pulling my hair out on some nonsensical error message that is fixed by simply retyping the line. Trust me, you don't want to waste your time on this one.
I recently switched to Terminus, and I've really been enjoying it.
None of the versions I could find worked well on OS X though, so I converted the BDF sources to dfont. If anyone is interested, I just tossed the file on github, http://github.com/deactivated/dfonts/tree.
In the past, we’ve had to decide between tiny monospace fonts or jagged edges. But today, modern operating systems do a great job of anti-aliasing, making monospace fonts look great at any size. It’s not 1990 anymore. Give your tired eyes a break and bump up that font size.
No, thanks. All the anti-aliased screenshots in his post look blurry and some make me outright cringe.
I concur about the blurriness. It'll be a good day indeed when everyone has a 300dpi display and we can get rid of anti-aliased text for good. Anti-aliasing looks great for headlines at large point sizes, but for bulk text, that blurry look is bad for my reading speed, and a continual distraction, as well. I hate that about Linux, how hard it is to find a free font that looks good when hammered into the pixel grid, and it's nice to see some new ones from time to time.
That's a good-looking font, but I personally need a big visual distinction, like a slash or a dot, between O's and 0's. (I do like the distinction between l's and 1's, though - lots of fonts screw that up.)
Same here. The letter-forms themselves look good, though. Maybe if the spacing between the letters were narrower? The kerning (that's what it's called, right?) seems unusually large, particularly for a fixed-width font.
Well, trisk is very legible for me at normal reading distance where e.g. proggy or profont feel too squeezed and slightly too small. But ultimately it's also a matter of taste, ofcourse.
Generally screenshots can hardly do programming fonts justice. You have to load them into your editor and try them out on familar code.
Most of the fonts showcased on that page look perfectly fine to me from the images. I only learned that I can't bear an anti-aliased font and about my various gripes with the other fixed contenders because I once went and tried all of them for at least a few hours each.
Agreed. Aside from a few major variables (fixed-width or variable-width, anti-aliased or no, weight), and ruling out fonts with obvious flaws like making 0 and O look too similar, it's largely a matter of taste.
I've found that some fonts look much better as light text on dark backgrounds, or vice-versa. I use terminus (http://shenani.gen.nz/~scott/img/terminus-sample.png), but something about it doesn't look right to me on a light background.
Indeed. I found the choice of font less critical on light backgrounds but that might be because I'm a white-on-black fanatic and can't bear a light background for long anyways - regardless of font.
But I, too, noticed the difference and I don't think it's just subjective. Black-on-white is generally easier on my eye in the short-term but for the long-term (e.g. coding sessions) I strongly prefer white-on-black because staring at a mostly white screen for extended periods of time makes me dizzy.
Yeah, I know some font rendering technology specifically draws dark-on-light-bkgnd differently from light-on-dark-bkgnd, though I can't recall where I've seen it, or the details ...
Andale Mono not only works great at small sizes, but also at bigger ones (14 & up) which ProFont does not (I have ProFontWindows which looks deformed at size 10, and annoyingly appears bolded at any bigger size than that).
I used to use Bitstream Vera Sana Mono but I switched to using Liberation Mono, it was released for free by the red hat guys. https://fedorahosted.org/liberation-fonts/
I'd recommend both, but I like Liberation Mono more.
I used Anonymous for a while, but then I switched to Consolas. I'm not sure if Anonymous is free or not. One site wants to charge you for it, and another has it for free(no, not the Pirate Bay!).
Call me ancient, but I really miss the 3278, with its distinctive 6's and 9's. I never could find its original bitmaps, much less a vector font like it.