288 comments

[ 127 ms ] story [ 5248 ms ] thread
Probably a very un-used font for programming, but my favorite is Operator Mono (Book Italic) - https://www.typography.com/fonts/operator/styles/ -

Strange to be using an italic to code in, but I quite like it.

edit: someone has actually added ligatures to operator mono if that's your thing (https://github.com/kiliman/operator-mono-lig)

600usd is a bit steep- no disrespect to the designer.
It is $199 for 1 computer. Don't know where you see 600?
Best Value Bundle. But to be honest even $200 is too much for my taste
One of my favorites is PragmataPro [0] (with powerline glyphs) and I'm sad it's not there. I guess they can't use proprietary fonts. PragmataPro was so weird when I started using it but it has grown on me and now I have a hard time switching to a terminal that uses something else.

In any case, if you're like me and you look at the terminal screen for hours on end every single day, find some font that won't tire your eyes and is optimized for your screen. If you have to squint or double-check letters or numbers because they're unclear, increase the size or switch to a different font.

[0] https://www.fsd.it/shop/fonts/pragmatapro/

Huh. Not to sound cheap, but it really seems unnecessary to me to spend 60 Eur for a font, when I already have really good fonts like Inconsolata in my reach for free. Is font really that important, do you think? This is an honest question, please don't think I'm sarcastic.
That's an average price of a AAA game, right? And what kind of utility do you get from that?

Just did a quick check... I bought it in Sept of 2012, 2323 days ago.

$70 / (2323 day * 6 hrs/day) = $0.005/hr

Did I get my money's worth (and mind you, I paid less than that.. I'm just going by today's prices)? I think I did. It all depends on how you value things.

Not trying to make any value judgement of my own here, but I think the parent was more referring to the marginal cost/benefit of a $60 font compared to some of the free options available.
Except that most expensive AAA games don't have free counterparts...
Not all fonts have free counterparts. “Serif” and “sans serif” don’t always mean fungible.
If you don't buy fonts often 60 Eur may seem expensive but that's actually pretty cheap as far as paid fonts go.
Inconsolata doesn’t even have italics!
Yeah why not? I configured it on all my consoles and ideas. It looks good, is dense and good readable.
I second PragmataPro. I've been using it for a couple of years now. Totally worth it !!!
$60 for a font...?

Is there something wrong with Hasklig, Fira Code, or Inconsolata?

There's nothing wrong with the original IBM VGA console font, for that matter. Font perception is a very subjective thing, though.

Also, I think increase in screen resolution contributes somewhat. I find that I'm a lot pickier about fonts after getting a 4K display.

> There's nothing wrong with the original IBM VGA console font

Oh boy... Don't get me started on this. Those semi-consistent application of serifs, wide vertical traces and the overall MDA-ness of it drives me nuts. It's not like IBM didn't have anything better to choose from.

disclaimer: I make the 3270 font, which is based on the 3270 terminal font, which is the better thing I mentioned in the above paragraph.

I took a look at 3270 font, and I definitely strongly prefer IBM VGA. I don't care about semi-consistent serifs etc - I'm not a font designer. But it's very readable.

Which, again, just goes to show that this stuff is all very subjective.

It is. A lot of my strong feelings for the IBM MDA/EGA/VGA font comes from its 80's-ness and its origins. Also, at the time I first saw them (first on CGA, then on MDA) I was an active user of 3270's terminals and I wondered why would they do that if they had the choice of using something cleaner. I understand CGA dictated wide vertical stems (because NTSC) and that probably influenced the choice for MDA (it was already used in other pieces of equipment, IIRC) for consistency but...

Yes, it's a matter of personal taste.

All those ligatures for <>, <=, >=, etc. annoy me to no end. Ew.
Agreed, I don't get the ligature craze recently. They look ugly, and sometimes, they don't accurately reflect an operation most of the time, for instance when you use operator overloading.

PragmataPro does come without ligatures though, and that's what I've been using as my main font for over a year now.

Modern languages should simply support the actual characters, e.g. ≤ ≠ ≥ ← → etc.
I also second PragmataPro. I've been using it for 5+ years now. The ligatures are fully optional, and the font comes in several variants for software that doesn't allow to select features.

It's a slab serif, condensed. You have to like the style. Some people prefer the opposite (wide with ample interline spacing).

It packs quite some columns on the screen while still being perfectly readable and basically every glypth is hand-tuned for small pixel sizes. There's not much else comparable designed with that amount of care.

The closest font on a stylistic basis I've seen is Iosevka.

I’m glad that Go Mono made the cut. I’ve been using it happily for a while, despite it being an underdog font.
Awesome, am loving this one with colors on http://app.programmingfonts.org/#press-start-2p

It would be nice to have some flags to show what the license is for each one.

http://programmingfonts.org/list contains licensing information for each font, but I agree that it would be nice to see on the Test Drive page as well.
Another thing I should integrate I guess. However, just as a general note, you can safely use every single font featured on app.programmingfonts.org for yourself.
Fonts seem to be a very a personal thing. There are demonstrably better and worse fonts, but at the end of the day, I would guess the there are half as many “best” (is favourite) fonts at my workplace as there are engineers.

That said, I have to check those out you mention (never heard of any of them). Thanks.

My current personal favourite is Hasklig.

I quite like IBM Plex Mono as a programming font... https://github.com/IBM/plex would be nice if the page has a way of making suggestions of fonts to add.
Agree. It does seem to be in the repo though. You could submit a pull request for additions I suppose.
I love Plex Mono also. It is on this site under Plex Mono although the info & download link is wrong.
I like opening multiple tabs with different fonts and switching back and forth to make the differences more obvious.

I've been experimenting with a variety of fonts in Sublime Text 3 on Linux, and I keep coming back to the default, which is apparently called emilbuS Mono, and looks like Bitstream Vera Sans Mono.

It looks like these are all monospaced fonts.

I realize that most programmers use monospaced fonts, but I personally find proportional fonts to be much more readable and pleasing to my eye. I would be really interested in a similar font comparison that included proportional fonts that are suitable for programming.

Right now my favorite is Trebuchet MS. This renders beautifully on the high-DPI displays I use, and it has easily-distinguished glyphs for the common mistakables like Il|. Its tilde is not very good though, so I used a font editor to swap in a better one.

But I'm always interested to hear about other options!

When I do have to use a monospaced font (e.g. in a terminal window), Liberation Mono is my favorite. Definitely worth a look if you like monospaced fonts.

Verdana used to be my go to proportional font when I was doing Java. Helped with long variable names and long horizontal lines. My buddies thought I was nuts, but I found it very legible.

These days my eyes are dimming, so I dislike skinny fonts. Now I use DejaVu Sans Mono in _bold_ exclusively. Every now and then when HN does a programming font post, I try out different ones, but I always end up going back to DejaVu Sans Mono Bold.

Like you, I'm not as young as I used to be. So I'm with you on the skinny fonts! One of my biggest pet peeves is web designers who think font-weight: 300; is a good idea.

You might take a look at Trebuchet MS. One thing I like about it is that the strokes are nice and fat. At least on my high-DPI displays; haven't checked on a low or medium DPI display.

+1 for Verdana. Been using it for 3 years now. Couldn't be happier.
For those who like Verdana, check this out.

https://www.microsoft.com/en-us/p/verdana-pro/9n8d67vhhdc2

Coincidentally, I wonder if the license allows it to be downloaded and installed on other OSes, like the old "Microsoft core fonts" package that included Verdana.

>Coincidentally, I wonder if the license allows it to be downloaded and installed on other OSes, like the old "Microsoft core fonts" package that included Verdana.

It doesn't look like it.

