Skip to content(if available)orjump to list(if available)

Font Comparison: Atkinson Hyperlegible Mono vs. JetBrains Mono and Fira Code

maybebyte

After redesigning my website to use Atkinson Hyperlegible fonts, I switched my terminal and code editor to the monospace variant to properly test it. After a month of testing and positive experiences, I felt motivated to investigate further and write an article comparing Atkinson Hyperlegible Mono to JetBrains Mono and Fira Code.

The visual comparisons use examples from an accessibility paper on homoglyphs and mirror glyphs. I chose JetBrains Mono and Fira Code as a baseline, since many developers use these fonts and find them familiar.

While Atkinson Hyperlegible Mono excels at character distinction, nothing is perfect. I detail trade-offs in the "Caveats" section, below the installation instructions.

I'm curious to hear others' experiences and thoughts. I'm fascinated by what role font choice plays in legibility and accessibility, but the research is relatively sparse in this area.

alienbaby

I was hoping to see some comparisons of blocks of English text, and blocks of program code text, rather than just character by character. That would help me understand how it feels to read in arbitrary blocks, as well as appreciate specific design characteristics.

jasperry

I agree. This is a very enlightening discussion of individual glyph features that affect readability. But the thing that hit me immediately is the difference in how expanded or condensed these fonts feel. Even though in the examples, the text width of JetBrains and Fira is identical, JetBrains "looks" condensed to the point of being harder to read. But I feel like Atkinson goes too far the other direction and is too expanded. When I read it, I feel like I'm tripping over the empty space between the characters, or I have to move my eyes too much to read one word.

wentin

This might be of interest for you: https://www.codingfont.com/ I made it to select the perfect coding font. i will update it to include the Atkinson Hyperlegible Mono soon!

maybebyte

Hey, I'm a fan of your work. My font before this was Victor Mono, and I actually found it through your website. Do you publish the source code anywhere? I'd be interested to take a closer look at it.

jherdman

This was fun!

maybebyte

This is good feedback, thank you. When I wrote the article, I erred on the side of too few comparison images rather than too many. What would you recommend for comparison blocks? "The five boxing wizards jump quickly" and maybe a fizzbuzz?

For what it's worth, I generated the comparison images with Harfbuzz and ImageMagick, so in theory I could publish the script and then anyone could make their own comparison images. Fair warning: it's a quick and dirty shell script, written only to get the job done.

esafak

I would link to the downloads in the opening paragraph.

My impression is that while legible it is too fat. You'll notice that Fira Code and JetBrains Mono are similarly wide -- and narrower than Atkinson Hyperlegible Mono.

maybebyte

Sure, I'll add it in. I'll post the links here as well just in case:

https://github.com/googlefonts/atkinson-hyperlegible-next-mo...

I'd recommend getting it from there rather than the Braille Institute's website since they require an email and EULA, but here's the other download link anyway.

https://www.brailleinstitute.org/freefont/

Also, Nerd Fonts added Atkinson Hyperlegible Mono in their v3.4.0 release.

https://github.com/ryanoasis/nerd-fonts/releases/tag/v3.4.0

With Nerd Fonts, I'd recommend downloading both and setting up a fallback system through fontconfig though. Unfortunately, some versions (Nerd Fonts, official download) are still missing the backtick/grave glyph.

https://github.com/googlefonts/atkinson-hyperlegible-next-mo...

tracker1

I'm pretty much there with you. I tend to use Fira Code for the improved visibility, but really would prefer Consolas/Inconsolata, but there are a few character variations that I don't like as much and it's slightly harder to read (for me). I also have come to rely on the Nerd Fonts enhancements with my terminal prompt (Starship).

tiffanyh

The difficulty I have with many so-called legible fonts is that they’re often not very readable.

Legibility refers to how easily individual characters can be identified. But good readability depends on how easily your brain can recognize whole words—through pattern recognition of word shapes.

When characters are too similar in shape and size, it becomes harder to distinguish the unique shape of each word, which reduces readability (which often happens with these highly legible fonts) — even if each individual letter is technically more clear.

ethan_smith

This legibility vs readability distinction is why variable-width programming fonts like Proportional or Input Sans can actually reduce cognitive load during extended coding sessions despite sacrificing character grid alignment.

soneca

Do you think Atkinson Hyperlegible specifically hurts readability?

I am thinking about the regular one on text, not mono on code.

maybebyte

Interesting distinction there. I didn't know that was the difference between legibility and readability. I'd really like to hear more about this. Do you have experience with fonts that strike a better balance, or know of reading material that discusses this subject in more detail?

tiffanyh

This is a complex topic.

For example, if you grew up in an English-speaking country, your computer likely defaulted to Arial or Helvetica as its sans-serif font. Over time, your brain became familiar with how words looked in those typefaces—their proportions and shapes.

Because fonts like Inter and SF share similar proportions, your brain finds them easier to process, which makes them feel more readable.

atoav

Good observation, legibilty is not the same as readability. Hyperlegible fonts are used in places where it is crucial that the readers can identify the correct characters and/or short words – even if the readability suffers slightly.

Readable fonts are for longer form texts where the flow of reading is more important than correctly identfying individual characters.

Both have valid use cases and there are fonts who mange to do both pretty well.

evertheylen

Why don't we embrace proportional (i.e. not monospace) fonts more for coding? IMHO, they are a big step up when it comes to legibility. I personally switched after I noticed reading stuff in the sidebar (which is usually in a proportional font) felt more comfortable than reading code.

You can't use it for a terminal of course, and occasionally I find comments relying on monospace alignment. Other than that I see no downside to proportional fonts.

I use Input, which gives more room to special characters and is pretty nice overall: https://input.djr.com/

fainpul

I fully agree that proportional fonts are nicer to read, even for code. When I tried to use it, I got annoyed by Go, which autoformats code with spaces to align stuff and that looks very ugly with a proportional font. The solution would be elastic tabstops [1], but that seems just to be a concept without actual support in any editor.

[1] https://nick-gravgaard.com/elastic-tabstops/

NoGravitas

If you use a true proportional font, you give up aligning code elements other than basic indentation. For most people, that's too much to give up.

I do like quasi-proportional fonts like Iosevka Aile, where very wide or very narrow characters are allowed something more like their natural widths. I think, though I'm not sure, that the widths are worked out so that "Wl" (wide + narrow) is the same length as "xx" (2 x normal), for example. My experience using Iosevka Aile in Emacs is that things usually-but-not-always align like they're supposed to, which is a better trade-off than fully proportional fonts.

CalChris

> You can't use it for a terminal of course

That is the problem, though. I edit with neovim inside of wezterm. The few times I've seen proportional used for code, I've thought that it looked interesting but realistically, I live in a vt100 universe and all things considered, it's really not that bad.

I'm interested in Atkinson Hyperlegible Mono as a programming font. I think monospaced is a defining characteristic of programming fonts. Basically, legibility is just different for programming and text (although I clearly read too much Verdana).

sureglymop

Maybe this is a silly idea, but what about a terminal emulator that could switch fonts on the fly?

For example, it could switch to a monospace font when a "fullscreen" program like vim switches to the other buffer.

Or maybe it could even render different fonts per line.

namibj

You sound like you want Emacs. The X11 frontend.

bityard

Some people use proportional fonts in their IDEs, and have been for decades. It's just not exactly a mainstream practice. (I seem to recall that Microsoft used proportional fonts in their IDEs in the 90's. Or maybe I'm thinking of Visual Basic? Not sure.)

The main reason I have felt no inclination to use proportional fonts when coding is that proportional fonts tend to be _very_ bad at distinguishing homoglyphs and that is the _last_ thing you want when trying to find the syntax error or undefined variable. Although I will admit that I haven't look very hard for a proportional font that's actually meant for programming.

The other reason is that sometimes I read code where someone has created an ASCII diagram in the comments, or have other structures or whitespace where vertical alignment matters. (This used to be highly popular in C, although it's viewed as a bad practice in "modern" times.)

I find monospace code very easy to read, so I guess at the end of the day, proportional fonts have a few disadvantages with no real upside. For me at least.

maybebyte

You know, I've heard this idea about proportional fonts before and have been intrigued by the idea. I use Neovim running inside Alacritty as my code editor, though, so unsure if it'll work for me or not.

Going to check that font out - thank you for the suggestion. :)

DASD

You might also like monospace fonts with "smart kerning" as available with Commit Mono font. https://commitmono.com

pmarreck

My current favorite code font is Berkeley Mono https://usgraphics.com/products/berkeley-mono

It's not free, but I love it. You can customize some variations too (like how zeroes look; I use the "invisible slash" look) and it has some support for terminal symbols and programming ligatures used by terminal tweaks like Powerline, etc.

bayindirh

Yeah, where there's Berkeley Mono, there are no alternatives. I love that font, and use it everywhere.

braum

yep! I just got it the other day. I upgraded to get the variants but I quickly settled on the Regular which is included with $75 Dev license. It's amazing even using it for non-code like in Obsidian.

Void_

I love this font! It's very well worth the price.

Brajeshwar

I moved to "Atkinson Hyperlegible" for all of my Note-taking/Reading, Markdown Editing, etc. And recently upgraded to "Atkinson Hyperlegible Next" beating my choices of iA Writer’s Fonts. We are spoiled for choice and they are all beautiful and super readable and comfortable.

Unfortunately, I found "Atkinson Hyperlegible Mono" (IDE/Terminal) to be a tad stunted for my liking. I wear glasses but not that bad and I like to use my computer without glasses. I personally like "Monaco" with a tad larger font-size. The other reason I try to stick to more common fonts and pick one of the better of them is to be able to use any IDE (helping/discussing with team members) and not feeling uncomfortable without "my favorite font."

Again, very personal, but I tried "Atkinson Hyperlegible" for the website for about a month or so and I found it to be neither modern, nor professional nor vintage/classic but more like the website warming up to the reader/visiter, “Hey, are you OK? Finding it hard to read, I'm going to make some scientific fixes to help you read!”

