Ghostty Cheatsheet
Fonts and Ligatures
Use this Ghostty reference while you build software engineering projects, review code, or refresh the syntax you reach for most.
Picking a font
font-family is repeatable. The first entry is the primary font, later entries are
fallbacks used when a codepoint is missing from the primary.
font-family = "JetBrains Mono" font-family = "Symbols Nerd Font Mono" font-size = 14
ghostty +list-fonts # valid font-family values on this machine ghostty +show-face U+E0B0 # which face a codepoint actually loads from
Ghostty embeds JetBrains Mono and built-in Nerd Font symbols, so a bare install already renders powerline and icon glyphs. To replace the list instead of appending, reset it first:
font-family = "" font-family = "Berkeley Mono"
CLI values automatically clear values from config files, so
ghostty --font-family="Iosevka" needs no reset.
font-size is in points and may be fractional. On a 2x display, 13.5 gives you
27 physical pixels. Changing it at runtime only affects terminals that have not
manually zoomed. On Linux with GTK, the size is additionally scaled by the desktop's
display scale and large-text settings.
Styles
| Key | Purpose |
|---|---|
font-family-bold / -italic / -bold-italic | override the family per style |
font-style / -bold / -italic / -bold-italic | pick a named style string, or false to disable that style |
font-synthetic-style | control faked bold, italic, and bold italic |
If you set no per-style family, Ghostty looks for stylistic variants inside the primary family rather than jumping to a different family just to get bold.
font-style-bold = Heavy selects the face whose self-reported style string is
"Heavy", the way "Iosevka Heavy" advertises itself. font-style-bold = false
disables bold entirely, and the regular face is used when a program asks for bold.
font-synthetic-style = false # no faking at all font-synthetic-style = no-bold,no-italic # fake bold-italic only
The classic mistake: disabling
boldanditalicdoes not disablebold-italic. It has to be named explicitly, and it cannot be partially disabled.
Ligatures and font features
font-feature applies OpenType features to every font Ghostty renders. Repeat the
key or use a comma-separated list.
| Form | Meaning |
|---|---|
feat, +feat, feat on, feat=1 | enable |
-feat, feat off, feat=0 | disable |
feat=2, feat = 3, feat 4 | set a value |
"feat" | quotes allowed, matching CSS font-feature-settings |
# Turn off programming ligatures font-feature = -calt # Turn off essentially every ligature font-feature = -calt, -liga, -dlig # Turn on stylistic set 2 and slashed zero font-feature = ss02, zero
calt is the feature nearly every programming font uses for ligatures, so -calt
is the answer to "how do I stop the arrows from joining". Invalid settings are
silently ignored, so a typo just does nothing. Use a font inspector such as
fontdrop.info to see which features your font actually has.
Variable fonts
font-variation = wght=450 font-variation = slnt=-10 font-variation-bold = wght=700
The format is axis=value, where the axis is always a 4-character tag. Common
axes: wght weight, slnt slant, ital italic, opsz optical size, wdth
width. Out-of-range values are ignored rather than clamped, so wght=800 on a
100–700 font does nothing at all. Variable fonts usually ship as -VF.ttf or
-VF.otf.
Per-codepoint fonts and metrics
# Force a range of codepoints to a specific family font-codepoint-map = U+E0A0-U+E0D4=Symbols Nerd Font Mono font-codepoint-map = U+2764=Apple Color Emoji # Nudge the grid and decorations adjust-cell-width = 5% adjust-cell-height = 10% adjust-underline-position = 2 adjust-cursor-thickness = 150%
Codepoints are full Unicode hex, U+ABCD, and ranges use U+ABCD-U+DEFG. Multiple
ranges for the same font are comma-separated. Changes only affect new terminals.
adjust-* values are deltas, not absolutes. adjust-cell-width = 1 widens the
cell by one pixel, and 20% widens it by twenty percent. There is almost no
validation, so -100% will make the terminal unusable. Most *-thickness values
are clamped to a 1px floor, which can make a setting look ignored.
Also useful: font-thicken (macOS style stem darkening, default false) with
font-thicken-strength 0–255, and grapheme-width-method (unicode by
default) for how wide a grapheme cluster is considered to be.