Skip to main content
Ghostty Config includes comprehensive font settings and a font playground for testing how fonts will look in your terminal.

Font Settings Overview

Access font settings from the Fonts category in the navigation sidebar. Font settings are organized into several groups:
  • General Font Settings - Base size, thickening, and features
  • Font Families - Font families for different styles
  • Font Styles - Named styles for each family
  • Font Variations - Variable font settings
  • Advanced Font & Cell Settings - Fine-tuning options

The Font Playground

Access the Font Playground from the App section in the navigation sidebar.

Playground Features

The Font Playground lets you test fonts with realistic terminal output:
// From font-playground/+page.svelte
<div class="preview" style="
  font-family: {fontFamily}; 
  font-size: {fontSize + 'px'}; 
  font-style: {italic ? 'italic' : 'normal'}; 
  font-weight: {bold ? 700 : 400};
">
  <div class="row prompt">
    <span style="color: var(--config-palette-2);">john</span>
    <span style="color: var(--config-palette-6);">@</span>
    <span style="color: var(--config-palette-4);">doe-pc</span>
    <span style="color: var(--config-palette-1); font-weight: 700;">$</span>
    ls
  </div>
  <div class="row">-rwxr-xr-x 1 root <span style="color: var(--config-palette-3); font-weight: 700;">Documents</span></div>
  <div class="row">-rwxr-xr-x 1 root <span style="color: var(--config-palette-2); font-weight: 700;">Downloads</span></div>
  <div class="row">Icons:  Powerline</div>
</div>

Using the Playground

1

Open Font Playground

Navigate to App → Font Playground in the sidebar
2

Enter font name

Type the name of a font installed on your system in the Font family field
3

Adjust settings

Use the sliders and toggles to test different sizes, bold, and italic styles
4

Observe preview

The preview updates in real-time showing how the font renders with colors and symbols
The Font Playground only tests how fonts appear - it doesn’t modify your actual font settings. Use the Fonts settings page to configure your actual terminal fonts.

Configuring Font Families

Ghostty allows separate fonts for different text styles:

Main Font Family

// From settings.ts
{
  id: "fontFamily", 
  name: "Main font family", 
  type: "text", 
  value: ""
}
Leave empty to use Ghostty’s default font, or specify a font installed on your system:
# Example values:
font-family = JetBrains Mono
font-family = Iosevka
font-family = Fira Code

Style-Specific Families

Configure different fonts for bold, italic, and bold-italic:
// From settings.ts
{
  id: "fontFamilyBold", 
  name: "Font family for bold text", 
  type: "text", 
  value: ""
},
{
  id: "fontFamilyItalic", 
  name: "Font family for italic text", 
  type: "text", 
  value: ""
},
{
  id: "fontFamilyBoldItalic", 
  name: "Font family for bold italic text", 
  type: "text", 
  value: ""
}
Leave style-specific families empty to use variants of your main font family. Only set these if you want different fonts for different styles.

Font Size

Control the base font size for your terminal:
// From settings.ts
{
  id: "fontSize", 
  name: "Base font size", 
  type: "number", 
  value: 13, 
  min: 4, 
  max: 60, 
  step: 0.5, 
  range: true
}
The Font Playground includes the same control:
// From FontPreview.svelte
<Item name="Font size">
  <Number bind:value={fontSize} range={true} min={4} max={60} step={0.5} />
</Item>

Font Styles

Specify named styles for your fonts:
// From settings.ts
{
  id: "fontStyle", 
  name: "Main font style", 
  type: "text", 
  value: "default"
},
{
  id: "fontStyleBold", 
  name: "Font style for bold text", 
  type: "text", 
  value: "default"
},
{
  id: "fontStyleItalic", 
  name: "Font style for italic text", 
  type: "text", 
  value: "default"
},
{
  id: "fontStyleBoldItalic", 
  name: "Font style for bold italic text", 
  type: "text", 
  value: "default"
}

Using Named Styles

For fonts with multiple weights, specify the style name:
# Example: Using Iosevka Heavy
font-family = Iosevka
font-style = Heavy

# Example: Disabling italic
font-style-italic = false
Set a style to false to completely disable that variant and use the default style instead.

Font Features & Ligatures

Control OpenType font features:
// From settings.ts
{
  id: "fontFeature", 
  name: "Font ligature settings", 
  type: "text", 
  value: ""
}
Example configurations:
# Enable specific ligatures
font-feature = liga
font-feature = calt

# For Fira Code
font-feature = ss01  # Alternative ampersand
font-feature = ss02  # Greater than/less than
font-feature = ss03  # Arrow ligatures

Font Thickening (macOS)

Ghostty can artificially thicken fonts on macOS:
// From settings.ts
{
  id: "fontThicken", 
  name: "Thicken fonts", 
  type: "switch", 
  note: "This currently only affects macOS.",
  value: false
},
{
  id: "fontThickenStrength", 
  name: "Thicken strength", 
  type: "number", 
  value: 255, 
  min: 0, 
  max: 255, 
  step: 1, 
  range: true
}
Font thickening is useful for thin fonts that are hard to read. Start with the default strength of 255 and adjust if needed.

Variable Fonts

For variable fonts, use font variations instead of styles:
// From settings.ts
{
  id: "fontVariation", 
  name: "Main font variant", 
  type: "text", 
  value: ""
},
{
  id: "fontVariationBold", 
  name: "Font variant for bold text", 
  type: "text", 
  value: ""
}
// ... italic and bold-italic variants
Example usage:
# Variable font with custom weight
font-family = Inter
font-variation = wght=450
font-variation-bold = wght=700

Unicode Font Mapping

Map specific Unicode ranges to different fonts:
// From settings.ts
{
  id: "fontCodepointMap", 
  name: "Unicode-specific font mapping", 
  note: "",
  type: "text", 
  value: ""
}
Example:
# Use Noto Sans CJK for Chinese/Japanese/Korean
font-codepoint-map = U+4E00-9FFF="Noto Sans CJK"

# Use Noto Color Emoji for emoji
font-codepoint-map = U+1F300-1F9FF="Noto Color Emoji"

Advanced Font Settings

Cell Adjustments

Fine-tune cell dimensions and character positioning:
// From settings.ts
{
  id: "adjustCellWidth", 
  name: "Cell width adjustment", 
  type: "text", 
  value: ""
},
{
  id: "adjustCellHeight", 
  name: "Cell height adjustment", 
  type: "text", 
  value: ""
},
{
  id: "adjustFontBaseline", 
  name: "Font baseline adjustment", 
  type: "text", 
  value: ""
}
Example adjustments:
# Increase cell width by 2 pixels
adjust-cell-width = 2

# Decrease cell height by 1 pixel
adjust-cell-height = -1

# Adjust baseline by 10%
adjust-font-baseline = 10%
Advanced font settings have minimal validation and can make your terminal unusable. Only modify these if you understand what they do.

Decoration Adjustments

Customize underlines, strikethrough, and cursor:
// From settings.ts
{
  id: "adjustUnderlinePosition", 
  name: "Underline position adjustment", 
  type: "text", 
  value: ""
},
{
  id: "adjustUnderlineThickness", 
  name: "Underline thickness adjustment", 
  type: "text", 
  value: ""
},
{
  id: "adjustCursorThickness", 
  name: "Cursor thickness adjustment", 
  type: "text", 
  value: ""
}

Synthetic Styles

Control how Ghostty generates synthetic bold/italic:
// From settings.ts
{
  id: "fontSyntheticStyle", 
  name: "Synthetic styles", 
  note: "See the docs for more info.",
  type: "text", 
  value: "bold,italic,bold-italic"
}
Options:
  • bold - Allow synthetic bold
  • italic - Allow synthetic italic
  • bold-italic - Allow synthetic bold-italic
Synthetic styles are generated when a font doesn’t have native bold or italic variants. Most modern fonts include these variants, so synthetic rendering is rarely needed.

Alpha Blending

Control how font rendering blends with the background:
// From settings.ts
{
  id: "alphaBlending", 
  name: "Alpha blending colorspace", 
  type: "dropdown", 
  value: "native", 
  options: ["native", "linear", "linear-corrected"]
}

Testing Fonts in the Playground

The Font Playground provides realistic test content:
john@doe-pc$ ls
-rwxr-xr-x 1 root Documents
-rwxr-xr-x 1 root Downloads
-rwxr-xr-x 1 root Pictures

JetBrains Mono

Designed specifically for developers with excellent ligature support.
font-family = JetBrains Mono
font-size = 13

Iosevka

Highly customizable with condensed variants for dense code.
font-family = Iosevka
font-size = 14

Fira Code

Popular font with extensive programming ligatures.
font-family = Fira Code
font-feature = liga

Cascadia Code

Microsoft’s font for Windows Terminal with Powerline support.
font-family = Cascadia Code
font-size = 13

Exporting Font Settings

Font settings are exported in Ghostty’s config format:
# Generated config example
font-family = JetBrains Mono
font-size = 14
font-feature = liga
font-thicken = true
font-thicken-strength = 200

Best Practices

Use the Font Playground to test fonts before setting them as your main font family. Check that all glyphs render correctly.
Programming ligatures can improve code readability but may confuse some users. Test with real code before enabling.
Adjust font size based on your display DPI. High-DPI displays often need larger sizes.
For most fonts, leave font-style settings at “default” to use the font’s built-in variants.
If you work with non-Latin scripts, test that your chosen font supports those characters.

Build docs developers (and LLMs) love