Skip to content

Fonts

Ten monospaced families, and the glyph set that makes the unpatched ones usable in a terminal.

Most of the list is a Nerd Font build: the original typeface plus several thousand glyphs from Font Awesome, Devicons, Octicons and Material. Starship, lsd, superfile and btop all draw those glyphs, and without them they render as empty boxes. Two families here have no patched build — pair those with Symbols Nerd Font as a fallback and the icons resolve anyway.

Ligatures, or not

Half this list has programming ligatures and half deliberately does not, which is the first thing to decide.

LigaturesFamilies
YesJetBrains Mono, Fira Code, Maple Mono, JetBrains Maple Mono, MonoLisa
NoIBM Plex Mono, Meslo LG, Source Code Pro, Google Sans Code, Space Mono

A ligature draws != as a single crossed-out equals sign. It reads well, and it also means the glyph on screen no longer corresponds one-to-one with the characters in the file — which is fine until you are counting columns, or reading a language where <- and < - differ. Both positions are defensible; the families in the second row simply never offer the choice.

Where these come from

Nerd Fonts patches the upstream families and publishes the results; Homebrew repackages those same archives as casks. Either route gives identical files.

Every patched family is in homebrew-cask itself — the separate homebrew/cask-fonts tap was retired, so nothing needs tapping first:

brew search '/font-.*-nerd-font/'
brew install --cask font-fira-code-nerd-font

Each family is published in three variants, which differ in how wide the icons are rather than in the typeface:

VariantIcon widthUse it for
Nerd FontVariable — icons may be wider than one cellEditors and anywhere proportional icon width is fine
Nerd Font MonoForced to a single cellTerminals, where a double-width glyph breaks column alignment
Nerd Font PropoProportionalProportional-width UI, not code

Turning features on and off

Ligatures live in the calt (contextual alternates) feature. ssXX stylistic sets usually change a group of characters, cvXX character variants usually change one, and zero is the slashed zero. Patching for Nerd Fonts leaves all of them intact.

Two things are worth knowing before reaching for these. Individual ligatures cannot be switched off one at a time — you disable calt wholesale, or pick the ssXX/cvXX toggles that change the glyphs involved. And disabling calt does not disable the alternates: 'calt' 0, 'zero', 'cv01' keeps a slashed zero and one character variant while dropping every ligature.

ApplicationHow
VS Code"editor.fontLigatures": "'calt' 0, 'zero', 'cv01'" — a plain true or false also works
Zed"buffer_font_features": { "calt": false, "ss01": true }
JetBrains IDEsSettings → Editor → Font → Enable ligatures — all or nothing
XcodeNo OpenType control at all; install a no-ligature build instead
Ghosttyfont-feature = -calt to disable, font-feature = ss01 to enable
kittyfont_family family="Fira Code" features="+zero -calt"
WezTermharfbuzz_features = { "calt=0", "clig=0", "liga=0" }
iTerm2Profiles → Text → Use ligatures — all or nothing, and calt only
AlacrittyNo ligature support
Editors that offer no OpenType control need a font built without ligatures. JetBrains publishes JetBrains Mono NL for exactly this, and Nerd Fonts patches it as JetBrainsMonoNL Nerd Font.
This post is licensed under CC BY 4.0 by the author.
Last updated on