Font Families
Basic Font Setup
Font Size Details
Linux/GTK: Font size is scaled by display-wide and text-specific scaling factors (e.g., GNOME display scale and large text settings).
Does reloading config update font size?
Does reloading config update font size?
Reloading affects terminals that haven’t manually adjusted their font size (via increase/decrease font size actions). Terminals with manual adjustments retain their size.
Font Fallbacks
Specify multiple fonts for missing glyphs:Fallback fonts are used in order when glyphs are missing from the primary font.
Emoji Fonts
- macOS
- Linux
Ghostty always uses Apple Color Emoji by default. Override by specifying an emoji font:
Resetting Font List
Clear previous fonts before setting new ones:CLI arguments automatically clear config file fonts, so you don’t need
--font-family="" on the command line.Font Styles
Style-Specific Fonts
Set different fonts for bold, italic, and bold-italic:What if I don't set style fonts?
What if I don't set style fonts?
Ghostty searches the regular font family for stylistic variants. If not found, it uses the regular style or synthesizes the style.
What if a style font can't be found?
What if a style font can't be found?
If you specify
font-family-bold = FooBar but FooBar doesn’t exist, Ghostty falls back to the regular font-family for bold text.Named Font Styles
Use specific font style names:Style names come from the font itself. For example, “Iosevka Heavy” has a style named “Heavy”.
Disabling Font Styles
Disable specific styles entirely:Synthetic Styles
Control synthetic (generated) font styles:What are synthetic styles?
What are synthetic styles?
Ghostty can synthesize styles if the font lacks them:
- Bold: Draws an outline around glyphs
- Italic: Applies a slant to glyphs
- Bold-Italic: Both outline and slant
Font Features
Enable or disable OpenType font features:Feature Syntax
Multiple syntax forms are supported:How do I find what features my font has?
How do I find what features my font has?
Use a font inspection tool like fontdrop.info to explore available OpenType features.
Variable Fonts
Configure variable font axes:Variable fonts usually have filenames ending in
-VF.ttf or -VF.otf.Common Variable Font Axes
| Axis | Description | Example |
|---|---|---|
wght | Weight | wght=400 (regular) to wght=700 (bold) |
slnt | Slant | slnt=-10 (italic slant) |
ital | Italic | ital=1 (italic on) |
opsz | Optical size | opsz=12 (for 12pt display) |
wdth | Width | wdth=100 (normal) to wdth=125 (wide) |
GRAD | Gradient | Font-specific |
What happens with invalid variation values?
What happens with invalid variation values?
Invalid axis IDs or out-of-range values are usually ignored. Check your font’s documentation for supported ranges.
Font Rendering
FreeType Options (Linux)
Configure FreeType font rendering:- Linux
- macOS
FreeType flags only affect Linux builds using FreeType for rendering.
Font Thickening (macOS)
Font thickening is currently only supported on macOS.
Font Metrics Adjustments
Fine-tune font rendering metrics:Available Adjustments
Cell Adjustments
Cell Adjustments
adjust-cell-width: Horizontal cell sizeadjust-cell-height: Vertical cell size (font is centered)
Line Decorations
Line Decorations
adjust-underline-position: Distance from top to underlineadjust-underline-thickness: Underline thicknessadjust-strikethrough-position: Distance from top to strikethroughadjust-strikethrough-thickness: Strikethrough thicknessadjust-overline-position: Distance from top to overlineadjust-overline-thickness: Overline thickness
Other Adjustments
Other Adjustments
adjust-font-baseline: Distance from bottom to baseline (increase = move up)adjust-cursor-thickness: Bar and outlined rect cursor thicknessadjust-cursor-height: Cursor height (all types)adjust-box-thickness: Box drawing character thicknessadjust-icon-height: Maximum height for Nerd Font icons (since 1.2.0)
Codepoint Mapping
Force specific Unicode ranges to use specific fonts:Changing codepoint mapping at runtime only affects new terminals (new windows, tabs, etc.).
Why would I use codepoint mapping?
Why would I use codepoint mapping?
Useful for:
- Special symbols that render better in specific fonts
- Box drawing characters
- Powerline symbols
- Icon fonts (Nerd Fonts)
- Emoji control
Font Shaping
Control when font shaping runs are broken:What are shaping runs?
What are shaping runs?
A “run” is contiguous text shaped together to form ligatures and other features. Breaking runs prevents ligatures from forming.Breaking under the cursor helps see individual characters during text editing.
Font shaping break is available since version 1.2.0.
Grapheme Width
Control how grapheme cluster width is calculated:Which method should I use?
Which method should I use?
- unicode: Correct width for emoji, non-English characters, etc. Some legacy programs may have cursor-desync issues.
- legacy: Maximum compatibility with old programs. May display some graphemes incorrectly.
Font Examples
Minimal Setup
With Ligatures Disabled
Variable Font Setup
Multi-Font Setup
Resources
List Fonts
Run
ghostty +list-fonts to see available fontsFont Drop
Inspect OpenType features in your fonts
Nerd Fonts
Icon fonts for terminals
Google Fonts
Free font repository