queuebert

Over my embarrassingly long time of coding, I've gone through all of these fonts and more (VT100 anyone?) and eventually traded the sans-serif fixed-width fonts for ones with serifs, as it feels less tiring at the end of long days. For the last few years, I've used Monaspace [1] variants, especially Xenon, and enjoyed them immensely.

1. https://monaspace.githubnext.com/

DrBazza

I moved on from these fonts quite some time ago and just use https://github.com/be5invis/Iosevka everywhere.

It's ideal for 'wordy' languages such as C++ where a typical line length can often go over 150 characters, and then you don't have to scroll sideways.

ThisNameIsTaken

Adding to the list of 'this is what I am using', I have switched both terminal and code editor to Maple Mono[1]. Which, looking at TFA, seems to be somewhat similar in spirit as Atkinson Hyperlegible, although I haven't used that.

Maple has many ligatures, I personally like the hypervisible [TODO]. Overall I find it very legible, even on small sizes, and pleasing also for writing e.g. in Markdown.

[1] https://font.subf.dev/en/ / https://github.com/subframe7536/maple-font

christophilus

I don’t like glyphs, but that normie mode looks excellent. I don’t know how I missed maple when doing my font search recently. Thanks for the link.

specialist

Those are some sexy glyphs (gaps in curly punctuation).

The ligatures for keywords is clever. I appreciate those niceties. Like rendering small gaps in large numbers, eg '1000000' looks like '1 000 000'.

IIRC Berkeley or Monospaced have a few neat tricks like that.

bitwize

Iosevka is the most terminaly of the modern vector programming fonts, outside of perhaps Terminus. I set my Emacs to use it, as I haven't been able to find a font that comes anywhere near as comfortable.

elric

> Atkinson Hyperlegible Mono lacks programming ligature support.

Good. That's a feature, not a bug. I want -> to render as a dash and a greater than sign. Not an arrow. I can't even articulate why, other than a deep seated distrust of magic.

eviks

Nothing stops you from simply not enabling that font feature, user config is also not a bug

elric

Configurable fonts are a thing? Never configured a font beyond size/weight/colour. Intetesting.

crazygringo

How?

Which editors on which OS's provide a toggle for that?

dismalaf

Dunno about toggle in an editor but fancy terminals have config flags for stuff like that (Kitty, Wezterm, Ghostty, etc...).

And then you run Vim or Emacs in said terminal...

dismalaf

This is why I like 0xProto font. It has ligatures for a nice clean look, but preserves a little bit of spacing between characters so they're still legible as individual characters. It's also very readable and legible overall, with nice proportions.

And ligatures are a must for me because I find that symbols don't line up nicely in a ton of fonts and it annoys me a lot.

CalChris

wezterm gives you the option to ligature or not to ligature.

  config.harfbuzz_features = { 'calt=0', 'clig=0', 'liga=0' }

jkmcf

Fira Code uses the empty set character (∅) for zero. This mistake cost me a correct answer on a math test in 12th grade because I made the wrong slash.

Either that, or I made the correct slash and my teacher interpreted it incorrectly!

tripflag

it's also inconvenient for Norwegians and Danes, since Ø is part of our alphabet. Slightly jealous of Sweden since they write it like Ö instead... Either way, big fan of dotted zeros for that reason.

eviks

Yeah, dot in the middle is the best option, also better aligns with the whole circular concept of the glyph as opposed to the straight slash line

bonthron

Maybe an acquired taste, but I'm fond of Intel One Mono ... https://github.com/intel/intel-one-mono

designed for low-vision developers.

bayindirh

Looks like a great, functional font. I'm also a fan of Adobe Source Code Mono, but the look and feel of Berkeley Mono just wiped the floor of all these professional and well designed fonts.

IBM's Plex Mono also a great contender for a "professional" programming font.

ruuda

I switched to it after more than 12 years with Consolas, expecting to quickly get bored of it, like every other time I had a brief affair with a different font. But One Mono stuck!

vouaobrasil

What I have found with these fonts (and I have tried them all) is that one isn't really much better than an another, but instead I have to switch between them (and others) because eventually I get sick of every single one of them.

bayindirh

> because eventually I get sick of every single one of them.

Can I ask why?

vouaobrasil

I don't know. I like all the fonts, they're good. But looking at them for long periods of time makes me tired of looking at them and I just need to switch. You might as well ask me why I get tired of a certain food if I eat it too often.

bayindirh

Oh, OK. I asked, because sometimes people doesn't like a certain aspect of a font and can't stand it, and need to switch. Also, I'm also the exact opposite of you. I can use a font I like for a decade without getting tired of it. Same for a good color scheme for my terminals / IDE.

So it was a genuine curiosity of me. Sorry if it sounded rude or accusatory or similar.

bityard

For those who just want to have one nice reliable monospace font and move onto other concerns in life, there is Hack: https://sourcefoundry.org/hack/

zettabomb

Somehow this just seems like throwing a fourth choice into the mix, rather than simplifying anything.