Programmer fonts

I was using Consolas at fairly small sizes on VSCode. Otherwise, I use Latin Modern Mono for viewing (the default monospaced font in for LaTeX documents) (but its pretty difficult to find it as a font and it doesn't look quite right).

I saw a message on a Discord for one of my CS classes about Fira Code and its ligatures. Unfortunately Consolas doesn't have ligatures. I decided to waste some time looking at fonts. I ended up choosing Fira Code for its ligatures for programming, and Hack for viewing.

I tried out a few fonts:

I tested these fonts in Notepad. I like the look of Consolas (probably because I'm used to it), and Hack and Fira Code are fairly close. They're also even better at small sizes than Consolas, which becomes a little blurry.

JetBrains Mono was made tall for readability, but I find it ugly, and Thomas Huot-Marchand's research suggests that a width is more important to readablity. When I'm programming, I like small sizes.

Dina is supposed to be good for small sizes, but it's not really any better than Hack. I guess I could also use FairFax HD, which is superficially similar, but less pretty. However, FairFax HD seems slightly less readable and slightly larger. The main reason to use FairFax would be conlang support.

The cap height is usually shorter than the ascender in FairFax HD, which I dislike. This problem is also present in Fira Code, where, as part of "fine-tuning of letter pairs", the heights of Fl and Tl are equated. Fortunately, the developer is going to fix this (link to GitHub issue).

I also found a GitHub repo for "ligaturized Consolas", though GitHub issue there points out that Consolas is proprietary. I didn't install it, but since Consolas also has the issue of being blurry at small sizes (in Notepad at least), and has a confusing ell versus 1 (one), I might as well not use it.

Go Mono is pretty, but serifs are not very practical IMO. Ubuntu Mono might be nice, but I didn't try it.

On the topic of ligatures themselves, I want to complain about this article (HackerNews link) on the Practical Typography blog and say that programming ligature mistakes are uncommon, and when they do happen, it's obvious what it's supposed to be. I haven't used Fira Code for long enough to say, but based on my experience using Typora and Obsidian, which are markdown editors able to render markdown as you type it, it's probably a little disorienting when the text changes a lot as you type. So perhaps I might find the slight whitespace adjustments (e.g. of :: and << and := in Fira Code) better than the complete symbol changes (like ===, >=, <=).