207 comments

[ 3.1 ms ] story [ 257 ms ] thread
TFA looks for the perfect monospaced font in the Mac OS terminal, long article
Wow screenshots of text rendered on a notoriously bad text renderer, then downscaled and posted in a blog. A text-based description of the fonts might be worse, but only barely.

Yeah, man, so much effort and every screenshot looks identical in context in the blog post.

Iosevka and Iosevka-Comfy for the win.

Click on the images to embiggen.
You probably meant 'enlarge'. "Embiggen" was made up by the simpsons as a joke.
It's a perfectly cromulent word.
In the same episode as that other word - amazing
Me fail English? That's unpossible!
Anyone can embiggen me any time they want.
You understood the meaning well enough, which is the purpose of a word. Perhaps you need to embiggen your perspective.
I tried Iosevka but it felt too much like the bitmap ROM fonts on old computers and terminals. All those fonts were a little too pixel-dense.
That may be why it -- and Envy Code R -- are the only "modern" monospace fonts I can stand for very long. Everything else just looks like IBM Letter Gothic, or some other typewriter vendor's substitute for Letter Gothic. Hence why I use bitmap or bitmap-like fonts for terminals.
I thought it would be silly or I would hate it, but the comic sans like nature of Fantasque Sans Mono really surprised me and worked well for coding/IDE use (especially in Python): https://github.com/belluzj/fantasque-sans
Looks similar to Monaco (Mac OS’s default for monospace). The slight irregularities make it more comfortable to read vs more geometrical shapes.
Yes, my favorite font for text editing. Not too unprofessional like comics-san but not dull/sterile like most mono fonts. Not sure why, but it has sort of an artistic personality, if I could describe it. Only thing I dislike is the "k" so I use the non-loop version.
This and Comic Code are my favorites, and Fantasque Sans Mono is free (unlike Comic Code).
It's not mentioned in TFA, but I really love "Monofur".

DAE know of a more complete lookalike with more glyphs?

That's a nice font. Thanks for the link. And thankfully, I hate glyphs.
Monofur has been my goto text font for a long time.
I like ligatures, little quirks (relative to ordinary fonts) make output more interesting.

I wanted to get a portable monitor with a high hz rate for VR applications, and separately text test output. The best I could find, without spending too much on something that'll be better in the near future, is 16" 2560×1600. So not very high PPD. Anyone have any suggestions for a font that won't look grainy? I use it in portrait.

The last thing I want is for my text to look interesting. I want it to be boring and instantly recognizable. I want text editors showing it to work predictably. Two characters should show as two glyphs with the background showing through the middle. All glyphs should be the same width. Ligatures break these universal consistencies and stick out, screaming for attention. I want my text to be absolutely silent.
I find ligatures makes certain symbols instantly recognizable. Two characters, such as "=>" or "<-" look like math symbols, but then it takes one more step to realize no it's an arrow.
I recently started using a font that has ligatures - they don't break alignment of mono-spaced text, for example a two-character ligature takes up the space of two characters. I am not thrown by != showing up as an equals sign with a slash through it, because I can remember that this is in fact "!=". It's easier to read than the "raw" version. All in all I'm sold.
I can remember that the inequality symbol means != but I'd prefer the lower cognitive load of not having to recall anything at all.

I like that Typing "!=" results in "!=" being printed to the screen. I like that pressing backspace only affects the single preceding character/glyph instead of converting the ligature back into its constituent parts.

It's a consistency thing. I'm never reading math textbooks written with latex and all the fancy ligatures and symbols. I spend my entire day reading and writing code, so consistency there is paramount.

I prefer the lower cognitive load of not having to recall that != means ≠.
Weird; I see the former symbol all day every day and have no trouble recalling. I see the second symbol almost never, maybe once a month, definitely not as easy to recall.
That just goes to show how C has perverted mathematical notation.
This is a nice overview. I don't share the author's intense distaste for serifs. In my search I ended up on Cascadia Code, which wasn't part of this comparison: https://github.com/microsoft/cascadia-code
Yes, this one is in the same top tier along with Fira, Hack, JetBrains, and Inconsolata.
Yes, I also settled in Cascadia Code around a year ago. Really nice!
And now for the comparison on 96(-ish) PPI screens…! I find that many more recent fonts simply do not look good on those. Some are even outright terrible, glitching all over the place with subpixel rendering.
If you are willing to entertain non free options: MonoLisa is a pretty good font and you can customize which ligatures you are willing to entertain. (I’m basically at zero)
I tried a couple Mono Fonts and found them all kinda samey.

I ended up seeing a post here for Berkeley Mono, a paid font, and I noticed in particular that it was incredibly readable compared to other mono fonts I was using, so much so that I've zoomed out one level on VS Code and iTerm and have similar readability as before.

It was the first font I paid for, and I was quite happy with it.

https://berkeleygraphics.com/typefaces/berkeley-mono/

I too have been following the Berkeley Mono font, and I think their website and promo materials are all very well designed. However, I tried the trial version of the font and found the kerning odd and unnatural seeming.
(comment deleted)
Concept of kerning doesn't make sense in monospaced fonts. You can't adjust side bearings and create kerning pairs.
I can relate to GP's feeling here. When I first installed Berkeley Mono and looked at some code in it, I had the same reaction: the spacing between characters looked inconsistent in some words. I think that some other monospace fonts do a better job of making the narrow characters ("i", "l", etc.) match the width of wider characters.

That said, I've been using it for a couple weeks now, and have stopped noticing that.

My main issue with it now is that some italic glyphs get cut off in my terminal, but I'm not sure if that's the font's fault or my terminal's fault.

Berkeley Mono has probably the widest "i" and "l" of any mono font. It appears to be wider than SF Mono. If anything, they are too wide.
You're correct. I had assumed it was the "i" and "l" that were giving the "something is off about this text" feeling, but I just opened up some sample text to try to figure out exactly which characters are doing it and can see that the "i" and "l" actually look fine to me.

It seems like the "r" is actually the main culprit. The spacing before and after "r" tends to feel too big to my eye.

I used the wrong term but you nailed it. The 'r' is definitely a problem for me too.

EDIT: Ok, I feel like this demonstrates the issue pretty well. The 'r' is a problem for sure, but notice how off balance the rest of the word looks? Evidently, there is no kerning (as I've learned) with monospace fonts, but then why does the spacing between these letters appear to variable to my eyes? The spacing between the 'om' looks weird too. This is just a screen shot from Font Book.

https://i.ibb.co/9bTNCYt/Y4q-VIvqa20230213.png

This is actually a problem with any font that has an 'r' without a base.

For example, Andale Mono: https://i.imgur.com/PeLZrj4.png

Fira Code and others do an ugly thing with 'r' that is a huge point of contention. There is a thread on Github that describes the frustration well: https://github.com/tonsky/FiraCode/issues/601

This is a fundamental trade off between aesthetics of the char itself vs. the aesthetics of spacing between chars. It comes down to personal preference and fits the "boring" description from Berkeley Mono marketing page.

Perhaps there should be an option for two types of 'r', one with a base and one without. That'd be great!

> This is actually a problem with any font that has an 'r' without a base. > > For example, Andale Mono: https://i.imgur.com/PeLZrj4.png

But in Berkeley Mono it'd be easily fixable: when the lowercase r's upperbar is a straight horizontal line (as it is in Berkeley but not in Andale Mono), you can simply make that horizontal bar a little tiny bit wider, which shall give the illusion things are more balanced.

I did create my own font with a 'r' like that (but I cannot share it as I stole inspiration from commercial fonts).

If you look at the word "proc" and "return" here [1], it looks great and extremely well balanced. There is also a problem of choosing specific examples like the word "random" which has a bad pairing with "ra". You're right though, it can be improved.

[1] https://cdn.berkeleygraphics.com/static/public-affairs/bulle...

Even if monospace doesn't have "kerning" can't they create a "ligature" for "ra" instead? Doesn't have to be a weird hybrid symbol, just tweak the spacing so it looks right.
You make it sound like I engineered this. "Random" was the first word that came to my mind because it was random. If you install the trial font, you'll notice this off balance look in a lot of the text you type, not just the example word I chose.
I felt weird buying Berkeley but I’m very happy with it as well. I knew I liked it when I got the trial and yet I felt this aversion to paying for a font for several weeks. Then it dawned on me: I was depriving myself of enjoying someone’s hard work because I didn’t want to spend a fairly small amount of money for a thing I’d use for my work every day. Sort of an everyone loses situation. I can be bizarrely cheap, and it’s kind of embarrassing when I break it down. I lose time and money to my irrational cheapness.

Berkeley’s sharpness and legibility has been unmatched for me and I think that’s what draws me to it so much. I know others will say it’s not sharp or legible, and it’s a totally personal thing. We get good at reading on different screens with different characters, and we’re gradually trained to see in different ways. For me, Berkeley absolutely nails it.

Unfortunately, it does not have Greek characters.
i've tried a ton of fonts but always end up going back to bitstream vera sans mono.
I keep glancing at Berkeley Mono's site since it popped up on HN recently when they added ligatures. As a Fira Code user for some time now the ligatures are a "must have" for me, so that helps a lot. Something about the overtly 70s Mainframe aesthetic doesn't quite hit for me (though very well crafted and almost), though I have to say what little is currently teased for their next font Houston Mono has me intrigued enough to sign up for their mailing list.
For what it's worth, you can add ligatures to any font you want. They just won't be the same exact style of the font.
Why? This whole article and almost are all the comments are on how many existing choices there are and "designer supports ligatures" is an easy enough filter to find a good, strong subset. I don't need it to be anything more than a filter of current options.
Because the whole ligatures for programming thing is relatively new. It was rarely the case that designers built them into the font.
Berkeley Mono is the best mono font out right now.
Why would he miss the best of all? DejaVu Sans Mono. This font is the only thing I come back to decade after decade. There's too much good to say about it.
I’ve stuck with Victor Mono for a while now, since I like having comments in cursive. I know that’s not for everyone. I just seem to parse prose a little easier with joined up letters.

https://rubjo.github.io/victor-mono/

I’m still enamored with Monaco after all this time. It’s fun and legible. It has bitmap and vector variants. Whenever I search for a new monospaced font, I always think: but it isn’t Monaco!
You can pry Monaco out of my cold, dead hands. It reminds me of the old "rock" or "t" font on Linux, which someone helped me re-find here: https://unix.stackexchange.com/questions/226593/where-can-i-....)

Unfortunately, I've tried using a version of Monaco on Windows, and whatever version I downloaded just doesn't... quite... render just right. So I stick with Droid Sans Mono on that _other_ OS.

In the Emacs screenshots, I am curious what "Combined ⤿" means.
i've been using dejavu sans mono for... so long that whenever i see other fonts i get weird out.

i totally get people that don't like it, but fonts are so personal that i don't really care.

Everyone plugging their favorite font, but here's an easy way to compare them side-by-side to help you choose:

https://www.codingfont.com

(featured on HN: https://news.ycombinator.com/item?id=29010443)

Also this site to view a wide collection of programming fonts: https://www.programmingfonts.org

Also, because people tend to be nitpicky about particular font features, such as:

- g with a curve or loop at the bottom?

- 0s barred, dotted or gasp nothing?

- $ with full-length bar or just top/bottom pins?

- etc

There are some fonts families out there that let you select just the right set for you, for example Input: https://input.djr.com/info/

I've been using the variable width Input for a while now and I've been really enjoying it. Main downside is poor APL coverage.
i love the tournament idea!

i downloaded my winner, installed it, changed my editor... and immediately went back to Monaco :) there's a lot of cognitive momentum to overcome in switching fonts.

The problem with codingfont.com is that it overrides the line height, so you won't see what the line height will actually look like in your editor, which is something that I care about.
If your editor doesn't allow you to override the font's default line height (to whatever you like), there's a nice little tool you can use to do this to the font file itself: https://github.com/source-foundry/font-line

This is also useful for mixing and matching fonts. Nicolas Rougier uses this in NANO Emacs to hack the Victor Mono italic to have the same line height as Roboto Mono.

I think the point is that their editor does, but the website above for previewing doesn't. If you have to download and and edit the font file manually to get the website to preview it, you might as well just preview it in the editor instead.
Playing the font tournament is fun, especially with the font names turned off. I ended up with Fira Code (my current preference) vs Fira Mono in the final round.
Thanks for the send. I'm new to choosing a font for my editors, and just went through the tournament. I've got to say, Inconsolata is quite a finessed font for coding. It definitely seems to work well for me.

I do wish that site let you "exclude" certain options so they never appear in the tournament at all. It would have saved time, one or two are so awful they aren't work doing comparisons on.

(comment deleted)
I switched to Iosevka for both iTerm and Emacs several years ago and have been pretty happy with the added horizontal density. My only real complaint is that Emacs behaves a bit weirdly when lines exceed the buffer width, but I haven't tried switching back to a "normal" typeface to confirm that it's Iosevka's fault.
JetBrains Mono is my choice. I tried switching between a bunch of them and always came back to it. They've done a great job.
It looks good, and is surprisingly readable when shrunk down a bunch. It's a fantastic quick-setup font. I only don't use it as my main font anymore because I have a very personalized Iosevka build. But that takes time and motivation to do (and a mind-blowing amount of RAM).
It's weird to see the author talk about "information density" with monospace fonts. Am I missing something, maybe misinterpreting what he means by it?
I'd wager the context in which it is used gives a clue:

> More compact than this overview’s average but so graceful that I’ll take that and welcome the information density.

My guess is they mean how wide or narrow one character is in a given monospace font.

Yeah, that was my best guess too: visual density

"Information density" normally means "how much information can fit in a piece of the screen", which is going to be the same for all monospace fonts (at the same font size, anyway)

I have switched to Operator Mono about 10 years ago. This font is not free though. However it was the only font (at the time I was looking at at least) that had a monospaced italic version which I found looked slick. So I ended up buying that font and used it ever since.
operator mono has always been my goto since i first went into a deep dive on this topic, and i LOVE it. in the interest of full disclosure, i... torrented it... many, many years ago, but now that i'm thinking about it i will go buy a copy-- i definitely owe them at this point. highly, highly recommend operator mono-- i just feel like if you are optimizing for pure aesthetics it wins out. the italic version is definitely a big part of that.