Skip to content

Text sizing in terminal interfaces ​

This catalog surveys native text sizing from wire encoding through application layout and terminal execution. It informs Sparkles without declaring an accepted API or claiming that protocol support has been implemented.

This survey answers five questions:

  1. What do size, explicit width, fractional scale, and occupied cells mean? See concepts and Kitty.
  2. Which receivers execute the protocol? See Kitty, foot, and Ghostty.
  3. How do libraries measure, wrap, negotiate, and retain sized text? See wcwidth, Blessed, libvaxis, and OpenTUI.
  4. How do applications turn Markdown or shaped text into terminal output? See presenterm, mdfried, and osc66.
  5. What must change in Sparkles, and how could correctness be demonstrated? See the baseline, proposal, and validation ledger.

Last reviewed: September 14, 2026

Master catalog ​

These are inspected local snapshots, not claims about current upstream tips. Each deep-dive records the complete revision, license, source quotations, and evidence limitations. Source inspection is not equivalent to executing tests.

SubjectCategoryObserved sizing boundaryLink
KittyTerminal and protocolExecutes rectangular multicells, fractions, editing and reflowStudy
GhosttyTerminal / VT libraryParses OSC 66; execution remains unimplemented in both inspected revisionsStudy
footTerminalExecutes explicit width; scaling deliberately out of scopeStudy
libvaxisTUI libraryEmits width, integer scale and fractions; retained-state risksStudy
OpenTUITUI libraryEmits explicit width; detects scale without scaled widget layoutStudy
BlessedPython terminal libraryConstructs sized text and probes support; validation/fallback gapsStudy
wcwidthPython text libraryParses, measures and extracts payloads; clipping/wrapping limitationsStudy
presentermMarkdown presentationCapability-normalized integer-sized text layoutStudy
osc66Shaping CLIFont-derived explicit width, not enlarged textStudy
mdfriedMarkdown viewerNative sized, rasterized, and plain heading pathsStudy

Taxonomy ​

By responsibility ​

ResponsibilitySubjects
Define and execute terminal semanticsKitty, foot, Ghostty
Parse or construct text-bearing sequenceswcwidth, Blessed
Retain and diff a terminal picturelibvaxis, OpenTUI
Choose document typographypresenterm, mdfried
Derive allocation from a chosen fontosc66

By geometry ​

Geometry modelEvidence
Rectangular object ownershipKitty
Horizontal explicit-width objectfoot
Ordinary wide-grapheme retained spansOpenTUI
Scaled placement with incomplete ownershiplibvaxis, mdfried
Height-aware sequential text flowpresenterm
Scalar horizontal measurementwcwidth, Blessed

Milestones ​

Dates describe the cited event, not when every downstream acquired the feature.

DateEventEvidence
February 6, 2025foot merges width-only OSC 66foot upstream history
March 8, 2025Kitty 0.40 introduces multiple-sized textKitty changelog
January 15, 2026Ghostty lands OSC 66 parsing, not executionGhostty introduction commit
February 2, 2026OpenTUI fixes force-off still issuing probesOpenTUI upstream history
June 12, 2026foot fixes empty-payload out-of-bounds accessfoot safety evidence
August 23, 2026OpenTUI fixes cursor-report attributionOpenTUI upstream history
September 14, 2026Survey confirms Ghostty still lacks executionGhostty snapshot

Reading paths ​

Sources ​