transvi fixes: 1. qu-/gi- onset tone placement. The u after q, and the i after g when a vowel follows, are onset glides rather than the rime nucleus, so the tone must skip them: qua -> quá (was qúa), gia -> giá. The onset was previously passed straight through to the app, so transvi never saw it and toned the glide. Keep the onset in the preedit by adding qu-/gi- clusters to telex.map (mktelex.py onsets(), appended additively to the curated map), and add onsetglide() so transvi skips the glide. gi- with no following vowel keeps i as the nucleus (gì, gìn). 2. A tone key on a vowel-less preedit (e.g. "đ" from dd) now commits the preedit and lets the tone key pass through (eat=0), matching the engine commit-on-passthrough invariant, instead of eating it into the commit. Verified against the running engine: qua/quan/quay/quê/quên/quyển, gia/già/giàu/giữ/giúp/giống, gì/gìn, dd+s; unchanged mua->mùa, của, lúa; all non-qu/gi words byte-identical to before. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
3.9 KiB
3.9 KiB