Get the top HN stories in your inbox every day.
maybebyte
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.
tony2016
How does one choose the two fonts to compare?? I just get random fonts with the restart game option.
jherdman
This was fun!
forsakenharmony
Iosevka is also missing
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).
ninetyninenine
Character distinction isn't that important when reading english mainly because context automatically repairs any s1m1l4r1t1es b3tw33n w0rd5. Even numbers can be used the replace letters and it only slows down reading slightly. Leetspeak is only a worst case example. For example for b0Ok 0 and O causes virtually no pause.
kybernetikos
But that's the exact reason why it's problematic in contexts where the exact character is important in a way not clear from context. Atkinson Hyperlegible is my favourite for reading passwords or urls with codes in them etc.
ninetyninenine
But how often is this needed in daily life? Why not just pick something that’s aesthetically pleasing based on personal preference rather than legibility because reading passwords doesn’t happen often at all imo?
Additionally the legibility metric used by the site isn’t even quantitative. It’s qualitative and opinionated so it’s not like there was an objective measure that says Atkinson is in actuality more hyperlegible… the hyper legibility is an opinion.
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.
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.
smusamashah
As an Urdu speaker I love the Nastaliq font for its ability to give each word its own unique shape. When alphabets are knitted together, it doesn't just change total width of the word, it changes total height as well. Found a random website with urdu text in image form https://wp.nyu.edu/virtualurdu/the-clever-bird/
wvh
I agree, and can imagine using a different font depending on the (programming) language or purpose, yet each font being quite objectively better at that purpose. Some languages are a lot more similar to natural language, and some are more mathematical, technical or really need fixed width blocks to be readable.
And then there are fonts that I don't like aesthetically and generally avoid, but come to the rescue in the wee hours of the morning when you really have to get something done and your eyes have gone blurry.
jlokier
Which fonts do you think are helpful during those blurry-eyed early hours?
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.
saltcured
I spent so many years reading the 6x13 "fixed" font in XTerm, starting with CRTs and moving over to LCDs.
I don't think anything is more readable to me. It hit the sweet spot of being condensed enough for easy reading but still with highly legible individual characters too.
I have always wished someone could have made a scalable version to bring it into the future of high resolution displays.
soneca
Do you think Atkinson Hyperlegible specifically hurts readability?
I am thinking about the regular one on text, not mono on code.
oskarw85
Not OP but I set Atkinson Hyperlegible on my e-ink reader and it served me well. I feel my reading speed has improved. It is pretty wide though so to put more text on the page I decreased font height a bit.
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.
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.
WorldMaker
> If you use a true proportional font, you give up aligning code elements other than basic indentation.
Have you ever gotten deep into how tab stops work in Word?
The deeper you go the more you realize fun things like Tables are as much "Tab Stops with Borders" as they are a separate concept to Word. The UI/UX of both reflect each other.
WYSIWYG word processors and design tools have lots of ways to align proportional fonts.
The big thing is that to do it well they need a ton of metadata: this "paragraph" has tab stops at 1", 2", 4", and 5.5", two of the stops are right-justified and one is centered. Word makes it surprisingly easy to edit all of that metadata easily and visually in the Ruler up top.
If you are sticking to plain text documents that are easy to source control, where and how do you store that metadata? How do you keep it from being a distraction from the code you want to write?
It's not an insurmountable problem, we could do some really cool things if we tried. One half-baked thought off the top of my head here is that I bet you could do something rather cool with easily embedded CSS Grid descriptions in nearby comments and Tab/Newline-delimited sequences auto-populating cells in the grid. Given how much of our code is HTML rendered anyway and how ubiquitous HTML renderers are in our digital lives, CSS Grid isn't the worst model to reuse for something like this, and might be something someone could build a prototype with relatively quickly.
DASD
You might also like monospace fonts with "smart kerning" as available with Commit Mono font. https://commitmono.com
flobosg
Check out the Acme editor from Plan 9: https://en.wikipedia.org/wiki/Acme_(text_editor)#/media/File...
bjourne
Typos feel way harder to spot in proportional fonts. Maybe because proportional fonts are easier to read so your brain subconsciously ignores them. And typos, like a misplaced or forgotten comma, can cause some of the most annoying bugs. Also, most editors still mostly operate on individual characters. With a fixed width font I can immediately see how many cursor up and cursor left commands I need to send to move the cursor to a specific position in the text.
CRConrad
> 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.
No, according to what seems to be the common definitions in this thread (dunno if that's the "official" one, or if such a thing even exists), they're better for readability, not legibility. And I agree with user bjourne's comment[1], "Typos feel way harder to spot in proportional fonts." What we need for coding is mainly legibility, not readability.
Well, at least usually, while writing and editing. For getting an overview of a large codebase, the increased readability of a proportional font might be better. (So what we really need may be a quick way to switch our editor or IDE between proportional and non-proportional fonts.)
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. :)
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).
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.
nitinreddy88
Same here. No other font comes close to it in terms of readability. I really don't care about what each font claims about in terms of achiveness. As long as it's not pleasing to me, its not worth for me.
Void_
I love this font! It's very well worth the price.
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.
aquir
Come here to say the same...expensive but worths it
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!”
amir734jj
Me too. I can't use anything other than Monaco.
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
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.
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.
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.
bobbylarrybobby
For me, it's because it messes with my expectations of where my cursor will go when I move it over the ligatured characters and what will happen when I edit them. It's very jarring to delete one character and see the character(s) next to it change.
There is also something to be said for each character being the instructions for how you type it. How to type “->”? Press - then >. With ligatures, that goes out the window, and at least for me, I have to quickly look up in my memory how to type ≥ or ⟹.
That said I do very much like Commit Mono’s “smart kerning”, where characters are adjusted slightly based on the characters surrounding them. I guess you could call it a soft version of ligatures. For instance, when an m is between two i‘s, the i‘s get pushed away a tad to give the m a bit more room to breathe. Similarly, when you type an ellipses (...), the dots get pushed ever so slightly closer together than they would be naively.
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.
0xAFFFF
Yep, modern fonts have features that can be enabled or disabled, depending on client support. IDEs typically allow to enable/disable ligatures and you also can control font features with CSS (see: https://developer.mozilla.org/en-US/docs/Web/CSS/font-featur...)
crazygringo
How?
Which editors on which OS's provide a toggle for that?
hadrien01
Jetbrains IDEs: Settings > Editor > Font > Enable ligatures
Sublime Text: Set "font_options" to "dlig". There are other settings to choose which character tables are allowed to use ligatures or not.
Visual Studio Code: Set "editor.fontLigatures" to "true". You can also put CSS font features to choose which ligatures you want to enable.
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' }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.
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!
khaledh
This is of course subjective, but I still find JetBrains Mono to be much more pleasant to read (when it comes to code) than any other mono font out there.
RyanHamilton
I also found this and actually made it the default for an application I author with a few thousand users. Well it turned out jetbrains mono didn't support chinese characters so I broke my app for a proportion of my user base. I had to revert it. Also it can add seconds to load time. Just a warning as I think a few people on hn will make tools for others. I still set it as my own font.
microflash
You can always subset different fonts for different languages. This does two things: reduces the file size and allows some agents, such as your browser, load specific font depending on unicode range.
I wrote a post about subsetting, in context of my personal site, here: https://www.naiyerasif.com/post/2024/06/27/how-i-subset-font...
speedgoose
Yes, same for me. I tried many fonts over the years and I settled on Comic Code and JetBrains Mono. I use one for code editors and the other for CLIs.
tommica
I use comic code in my editors and in cli - it's just fun and very readable
alexeiz
Coming from Commit Mono, Atkinson looks a bit unusual. But I think I can get used to it. I think the comparison to Fira Code is valid, because in the terminal Atkinson looks almost like Fira Mono, but better. Since I usually sit a meter away from the screen, I can appreciate the extra legibility of this font.
Also, it's great that it's available as a Nerd variant. It makes it super easy to install on Linux with Embellish.
Get the top HN stories in your inbox every day.
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.