Skip to content

WA multibyte alphabets render but never commit output (no text produced when steering) #70

Description

@willwade

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).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions