Surrogate & grapheme
JS
open
Slate splits Indic conjunct clusters (UAX #29 GB9c) across graphemes
Treat Indic conjunct clusters as a single grapheme (UAX #29 GB9c)
slate · ianstormtaylor/slate
Symptom
Slate rich-text editor does not implement Unicode UAX #29 GB9c rule, splitting Indic conjunct clusters (consonant + virama + consonant sequences) across grapheme boundaries, causing incorrect cursor positioning and deletion in Hindi, Bengali, Tamil, etc.
Minimal repro
Type a conjunct consonant in Hindi (e.g., 'क्ष') in Slate; press Backspace; only one codepoint is deleted instead of the full cluster.
Fix
Apply Unicode GB9c rule: treat <Indic_Conjunct_Break=Linker> sequences as a single grapheme cluster.