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

KeyPurpose
font-family-bold / -italic / -bold-italicoverride the family per style
font-style / -bold / -italic / -bold-italicpick a named style string, or false to disable that style
font-synthetic-stylecontrol 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 bold and italic does not disable bold-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.

FormMeaning
feat, +feat, feat on, feat=1enable
-feat, feat off, feat=0disable
feat=2, feat = 3, feat 4set 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.