#1347·FTXUI

Character width table is frozen at Unicode 13.0, so emoji added since then measure as 1 cell

Author: Psychlist1972Created Sep 4, 2026Updated Sep 4, 2026

Hi

I've been debugging some emoji rendering in the MIDI Console app I'm moving from C# and Spectre.Console over to C++, some other libraries, and FTXUI. (Really liking FTXUI, BTW)

Claude Summary of the issue:

g_full_width_characters in src/ftxui/screen/string.cpp is annotated "As of Unicode 13.0.0". Code points that became East_Asian_Width=Wide / Emoji_Presentation=Yes in Unicode 14.0 and later are not in it, so string_width() reports 1 while terminals render 2. In a table or menu this shifts the whole row one cell right.

Repro: ftxui::string_width("\U0001F6DC") ( WIRELESS, Unicode 15.0) returns 1, expected 2. The table skips from {0x1f6d5, 0x1f6d7} to {0x1f6eb, 0x1f6ec}.

Not limited to that character — the tail ranges {0x1fa70,0x1fa74}, {0x1fab0,0x1fab6}, {0x1fac0,0x1fac2}, {0x1fad0,0x1fad6} all appear truncated, and 1FAE0…/1FAF0… are absent entirely. Regenerating the table from a current UCD EastAsianWidth.txt would cover all of them.

Seen with FTXUI 7.0.0 on Windows Terminal. Related to #929, but that one is about U+FE0F width rather than the table's Unicode version.

Pete Microsoft