Appearance
Regional indicator flags (2 cols)
Regional Indicator symbols are paired to form flag emoji. For example, 🇺🇸 (US flag) is the sequence U+1F1FA U+1F1F8. A terminal that handles these correctly renders the pair as a single 2-column wide flag glyph.
Flag emoji are not single code points; they are pairs of Regional Indicator symbols interpreted as one grapheme cluster. Terminals need both Unicode segmentation and width logic to keep the cursor aligned. Incorrect handling commonly shows two letter-like glyphs, a four-column result, or cursor drift after the flag.
How this is testedautomated
Write a regional indicator pair (e.g., U+1F1FA U+1F1F8 for US flag), verify it renders as a single 2-column glyph.
Write a regional indicator pair (e.g., U+1F1FA U+1F1F8 for US flag), verify it renders as a single 2-column glyph.
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.
Analysis2026-05-17
Supported by 9 of 12 terminals (75%). Not supported by: vt100.js, Alacritty, xterm.js. Part of the Unicode baseline. Notes: vt100.js: Emoji flag sequences not rendered as wide characters; Alacritty: Emoji flag sequences not rendered as wide characters; xterm.js: Emoji flag sequences not rendered as wide characters.
Supported by 10 of 14 backends (71%)
Terminal Applications
| Terminal | Version | Support | Notes |
|---|---|---|---|
| iTerm2 | 3.6.9 | ✓ yes | |
| Ghostty | 1.3.1 | ✓ yes | |
| VS Code | ✓ yes | ||
| Warp | ✓ yes | ||
| Kitty | 0.46.2 | ✓ yes | |
| Cursor | ✓ yes | ||
| Terminal.app | ✓ yes |
Headless Backends
Parser correctness only — a ✓ means the parser accepts the sequence.
| Backend | Version | Support | Notes |
|---|---|---|---|
| vterm.js | 0.2.0 | ✓ yes | |
| WezTerm | 0.1.0-fork.5 | ✓ yes | |
| Alacritty | 0.26.0 | ✗ no | Emoji flag sequences not rendered as wide characters |
| vt100.js | 0.2.1 | ✗ no | Emoji flag sequences not rendered as wide characters |
| xterm.js | 5.5.0 | ✗ no | Emoji flag sequences not rendered as wide characters |