What
Every WorldAlphabets alphabet with multi-byte symbols (Arabic, Hebrew, Amharic, Urdu, …) renders a weighted tree after the colour-token fix (da2e558) but produces no output when steered — dasher_get_output_text stays empty forever. WA ASCII alphabets (English) output fine; legacy v5 multibyte alphabets (Russian) output fine.
Evidence (engine-level probes, no fonts involved)
Identical steering program (fixed coordinates, hold, 100–1000 frames, turbo constant-time convention that reliably yields output for other alphabets):
| Alphabet |
Output |
CSymbolNode::Do() calls |
| English with limited punctuation |
'I' |
fires |
| English (WorldAlphabets) |
'w' |
fires |
| Russian (v5, Cyrillic = multibyte) |
non-empty |
fires |
| Hebrew/Arabic/Amharic/Urdu (WA) |
0 bytes |
never fires |
engineError stays 0; no log messages; no crash.
CDasherModel::GetOffset() shows m_pLastOutput set (root path) but never advances — OutputTo(node) never receives an unseen node, so Do()/actions never run.
- Not geometry: swept x∈{40,100,700,760} and y∈{100..500} — no coordinate commits.
- Not RTL: Amharic (LTR) fails identically.
Pre-existing, not a #68 regression
Reproduced on pre-PR main (901e4d8, eager parsing) with the colour-fixed data — zero output there too. Nobody could see this before because these alphabets rendered invisible (#69 colour tokens) until da2e558.
Suspects
- The distinguishing parse shape is WA node elements whose multi-byte
label becomes both Display and Text (no text attr), combined with duplicate symbols (Hebrew: 27, Arabic: 36, Amharic: 282 — every WA multibyte file has dups; WA English has none). The commit path (Reparent_root/Render→OutputTo) appears to depend on something the duplicate/multibyte map breaks — likely interaction with CAlphabetMap lookups during root rebuild (RebuildFindFromOffset text→symbol round-trip).
- Probe binaries and methodology available;
DODUMP instrumentation point: CSymbolNode::Do() in AlphabetManager.cpp.
Impact
All WA-served RTL/Indic/Ethiopic/… languages are view-but-cannot-write. Combined with the 148-of-474 missing training corpora, the WA usability tail is: render ✓ (fixed), train (148 missing corpora), write ✗ (this issue).
What
Every WorldAlphabets alphabet with multi-byte symbols (Arabic, Hebrew, Amharic, Urdu, …) renders a weighted tree after the colour-token fix (da2e558) but produces no output when steered —
dasher_get_output_textstays empty forever. WA ASCII alphabets (English) output fine; legacy v5 multibyte alphabets (Russian) output fine.Evidence (engine-level probes, no fonts involved)
Identical steering program (fixed coordinates, hold, 100–1000 frames, turbo constant-time convention that reliably yields output for other alphabets):
CSymbolNode::Do()calls'I''w'engineErrorstays 0; no log messages; no crash.CDasherModel::GetOffset()showsm_pLastOutputset (root path) but never advances —OutputTo(node)never receives an unseen node, soDo()/actions never run.Pre-existing, not a #68 regression
Reproduced on pre-PR
main(901e4d8, eager parsing) with the colour-fixed data — zero output there too. Nobody could see this before because these alphabets rendered invisible (#69 colour tokens) until da2e558.Suspects
labelbecomes both Display and Text (notextattr), combined with duplicate symbols (Hebrew: 27, Arabic: 36, Amharic: 282 — every WA multibyte file has dups; WA English has none). The commit path (Reparent_root/Render→OutputTo) appears to depend on something the duplicate/multibyte map breaks — likely interaction withCAlphabetMaplookups during root rebuild (RebuildFindFromOffsettext→symbol round-trip).DODUMPinstrumentation point:CSymbolNode::Do()in AlphabetManager.cpp.Impact
All WA-served RTL/Indic/Ethiopic/… languages are view-but-cannot-write. Combined with the 148-of-474 missing training corpora, the WA usability tail is: render ✓ (fixed), train (148 missing corpora), write ✗ (this issue).