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/
In code, you can always choose a style that discourages spatial alignment.
A proportional font in Emacs doesn't look right to my eye. My guess is that there are subtleties in the spacing between letters when a browser or a book publisher renders the text that Emacs does not know about.
Going to check that font out - thank you for the suggestion. :)
There are now some excellent mono faces that have broken from a lot of the traditional monospace design elements and that look and feel very much like proportional fonts. Quadraat sans mono, cartograph cf, triplicate, I've seen a good homebrew alegreya sans mono variant too. I don't know of any free ones, though inconsolata-g is well in that direction. But I expect more of this trend over the next few years.
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.
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).
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.
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.
designed for low-vision developers.
IBM's Plex Mono also a great contender for a "professional" programming font.
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.
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...
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.
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
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.
But in any case, the correct font for coding is Cascadia Code. I don’t know why more Linux people don’t use it. Just because it’s from Microsoft?
May be worded differently, like: it doesn't support ligatures, but it doesn't affect me because I don't use them.
> As software developers, we always strive for better tools but rarely consider a font as such.
We must travel in different circles, it feels to me like half the developers on HN, blogs, and social media are WAY more concerned with the aesthetic of their development environment than actually getting any real work done with it!
About a half of the article is about these "mirror image glyphs". Why would they be a problem for the proclaimed purpose of character distinction? Has anyone ever mixed up "b" and "q"?
I learned about mirror glyphs through a document linked in the Accessible Perceptual Contrast Algorithm (APCA) website. For context, APCA is the system that aims to supplant current color calculation methods in the Web Content Accessibility Guidelines (WCAG).
https://www.researchgate.net/publication/338149302_Evaluatin...
The real reason it’s important is that for some the glyphs are too much alike and can be confused. The brain may rotate of flips things sometimes.
Either that, or I made the correct slash and my teacher interpreted it incorrectly!
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!”
Available on Homebrew: https://formulae.brew.sh/cask/font-atkinson-hyperlegible#def...
Only problem is that it doesn’t have all the nerd font glyphs so it can’t handle the nice oh-my-zsh themes well, like the powerline-10k theme. I still use it despite that though.
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.
config.harfbuzz_features = { 'calt=0', 'clig=0', 'liga=0' }
Which editors on which OS's provide a toggle for that?
And then you run Vim or Emacs in said terminal...
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.
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.
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.
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.
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.
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.
I am thinking about the regular one on text, not mono on code.
https://github.com/madmalik/mononoki
That said, the differences between 0 and 8, while better than my previous favorites, still aren't as stark as I'd like them to be.
Why not use a monospaced serif font in the first place? I get that they don't seem to be common, but maybe they should be.
On high-DPI screens, like the one I'm currently using, serif monospace fonts can also look really good. For example, I'm typing in Latin Modern Mono (based on TeX's default typewriter font) in this text box.
Also, it's great that it's available as a Nerd variant. It makes it super easy to install on Linux with Embellish.
Can I ask why?
So it was a genuine curiosity of me. Sorry if it sounded rude or accusatory or similar.
> Fira Code uses uniform length for +, =, and -. - and _ share similar length. The /\ characters join together and render smaller compared to the other fonts.
This "joining" is a ligatures thing, I'm almost certain, at least for `<>`. I can't for the life of me get anything on macOS to render `/\` as joined, though. Stumped. I've no preference either way, it's just weird to see a familiar font rendered so strangely. Maybe it's a Windows font rendering thing ?
A very fair comparison, though I'd argue legibility isn't always worthwhile; the MICR (?) fonts on checks are quite legible (perhaps machine-legible) but too weird to use.
also, TIL IntelliJ bundles Fira Code for quite some time now
- What do you mean by squished?
- What device and browser are you using?
- Are all images affected or just certain ones?
A screenshot would help a lot if possible.
maybebyte•11h ago
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.
esafak•10h ago
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•10h ago
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•9h ago
alienbaby•10h ago
jasperry•10h ago
maybebyte•10h ago
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.
wentin•10h ago
maybebyte•10h ago
dijit•9h ago
wentin•9h ago
wentin•9h ago
wentin•9h ago
maybebyte•9h ago
ta8645•3h ago
This particular font seems to have very inconsistent kerning. The "isMultipleOf" identifier pushes the s & M & u and e & O way too tightly together, and the remaining letters seem inconsistently spaced as well.
jherdman•9h ago