Appearance
Wide Char at Line Wrap
When a wide character (CJK or emoji) would begin in the last column of the line, it should wrap to the next line rather than being split across the boundary. The last column should be left blank.
This is where Unicode width meets terminal grid physics. A wide glyph cannot be split across two rows without corrupting both display and cursor accounting. Correct behavior leaves a spacer cell at the line end, wraps the glyph to the next row, and keeps subsequent cursor motion aligned with UAX #11 width expectations.
How this is testedautomated
Fill line to last column, write a wide character, verify it appears on the next line.
Fill line to last column, write a wide character, verify it appears on the next line.
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 11 of 14 backends (79%)
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 |
|---|---|---|---|
| Alacritty | 0.26.0 | ✓ yes | |
| vterm.js | 0.2.0 | ✓ yes | |
| xterm.js | 5.5.0 | ✓ yes | |
| vt100.js | 0.2.1 | ✗ no | Not in VT100/VT220 — ASCII only, no Unicode width |
| WezTerm | 0.1.0-fork.5 | ✗ no | Wide char at end of line not handled correctly in headless mode |