You will look at your terminal font for thousands of hours this year. Most people use whatever the default is. Ten minutes of deliberate choice fixes that.
The discrimination tests
Type these strings and check if you can tell them apart instantly:
l1I| (lowercase L, one, capital i, pipe)
0O (zero, capital O)
rn vs m (in some fonts rn looks like m at small sizes)
;: (semicolon, colon)
{}[]() (bracket sanity)
If l1I reads as four identical sticks, the font fails for code. Slashed or dotted zero is non-negotiable for configs and data work.
Ligatures: the great divider
Programming ligatures render != as ≠, => as ⇒. Fans swear by them; opponents argue the glyphs lie about the characters underneath (searching for != in a ligature-rendered file is confusing).
My take: ligatures on for terminal/editor, off for code shown in screenshots and docs (the audience may need to transcribe it). Fonts like JetBrains Mono have ligatures; Fira Code was the popularizer; Cascadia Code ships with them.
The rendering stack nobody thinks about
Terminal font quality = font × terminal emulator × rendering engine (CoreText/DirectWrite/FreeType). The same font can look crisp in one emulator and muddy in another (hinting interpretation differs). Judge fonts in YOUR terminal, not in comparison screenshots.
When code appears in web UIs
The same discipline applies to code blocks in docs and dashboards: font-family: ui-monospace, 'JetBrains Mono', monospace covers native contexts with a web fallback. And when a rendered UI's "monospace" block shows something suspiciously proportional, identify what's actually rendering - screenshot through an on-device identifier like Typeye and the CSS cascade lie is exposed instantly.
The shortlist
- JetBrains Mono - tall x-height, excellent readability, ligatures
- Fira Code - the ligature classic
- Cascadia Code - Windows Terminal default, great hinting
- SF Mono / Menlo - macOS native, no downloads
- IBM Plex Mono - character without gimmicks
Pick one, commit for a month, then evaluate. Font ADHD is real and unproductive.
Top comments (0)