The Microsoft core fonts EULA (https://web.archive.org/web/20091208063245/http://www.micros...) says things like:

> You may install and use an unlimited number of copies of the SOFTWARE PRODUCT.

> You may reproduce and distribute an unlimited number of copies of the SOFTWARE PRODUCT; provided that [they're verbatim, include the EULA, aren't distributed for profit]

> You may not rename, edit or create any derivative works from the SOFTWARE PRODUCT, other than subsetting when embedding them in documents.

> You may permanently transfer all of your rights under this EULA, provided the recipient agrees to the terms of this EULA.

So you can distribute and install them. You have to take some care, but you don't need to involve Microsoft, and you're not bound to the systems they were originally intended for.

The Verdana Pro license (https://www.microsoft.com/en-us/servicesagreement/#STANDARDA...) says things like:

> You may install and use the application on Windows devices or Xbox consoles [...]

> [You may not:] Work around any technical limitations in the application.

So it's very limited.

Man, Verdana gives me flashbacks of late-'90s messing with html. If it hits the typical 20-years fashion rota and gets cool again, I'll feel really old. It's the flannel shirt of fonts.
I'm curious to know how you started using proportional fonts for coding. All of the tooling for writing code defaults to monospace, so what started you coding in a different style?
For me it was efficiency of reading. It is proven that proportional, serif fonts read significantly faster (17%) [1] or [2] (6.1%). Also, in my opinion, scanning is much faster.

This makes sense: our eye uses the top and bottom of words to ‘key’ the word. Use proportional and you add information to this system.

[1] https://blog.codinghorror.com/comparing-font-legibility/

[2] https://journals.sagepub.com/doi/pdf/10.1177/001872088302500...

(edit: add references to research)

Thank you for your curiosity! My other comment may answer the "how I started" question:

https://news.ycombinator.com/item?id=18958335

But one thing I'm wondering about:

> All of the tooling for writing code defaults to monospace...

Do you have an example of such tooling? One that I'm familiar with is Google's coding standards, which are obsessed with lining things up in ways that only work in monospaced fonts. Is that the kind of thing you're thinking of, or something else? Thanks!

One of the early proponents of using proportional fonts for code was Bjarne Stroustroup - his "The C++ Programming Language" books all do that, and he briefly explains it in the intro as being more readable, and urges the readers to give it a go. I wasn't convinced, personally, but the idea was already around then.
The Smalltalk system also used proportional fonts, and predates that book by many years.
The first edition of the C++ book was in 1985, so that is roughly the same timeframe as Smalltalk-80 getting popular.
Using a proportional font is also common (recommended) when programming in Bertrand Meyer's Eiffel or Niklaus Wirth's Oberon.
Optimize all the things. Noto Sans is my current favorite.
IDEs defaulting to proportional fonts are uncommon but not unheard of. I think BlitzMax or BlitzPlus uses proportional fonts by default.

Coding using proportional fonts is easy to get used to, and it has its proponents. The key is: indent, don't align, and use TABs.

Curious. How do you line things up?
Not OP, but I use Verdana in Java.

Most things line up perfectly fine i IntelliJ.

I have had someone on my team with an itch for lining up variable assignment. That was the one thing that looked off.

  int abc              = 3
  int defg             = 4
  int bigTestVaribale  = 6
(Another proportional font user) These cause problems in diffs as well. Change bigTestVarible to bigTestVAriable and all three lines show as changed.

Nevertheless, for teams that insist, the auto code formatter makes it look ‘nice’ for them.

Personally, I think vertical alignment apart from indentation is a mistake for more than these reasons. It implies a structure where there is none.

> Curious. How do you line things up?

I don't! :-)

I spent many years lining things up. I would write code like this:

  foobar(firstArg,
         secondArg,
         thirdArg);
(For the sake of discussion, assume that those arguments were too long to just put it all on one line, so you would naturally want to use multiple lines.)

Then when I realized that 'foobar' wasn't such a good name, I had to re-align all the code:

  doTheRealThing(firstArg,
                 secondArg,
                 thirdArg);
At some point, maybe 20 years ago, I got really tired of this.

So I thought, "what if I just use indentation instead of trying to line things up in columns?" Which led to this:

  foobar(
      firstArg,
      secondArg,
      thirdArg
  );
And when I renamed the function, I didn't have to move everything around any more:

  doTheRealThing(
      firstArg,
      secondArg,
      thirdArg
  );
Instead of every line changing, only one line changed. [1]

After I adopted this style, I noticed that the code editor I was using at the time supported proportional fonts, so I got curious and tried one - I think it was Verdana.

And sure enough, the code was just as readable as it was before.

If you don't line things up in columns but instead just use indentation, then a proportional font works just as well as monospaced.

[1] Some will say "just ignore whitespace in your VCS diffs, and this won't be a problem." But I want to know about whitespace changes, just like I want to know about any other change.

Not a fan of proportional fonts for coding, but the point about refactoring affecting indentation is well worth reiterating. If you have ever dug through source control history, you know that there's value in not touching the lines unnecessarily. Unfortunately, most common coding styles that advocate lining things up do this wrong, such that a single rename can affect several times as many lines that are completely unrelated.
This does force you into a style where lists of indented things require a new line - not necessarily bad, just an observable side effect, and can cause problems if you share a codebase that maintains a different style.
Very true, if you are working on an existing codebase, you ought to follow whatever style it uses.

Interestingly, one of the reasons sometimes cited for using alignment is that it reduces the number of lines of code needed for a statement or expression. But as often as not, I've seen that backfire because the code gets pushed farther and farther to the right, eventually resulting in more lines of text instead of fewer.

I posted an example from the Rust/Servo code in another comment:

https://news.ycombinator.com/item?id=18962177

This code in their old column-aligned style is actually one line taller than the indentation style they recently switched to.

> I had to re-align all the code:

Cannot you just have your editor do that for you?

It was about 25 years ago that I stopped using alignment, and the editors I was using didn't have that kind of auto-formatting.

But there was more to it: I realized that I didn't like column alignment any more. It didn't make the code any more readable, and in many cases it made it less readable.

A more recent example of a group that abandoned alignment is the Rust and Servo teams at Mozilla. Their code style used to look like this:

    let mut rewrites = try_opt!(subexpr_list.iter()
                                            .rev()
                                            .map(|e| {
                                                rewrite_chain_expr(e,
                                                                   total_span,
                                                                   context,
                                                                   max_width,
                                                                   indent)
                                            })
                                            .collect::<Option<Vec<_>>>());

A year or so ago they changed to a purely indentation-based style:

    let mut rewrites = try_opt!(
        subexpr_list
            .iter()
            .rev()
            .map( |e| {
                rewrite_chain_expr( e, total_span, context, max_width, indent )
            })
            .collect::<Option<Vec<_>>>()
    );
They found this style to have advantages over alignment, perhaps for some of the same reasons that I prefer it.
I would suggest that using elastic tabstops¹ is the only reasonable system for doing that. Sadly, the industry seems to be stuck in a local maxima where the simultaneous jump to both using proportional fonts (which would be better) and using elastic tabstops for alignment (which would be easier), constitutes too large of a distance to bridge in a single leap, and either one by itself isn’t worth the effort.

Of course, if you already have made one of these two jumps, it should be a no-brainer to make the other one as well.

1. http://nickgravgaard.com/elastic-tabstops/

I think it's even worse: the big problem with elastic tabstops is that you can't just adopt them on your own. You are requiring everyone who reads your code to use them if they want to see it formatted properly.

Proportional fonts are different. Anyone can use them without interfering with readability regardless of the fonts and editors that others use. If you look at my code, you will never know whether I wrote it in a proportional font or a monospaced font.

> You are requiring everyone who reads your code to use [elastic tabstops] if they want to see it formatted properly.

It is not quite as bad as you make it sound.

While editors which haven't yet implemented the elastic tabstops mechanism may not align some text properly in files where tabs were used with elastic tabstops, the problem isn't that bad. All leading tabs (indentation) will be okay, and the chances of text not aligning correctly diminishes as the width between tabstops increases.

http://nickgravgaard.com/elastic-tabstops/

Verdana and Optima are my go to fonts. Have used proportional fonts since 2010, with close to no problems, save the occasional newbie who aligns assignments or types.
I also use proportional fonts. No problem with coworkers in either JavaScript, Ruby, Python, Elixir. I'm using DejaVu Sans Book on Ubuntu in Emacs.

People are always puzzled when they learn I'm not using a monospaced font, think it's impossible but agree that it's much more readable. Then keep using their monospaced fonts.

Actually, nobody likes to read books or blog posts printed with monospaced fonts, right? There is no reason to do it with code.

Alignment like this

   short        = 1
   much_longer  = 2
is lost but it's not really important. I think it's also against Python's style guide and for sure it doesn't survive the Elixir formatter (I checked this now.)
My favourite for a few years now is a commercial font, Triplicate. It’s a true serif monospace font; every other monospace font I’ve encountered that is labelled “serif” is actually a slab serif. It has a proper italic face as well, which is a less rare, but it’s a functional italic face rather than ornamental.

It comes with some interesting variants, most notably Poly which is not fully monospaced, adjusting the widths of characters like i to be a little narrower, and W to be a little wider. I like to use that for code display.

https://practicaltypography.com/triplicate.html

It looks quite similar to golang font: https://blog.golang.org/go-fonts

It has serifs and true italics. Might be an interesting free alternative.

Go Mono has the slab-style serifs that chrismorgan was referring to.
Ah yes, I had forgotten about that one—it’s definitely the closest font I’ve found to Triplicate, and its serif style is partially slab and partially true serif (to a similar degree to Triplicate, really).
Oh yeah, I forgot to address the other point: Go Mono doesn’t really have true italics. One or two of its letter forms are adjusted (double decker a to single decker a), but apart from that it’s just sloped roman. Look at the Triplicate specimens to see the difference, if you want. The whole shape of the character changes.
(comment deleted)
$99 for a font... Seems like the artisinal font industry gets its business model from free-to-play, i.e. whale-hunting.
Do yourself a favor and try to design a font from scratch using FontForge (free tool). Let us know what you learn from the experience, how long it took to perfect it and what was the end result.
Still quite a bit easier than creating a F2P game to those same standards.
You can't sell a product with an F2P game. Commercial fonts are used in products. Thus the higher prices.
(comment deleted)
That website is possibly the most beautiful and ergonomic website I've ever used.
You and I have very different definitions of beautiful and ergonomic - I don't like their table formatted pricing and I don't like that I have to scroll down to get to navigation.
Okay that one is gorgeous. It has this appearance that somehow reminds me of code examples in my old uni computer science textbooks. I'm not sure which particular ones, it just has that feel.

Even though it's a reasonable price for a commercial font, I can't really justify spending $99 on a coding font just for writing code. I might get tired of it after a few weeks. But if I were to write a programming book, I just might consider it for print.

it'd be cool if I could just use the down arrow to move down the list of fonts instead of the mouse
I really enjoy the Nerd Font pack, as it adds all kinds of symbols that are great for augmenting text editors like Vim:

https://github.com/ryanoasis/nerd-fonts

Then your editor can look like this:

https://raw.githubusercontent.com/wiki/ryanoasis/vim-devicon...

It's not all just for looks. For example you get icons for file types so it's also useful. My favorite is the Nerd Font version of Droid Sans Mono.

Also a huge fan of the nerd font project!
I'm surprised that the list doesn't mention consolas. It ships default with visual studio and it's so good that I use it on arch Linux as my terminal font and with intellij. It was designed with programming in mind and has some nifty characteristics like a slash through zero. This list also misses out on 'operator mono' which is a well thought out font for programming.
Consolas is a proprietary font, and this list includes only free and/or open source fonts. It does include the similar Inconsolata.
Though Inconsolata was inspired by Consolas, I wouldn't consider it all that similar. For example, the digits in Inconsolata are much closer to the Franklin Gothic model. Also, Consolas has excellent hinting for Windows, while Inconsolata was originally designed with no hinting at all. They're not drop-in replacements.
Seconded, Inconsolata at small sizes looks awful on Windows.

I'm surprised that so many of these 'programming' fonts do not have dotted or slashed zeros. For a programming font, that's a must-have requirement for me. I edited Droid Sans Mono, so that its zero had a slash, and now I use it as my go-to font for all my IDEs and terminals. However after browsing this lot, I'm tempted to give Go Font a try.

For those unaware, raphlinus actually created Inconsolata.
I’m a fan of Inconsolata, and it’s my daily driver in terminals and editor. Thank you.
Although Consolas is beautiful on Windows (and is one of my favourite monospace fonts), Inconsolata for me looks very good on Windows 10 (as I remember it didn't quite look as good on Windows 7). In fact, because the font is slightly thicker at lower font sizes, I find it easier to see and use -- so it's currently my default font in PuTTY and VS Code, for instance.

Thank you for your work on Inconsolata.

(comment deleted)
Consolas ships with Windows itself since Win7.
That still doesn't make it free & legal to distribute as a web font so that it displays to people who don't run Windows (or otherwise have Consolas installed), so it would be more than legally dubious to include it in this site without express permission from MS (or who-ever they licensed the work from, if it wasn't created internally).
Hi, I'm the author of programmingfonts.org. Operator Mono certainly is pretty. I always loved consolas on Windows (honestly, it's the only thing that rendered properly on Win7). That said, I can only include fonts that are freely available, or where the owner of the font allows me to (in the case of Input Mono). I have tried for a few others, but haven't been so lucky there. So, no proprietary or otherwise commercial fonts. I do try to feature them on the blog though.
You can always use a static .svg or .png in place.
That's what I feature on the blog, but you'll notice the right-hand side of app.programmingfonts.org is interactive. That's kinda hard to do with static images ;)
Would it violate the ToS to create a simple sprite sheet out of a proprietary fixed-width font?
I don't think the author needs to go to such lengths just to support some proprietary fonts, specially considering that there are great free and open options.
Sure, but that's not really an answer to the question!
You seem quite interested in the answer, so surely you can spend the required time reading the ToS of the various fonts yourself.

Please come back and let us know what you find!

It probably would. Redistributing the font in another form is usually a violation. It’s also severely impractical ;)
Thanks very much for this, klageveen! I chose my default mono font the hard way and wish I'd known about your site back then.

Even so, comparing each font on your site affirmed my choice (Hack ftw). I'll be back, though, and will check out your blog in the mean time.

After going throw the list and trying out many of them in my editor, I also picked Hack. What a beautiful font, even in surprisingly small sizes.
It really is beautiful. It's a variant of Deja Vu, as I recall, and its hinting is perfect on my display. The feature I really needed, though, was good Unicode coverage, especially for math and logic symbols, and Hack has that spades.
Can't you have a "system fonts" section that uses the fonts already installed, so people can compare if they are running the respective OS?
Well, there is no way to get a list of installed fonts via the browser, but I have thought about adding an input so you can try installed fonts. I just don't have enough time to tackle all the ideas I have!
Have you looked at the licensing of the Lucida family of fonts (particularly Sans Typewriter and Console)? From a quick check it looks like just the old bitmap fonts are available for redistribution, and all the scalable varieties are proprietary, but I'm also seeing some contradictory information, so I'm not 100% certain on that. If allowed it would be a great addition to the site.
I have looked at it but have not found a suitable variant. All I find are commercial versions and “The fonts are not redistributable”. Honestly, I doubt bitmap versions are useful for most people.
It would be great if I can filter those fonts that support ligatures (Like Fira Code).
Some that have ligatures state it after the year they cameo out. For fonts that don't have ligatures on their own you could use something like Ligaturizer. This adds ligatures based on the Fira Code font to any other font. These ligatures are taken verbatim from Fira Code though, so some will not match perfectly with their non-ligature counterpart.
Thanks for mentioning it! I just compared Consolas with the default Menlo along with Hack, and I do like the roundedness in Consolas.
> Operator Mono SSM

A steal at $199!

Yeah, I was redesigning my website and decided to use system fonts. When I added the system don't for monospacw text, I was amazed at how nice Consolas came out.
It is a Windows default font. Since you need admin rights to install fonts in Windows, it may be the only good programming font a corporate user have.
I agree on Consolas. I'm a Mac user and it has replaced Inconsolata which I used for years.
I'd like to see an elimination tournament of these so you can two fonts head-to-head and vote for your preferred until you discover you favorite.

Identifont is a similar system. It uses a twenty-questions style format to identify an unknown font.

http://www.identifont.com/

That's a really cool idea. You know, the website is on GitHub, if anyone wants to contribute a PR I'm all ears ;)
We all know 3270 will win ;-)
That would be neat, browsing through several dozen fonts to find the right pick is a bit overwhelming, although one can argue it's a self-imposed burden.
I like the 'M+' fonts for C++ code. Nice and compact to allow more characters to fit comfortably on a line.
I’ll put in a mention for Dank Mono. I’ve been using it for a year and love it (https://dank.sh). It’s like Operator Mono but much cheaper.
I own both and actually prefer Dank Mono. The lowercase f is just so nice.
This is what I've been using the last year as well. At first I felt silly paying for a font but I really like it - having cursive fonts in VsCode does seem to help with my comprehension and breaks up the monotony a bit.
OCR-A font was made to be recognizable by 60s OCR tech. https://en.wikipedia.org/wiki/OCR-A
It's machine first, so human readability falls. Though there's the benefit that you will newer wonder what the letter is at all as they are so distinct.
I've tried dozens.

Monaco or Source Code Pro

You also have to try them in your terminal or editor, because on the web isn't the same experience.

Browsers tend to use their own inbuilt font rendering code, which can be different from the OS. I know for a fact that some of the fonts shown at app.programmingfonts.org do not render that well inside apps on Windows 10.
I think a lot of these fonts deserve a little blurb about their history and purpose. For example Liberation Mono (version 2+) and Cousine are fundamentally the same font available under the same SIL Open Font License https://en.wikipedia.org/wiki/Liberation_fonts#Distribution

Personally I use and recommend Liberation Mono / Cousine at 9pt / 12px. I've been using this font for years so it's just ended up what I'm the most comfortable with for both reading and writing.

That's a good point. I usually have a little blurb like that on the blog, but I have been trying to integrate more info about each font into the test drive thing. There are lot's of "family relations" like that between fonts.
I pretty much standardized on Fira Code over the past few years, although the ligatures seem to delay rendering a bit.

But overall I like that lowercase letters have nice, readable descenders and hints on HIDPI displays, and that my editor now looks exactly the same on Windows and Mac.

This is interesting, but I would like a more 'guided' tour, maybe backed up by some usage data, as well as some statistics about readability and so on.
Now that is an interesting perspective!

It's hard for me to imagine that I would choose a font based on usage data and statistics: "25% more coders use Inconsolata than Verdana, and they suffer 3% less eyestrain as a result."

How would you even measure such a thing? A font that works well on a low-DPI display may not be the same one that looks great on a high-DPI display. And one person's eyes are not my eyes.

I look at a font, try using it in my work, and either I like or I don't like it. Even if I do like it, I will probably find some flaws in it and fix them in a font editor. Or maybe I don't and just live with it.

I always enjoy comparing notes with people about what fonts we like to use. But this seems like personal preference, not science.

I've been using DejaVu Sans Mono for quite some time. It's a nice font. It used to be the default monospace font in KDE, until they switched to Noto Mono. Autohinting setting for fontconfig makes it look better for me:

    <!-- Making DejaVu Sans Mono more slim -->
    <match target="font">
      <test name="family">
        <string>DejaVu Sans Mono</string>
      </test>
      <edit name="autohint" mode="assign">
        <bool>true</bool>
      </edit>
    </match>
I'm in the same boat, every time one of these threads pop up I try a few different fonts recommended here but I always end up going back to DejaVu. It think it looks pretty good, it has good Unicode coverage, it's supported out of the box on most distros...

It's weird because I can be pretty snobbish and opinionated with a lot of programming-related stuff (I use a very expensive keyboard, a large 4k screen, a heavily customized editor and window manager etc...) but when it comes to fonts I really have a hard time finding a real improvement with some of the very expensive fonts people are recommending in this thread compared to good old DevaVu.

I would be very interested to read an article that would explain in details what makes certain fonts better or worse than others, especially for programming.

I switched from using devavu for years finally to iosevka
Had a look at iosevka - it definitely seems nicer than many of the others, but it still feels too vertical when compared to DejaVu in my opinion. Is there something that sold you on it?
Well, it certainly is more vertical. The increased x-height allows it to be readable at small sizes (and fit more horizontally) which looks great in the terminal and editor, but maybe a bit odd on the test page.
Well, a week later and I think I'm a convert. I didn't like the look at first, but after using it in my IDE and actually typing with it, it's quite nice.

Thanks.

I've also switched to iosevka after many years of dejavu sans mono. I really like the brackets of iosevka, and its italics. I also appreciate the customisability of it, and the fact that the font itself is in some ways built rather like Computer Modern via METAFONT (and that it uses a Lisp-like language to do so).
Yeah, I've gone through several of these programming fonts but something feels nicer about DejaVu Sans Mono, perhaps it's the visual smoothness compared to say Anonymous Pro - I wind up installing it on Windows machines even.
Same here. I always check out some new fonts when a conversation like this appears on HN, but in the end I never found real improvements. I did, however, start testing Ubuntu Mono the last time I compared fonts. Ubuntu Mono is pleasant to look at, like DejaVu, but it takes much less horizontal space, which helps a lot with dual side-to-side text editors.
Personally, I also happen to really like the weird round corner shapes of the lowercase "u", "n", "p", "q", etc in Ubuntu Mono. It's both friendly and interesting but not out of place. But I know opinions can vary greatly.

Conversely I like almost everything about Fira Code, except the weird serif-ed lowercase "r" looks so out of place to me it kind of spoils the entire thing.

But then again I think if I tried Fira for a week or two, I'd stop noticing and no longer care. It's so very subjective.