Examples/WideCharRepro/BUG_REPORT_TEMPLATE.md
The terminal incorrectly renders wide (fullwidth) Unicode characters, advancing the cursor by only 1 column instead of the required 2. This causes all subsequent content on the line to shift left, breaking grid alignment and causing display "tearing" in TUI applications.
git clone https://github.com/gui-cs/Terminal.Gui.git
cd Terminal.Gui/Examples/WideCharRepro
dotnet run
Or paste this minimal C# program (requires .NET 8+):
<details> <summary>Minimal repro (click to expand)</summary>using System.Text;
Console.OutputEncoding = Encoding.UTF8;
Console.WriteLine ("TEST: Emoji grid (each emoji = 2 columns)");
Console.WriteLine ("┌──┬──┬──┬──┬──┬──┬──┬──┐");
Console.WriteLine ("│😀│😁│😂│🤣│😄│😅│😆│😇│");
Console.WriteLine ("│──│──│──│──│──│──│──│──│");
Console.WriteLine ("│🐶│🐱│🐭│🐹│🐰│🦊│🐻│🐼│");
Console.WriteLine ("└──┴──┴──┴──┴──┴──┴──┴──┘");
Console.WriteLine ();
Console.WriteLine ("TEST: Column alignment (X should be at column 20)");
Console.WriteLine ("01234567890123456789X <- 20 narrow (20×1=20)");
Console.WriteLine ("😀😁😂😃😄😅😆😇😈😉X <- 10 emoji (10×2=20)");
Console.WriteLine ("你好世界测试宽字符验X <- 10 CJK (10×2=20)");
Each wide character (emoji, CJK ideograph, fullwidth form) should advance the cursor by 2 columns. Grid separators (│) should be vertically aligned:
┌──┬──┬──┬──┬──┬──┬──┬──┐
│😀│😁│😂│🤣│😄│😅│😆│😇│
│──│──│──│──│──│──│──│──│
│🐶│🐱│🐭│🐹│🐰│🦊│🐻│🐼│
└──┴──┴──┴──┴──┴──┴──┴──┘
The X markers should vertically align at column 20:
01234567890123456789X
😀😁😂😃😄😅😆😇😈😉X
你好世界测试宽字符验X
Wide characters advance the cursor by only 1 column. Grids misalign and text overlaps:
┌──┬──┬──┬──┬──┬──┬──┬──┐
│😀│😁│😂│🤣│😄│😅│😆│😇│ <- shifted left
│──│──│──│──│──│──│──│──│
│🐶│🐱│🐭│🐹│🐰│🦊│🐻│🐼│ <- shifted left
└──┴──┴──┴──┴──┴──┴──┴──┘
| Terminal | Version | OS | Test 1 (Emoji) | Test 2 (CJK) | Test 3 (Mixed) | Test 4 (Grid) | Test 5 (Align) | Status |
|---|---|---|---|---|---|---|---|---|
| Alacritty | 0.13+ | cross | untested | |||||
| Ghostty | — | macOS | ✅ | ✅ | ✅ | ✅ | ✅ | PASS |
| GitHub Copilot (terminal) | — | macOS | ❌ | ❌ | ❌ | ❌ | ❌ | FAIL |
| GitHub Copilot (terminal) | — | Windows | ❌ | ❌ | ❌ | ❌ | ❌ | FAIL |
| GNOME Terminal | 3.x | Linux | untested | |||||
| iTerm2 | 3.5+ | macOS | ✅ | ✅ | ✅ | ✅ | ✅ | PASS |
| Kitty | 0.35+ | macOS | ✅ | ✅ | ✅ | ✅ | ✅ | PASS |
| Terminal.app | — | macOS | ✅ | ✅ | ✅ | ✅ | ✅ | PASS |
| Visual Studio 2026 (terminal) | — | Windows | ✅ | ✅ | ✅ | ✅ | ✅ | PASS |
| VS Code Insiders (terminal) | 1.x | Windows | ✅ | ✅ | ✅ | ✅ | ✅ | PASS |
| WezTerm | — | cross | untested | |||||
| Windows Terminal | 1.22+ | Windows | ✅ | ✅ | ✅ | ✅ | ✅ | PASS |
To contributors: please fill in your terminal's results and submit a PR or comment.
East_Asian_Width = W (Wide) or F (Fullwidth)This bug breaks any TUI application that renders wide characters in a grid or alongside narrow characters. Affected applications include: