Good Programmer Typeface

Some typefaces are good for programming (meaning: good for editing/viewing source code in an editor or IDE), some are not. A few desirable features in a programmer typeface. Please, no arguments about serifs vs sans serif or monospace vs proportional; the features here should be generally applicable.

The aforementioned characters in your browser's proportional font:

0 O 1 I l i 2 Z 8 B 5 S | ! � ( ) { } : ; . , * ^ ~ # " '' `

And in monospace:

 0 O 1 I l i 2 Z 8 B 5 S | ! � ( ) { } : ;  . , * ^ ~ # " '' `


List your favorite typefaces below; include the source. Don't just say "courier" as there is likely quite a wide variation in typefaces called "courier"; at least that I've noticed.

For what it's worth, my favorites are Andale Mono and Bitstream Vera Sans Mono-- they're nice and scalable, they clearly distinguish ambiguous characters, they're designed by major foundries, and they're available for free. Hard to beat either of them, really. --CodyBoisclair


What's the best font for differentiating braces and parens?


There was one mentioned in one of the LinuxMagazines?, August 2004. Too bad I can remember it. -- AliMoe? (04aug21)


Has anyone really had a problem with the alleged confusing character sets listed at the top of the page? When reading code, the characters are easily distinguished based on context and when typing code, the only one that I have ever encountered is typing a colon where I wanted a semicolon and that is due to keyboard layout not display fonts.

I've mixed up 1 and i numerous times before, in contexts where both characters were both legal and reasonable--producing incorrect code that nonetheless compiled without complaint. [If one has trouble mistyping 1 (One) and i (lower case I), which are on opposite sides of the keyboard(!), perhaps one would be better off not using "i" as a variable name. It is far better to prevent the entry of errors than to try to scan code to find where the errors came from.]

Also, the similarity between 1 and l are particularly annoying when you see a CeeLanguage constant like 1000l (1 thousand in a long int, not 10 thousand one in an int). A better way to write it is 1000L, but I didn't write the code...

I've mixed them up. so-called 133+ speak takes advantage of the similarities. 80085 for example, instead of BOOBS.


I've found the HVRaster programmers font and the HVEdit fonts to be far and away the best in clearly distinguishing 1,I,l and O,0 and {}(), etc. Big, bold and clear. Unfortunately shareware but demos are available from http://www.procon.com.au/Fonts.htm ===========

Proggy Programming Fonts, http://www.proggyfonts.com/, "Monospaced Bitmap Programming Fonts". Many fonts, featuring especially Proggy Clean, Proggy Square, Proggy Small, and Proggy Tiny. Available in .fon, .ttf, and .pcf

Of the old-style X fonts that happen to be installed on my Ubuntu laptop at the moment, I think the ten-pixel-tall "misc-fixed" is better than any of the alternatives I've tried. Leaves something to be desired in the 0 vs. O department, but otherwise perfect, and much more readable than adobe-courier or "clean".


Nothing really beats the Terminus (http://fractal.csie.org/~eric/wiki/Terminus_font) font for me. Although DejaVu Sans Mono comes close.


Two newer fonts that I find myself using quite frequently, in addition to the ones I mentioned above:

--CodyBoisclair


Adobe has just released Source Code Sans, an open source monospaced font for programmers http://blogs.adobe.com/typblography/2012/09/source-code-pro.html


EditText of this page (last edited November 29, 2012) or FindPage with title or text search