Skip to content

Font ligatures

Category: extensions · Baseline: rich · Tags: Xterm Extensions · Specification ↗

Font ligatures are font-level glyph substitutions that render specific character sequences as a single combined glyph — for example != rendered as ≠, => as ⇒, -> as →, or <= as ≤. Programming-oriented fonts like Fira Code, JetBrains Mono, Iosevka, Cascadia Code, and Monaspace ship with large ligature tables targeting common operators and symbols in popular languages. Ligature support is a terminal renderer feature, not an escape sequence protocol: the terminal decides whether to honor the calt / liga / dlig OpenType tables when shaping runs of monospaced cells. Terminals that opt in must also handle cursor positioning carefully — the cursor should still land on logical character boundaries even though multiple cells display as one glyph, and selections must split ligatures when partially covered. Known support: Kitty, WezTerm, Konsole, iTerm2 (opt-in), Alacritty (opt-in, limited), Ghostty, foot, and VTE-based terminals. Not supported by xterm, Terminal.app, or Windows Console Host. Because this is a rendering decision rather than an escape-sequence feature, it cannot be detected via any query protocol — only by visually inspecting output with a ligature-enabled font.
How this is testedunprobed
Manual verification required — no automated probe available.

The same probe runs against headless backends (via Termless) and real terminal apps (via a daemon launched in each terminal). This lets us distinguish parser correctness from rendering correctness.

Supported by 0 of 14 backends (0%)

Terminal Applications

TerminalVersionSupportNotes
iTerm23.6.9? unknown
Ghostty1.3.1? unknown
Terminal.app2.15? unknown
Kitty0.46.2? unknown
VS Code1.113.0? unknown
Warp0.2026.03.18.08.24.03? unknown
Cursor2.6.21? unknown

Headless Backends

Parser correctness only — a means the parser accepts the sequence.

BackendVersionSupportNotes
Alacritty0.26.0? unknown
vt100.js0.2.1? unknown
vterm0.2.0? unknown
WezTerm0.1.0-fork.5? unknown
xterm.js5.5.0? unknown