The Initials look took the first two letters of the name, so "Eddie Smith"
showed ED. It now takes the first letter of the first word and of the last
word: ES, "john paul jones" JJ, "Eddie-Base" EB, "kd2abc_mobile" KM.
- Words break on whitespace and the separators node names use
(- _ . / | , ; : + &); a combining accent is not a break.
- A word with no letter the font can draw (an emoji on its own) does not
count. A name left with one word keeps the first two letters, which also
covers scripts written without spaces.
- The #674 rules stay: undrawable accents fall back to the plain letter,
"?" when there is nothing to draw.
test/test_avatar_text.cpp: the four expectations the rule changes, and the
#785 cases.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01He9DHDrX4s3uz37C3QzfdU
A name that opens with emoji, such as a flag and an island, drew an empty
avatar. The chat icon taken from the first emoji in a name (#640) took the
first code point with ANY row in the emoji table, and the table maps the
invisible joiners (U+200D, the U+FE0E/FE0F variation selectors) to an empty
2 x 2 image so text never shows them. The island's U+FE0F won, and the icon
was that empty image. A ZWJ sequence such as man + laptop did the same
through its U+200D.
- The emoji pick skips the empty joiner rows; the real emoji after them
still becomes the icon. A picked chat icon that is a joiner, or a text
symbol the font cannot draw, keeps the plain avatar instead of a blank.
- Initials take whole code points and only letters or digits: emoji,
flags, symbols and combining accents are skipped, so the flag name shows
"TR" instead of two flag halves, "ana" with a tilde shows its capital. A
letter the font only has as the '*' stand-in becomes its plain letter, or
the next letter; "?" when the name has none, never blank.
- The logic lives in src/ui-touch/AvatarText.h (pure) with a host test
(test/test_avatar_text.cpp) that first reproduces the blank pick with the
old rule. The section-label uppercase table moved there unchanged.
- web demo backend: WADA_DEMO_CONTACTS="a|b|..." adds contacts for a
scripted headless run.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>