Skip to content

Regional indicator flags (2 cols)

Category: text · Baseline: unicode · Tags: Unicode · Specification ↗

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.

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

TerminalVersionSupportNotes
iTerm23.6.9✓ yes
Ghostty1.3.1✓ yes
VS Code✓ yes
Warp✓ yes
Kitty0.46.2✓ yes
Cursor✓ yes
Terminal.app✓ yes

Headless Backends

Parser correctness only — a means the parser accepts the sequence.

BackendVersionSupportNotes
vterm.js0.2.0✓ yes
WezTerm0.1.0-fork.5✓ yes
Alacritty0.26.0✗ noEmoji flag sequences not rendered as wide characters
vt100.js0.2.1✗ noEmoji flag sequences not rendered as wide characters
xterm.js5.5.0✗ noEmoji flag sequences not rendered as wide characters