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
Specification and related documentation¶
- csi/modes.md
- text/graphemes.md
- Terminal working group specifications
terminal-wg - Unicode UAX #29: Text Segmentation
unicode-uax-29
Terminal compatibility¶
Missing records mean unknown. as-of identifies the assessed version or revision, not the first release to support a feature.
| Terminal | Support | As of | Notes and evidence |
|---|---|---|---|
| Alacritty | UnknownImported · unverified | Unversioned | ?; Not implemented (`?` for issue status) |
| Apple Terminal | Unknown | Unversioned | No assessment recorded. |
| ConPTY (conhost) | Unknown | Unversioned | No assessment recorded. |
| Contour | SupportedImported · unverified | Unversioned | Yes | Also recorded: Yes ([Contour, unicode-core mode](https://github.com/contour-terminal/contour/blob/master/docs/vt-extensions/index.md).); Origin of the mode |
| DomTerm | Unknown | Unversioned | No assessment recorded. |
| foot | SupportedImported · unverified | Unversioned | Yes | Also recorded: Yes ([foot changelog](https://codeberg.org/dnkl/foot/src/branch/master/CHANGELOG.md).); Since grapheme shaping was enabled by default |
| Ghostty | SupportedImported · unverified | Unversioned | Yes | Also recorded: Yes ([Ghostty VT reference, mode 2027](https://ghostty.org/docs/vt/csi/decset).); Listed in the VT reference |
| iTerm2 | Unknown | Unversioned | No assessment recorded. |
| kitty | UnsupportedImported · unverified | Unversioned | No ([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) |
| Konsole | Unknown | Unversioned | No assessment recorded. |
| mintty | Unknown | Unversioned | No assessment recorded. |
| mlterm | Unknown | Unversioned | No assessment recorded. |
| PuTTY | Unknown | Unversioned | No assessment recorded. |
| Revenant | Unknown | Unversioned | No assessment recorded. |
| RLogin | Unknown | Unversioned | No assessment recorded. |
| st | Unknown | Unversioned | No assessment recorded. |
| tmux | UnknownImported · unverified | Unversioned | ?; Does not pass through; own width tables |
| rxvt-unicode | Unknown | Unversioned | No assessment recorded. |
| VTE | Unknown | Unversioned | No assessment recorded. |
| wayst | Unknown | Unversioned | No assessment recorded. |
| WezTerm | PartialImported · unverified | Unversioned | Partial ([WezTerm escape sequences](https://wezterm.org/escape-sequences.html).); Clusters unconditionally; mode reported as `?` |
| Windows Terminal | UnknownImported · unverified | Unversioned | ?; Issue tracked upstream |
| xterm | UnknownImported · unverified | Unversioned | ?; Not listed in ctlseqs ([XTerm Control Sequences](https://invisible-island.net/xterm/ctlseqs/ctlseqs.html).) |
| xterm.js | UnknownImported · unverified | Unversioned | ?; Per-code-point storage |