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.
All words in use today were made up at some point and then accepted through popular use. Merriam-Webster accepted this one into their dictionary some years ago.[1]
And Dictionary.com acknowledges it may have been published previously in 1884 by C.A. Ward as an example of a barbarous verb.[2][3]
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
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.
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.
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.
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
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.
Years ago I fell in love with Anonymous Pro. Everything seems to fit just right. I've never had an issue wondering which character is which nor have I run into missing common characters.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Part of the project are some interesting duospace and quad-space versions that I probably wouldn’t use for code, but are great for editing general text.
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!
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.
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.
It even includes Anka/Coder, my personal favorite. It doesn't include anything but Regular, not its variants like Narrow, but still quite a complete project.
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.
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).
"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.
207 comments
[ 3.1 ms ] story [ 257 ms ] threadYeah, man, so much effort and every screenshot looks identical in context in the blog post.
Iosevka and Iosevka-Comfy for the win.
And Dictionary.com acknowledges it may have been published previously in 1884 by C.A. Ward as an example of a barbarous verb.[2][3]
[1] https://www.merriam-webster.com/dictionary/embiggen
[2] https://www.dictionary.com/browse/embiggen
[3] https://academic.oup.com/nq/article-abstract/s6-X/242/135/43...
DAE know of a more complete lookalike with more glyphs?
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.
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.
https://www.marksimonson.com/fonts/view/anonymous-pro
https://www.dafont.com/monofur.font
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/
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.
It seems like the "r" is actually the main culprit. The spacing before and after "r" tends to feel too big to my eye.
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
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!
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).
[1] https://cdn.berkeleygraphics.com/static/public-affairs/bulle...
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.
Don't know if it counts as "modern" being 13 years old, but it's the best there is.
Been using it for a bit and I've really fallen in love with it.
https://rubjo.github.io/victor-mono/
Part of the project are some interesting duospace and quad-space versions that I probably wouldn’t use for code, but are great for editing general text.
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.
i totally get people that don't like it, but fonts are so personal that i don't really care.
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
- 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/
https://devfonts.gafi.dev
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.
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 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.
https://imgur.com/a/n6cKfRT
> 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.
"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)