Skip to content

Grapheme cluster mode (2027)

Feature ID: dec-mode-2027-grapheme-clusters. Type: feature.

Manual tests: just probe dec-mode-2027-grapheme-clusters opens this feature's scenarios.

Browse under Text, emoji and rendering / Emoji and Unicode widths. A scenario may exercise related features; its existence does not establish support.

Sequence: CSI ?2027 h / l

Terminal compatibility

Missing records mean unknown. as-of identifies the assessed version or revision, not the first release to support a feature.

TerminalSupportAs ofNotes and evidence
AlacrittyUnknownImported · unverifiedUnversioned?; Not implemented (`?` for issue status)

import

Apple TerminalUnknownUnversionedNo assessment recorded.
ConPTY (conhost)UnknownUnversionedNo assessment recorded.
ContourSupportedImported · unverifiedUnversionedYes | Also recorded: Yes ([Contour, unicode-core mode](https://github.com/contour-terminal/contour/blob/master/docs/vt-extensions/index.md).); Origin of the mode

import import

DomTermUnknownUnversionedNo assessment recorded.
footSupportedImported · unverifiedUnversionedYes | Also recorded: Yes ([foot changelog](https://codeberg.org/dnkl/foot/src/branch/master/CHANGELOG.md).); Since grapheme shaping was enabled by default

import import

GhosttySupportedImported · unverifiedUnversionedYes | Also recorded: Yes ([Ghostty VT reference, mode 2027](https://ghostty.org/docs/vt/csi/decset).); Listed in the VT reference

import import

iTerm2UnknownUnversionedNo assessment recorded.
kittyUnsupportedImported · unverifiedUnversionedNo ([kitty text sizing protocol](https://sw.kovidgoyal.net/kitty/text-sizing-protocol/), introduction.); Clusters unconditionally; the author rejects the mode and relies on the [text sizing protocol](sizing.md)

import

KonsoleUnknownUnversionedNo assessment recorded.
minttyUnknownUnversionedNo assessment recorded.
mltermUnknownUnversionedNo assessment recorded.
PuTTYUnknownUnversionedNo assessment recorded.
RevenantUnknownUnversionedNo assessment recorded.
RLoginUnknownUnversionedNo assessment recorded.
stUnknownUnversionedNo assessment recorded.
tmuxUnknownImported · unverifiedUnversioned?; Does not pass through; own width tables

import

rxvt-unicodeUnknownUnversionedNo assessment recorded.
VTEUnknownUnversionedNo assessment recorded.
waystUnknownUnversionedNo assessment recorded.
WezTermPartialImported · unverifiedUnversionedPartial ([WezTerm escape sequences](https://wezterm.org/escape-sequences.html).); Clusters unconditionally; mode reported as `?`

import

Windows TerminalUnknownImported · unverifiedUnversioned?; Issue tracked upstream

import

xtermUnknownImported · unverifiedUnversioned?; Not listed in ctlseqs ([XTerm Control Sequences](https://invisible-island.net/xterm/ctlseqs/ctlseqs.html).)

import

xterm.jsUnknownImported · unverifiedUnversioned?; Per-code-point storage

import