Skip to main content

Terminal Font Capability Matrix (Tessera V1)

This matrix covers whether a TUI app can change terminal font family/size through output sequences. Scope is runtime behavior from app output, not manual user settings.

Matrix

TerminalFamily from TUI outputSize from TUI outputMechanismNotes
xtermPartialPartialOSC 50 ("Set Font to Pt"), subject to allowFontOpsLegacy/xterm-specific; may be disabled by terminal policy.
iTerm2IndirectIndirectOSC 1337;SetProfile=... (switch profile)Font changes come from selected profile settings; iTerm2 docs note legacy OSC 50 moved to 1337.
KittyNot first-classYeskitty remote control kitten @ set-font-sizeKitty-specific control path; requires kitty protocol/remote-control usage.
WezTermNo (via generic VT output)No (via generic VT output)Config/Lua (font, font_size, window:set_config_overrides)Use config/runtime API, not portable OSC font control.
GhosttyNoNo (via generic VT output)Config (font-family, font-size) and local keybind actionsVT reference does not define OSC font-family/font-size control for app output.
Windows TerminalNo (VT)No (VT)settings.json profile (font.face, font.size)Profile/config driven; not exposed as VT font sequence.
Windows Console (conhost)No (VT)No (VT)Host settings / Win32 APIsConsole VT sequence docs do not define font-family/font-size OSC control.

Tessera Recommendations

  • Keep ScreenOptions.FontSpec explicitly best-effort and optional.
  • Do not treat font requests as cross-terminal contract; treat them as advisory.
  • Emit font request only on change/startup, never per frame.
  • Keep sanitization and no forced restore behavior (current Tessera policy).
  • For predictable typography, recommend profile/config setup in app docs instead of runtime font mutation.

Official Sources