Repository navigation
v1.3.0 - UAX #29 Grapheme Cluster Support
What's New
UAX #29 Grapheme Cluster Segmentation
This release adds full Unicode grapheme cluster support, enabling proper cursor movement and text segmentation for:
- Emoji sequences: π¨βπ©βπ§ (family), ππ» (skin tones), π³οΈβπ (ZWJ sequences)
- Combining marks: Γ© (e + acute), Γ₯Μ (a + ring + macron)
- Flag sequences: π¨π¦ π―π΅ (regional indicators)
- Hangul: κ° (precomposed) and κ° (jamo sequences)
- Indic scripts: Hindi/Devanagari conjuncts like ΰ€ΰ₯ΰ€·
Highlights
- β 100% pass rate on official Unicode GraphemeBreakTest.txt (766 test cases)
- Implements all break rules: GB3-GB13, GB999
- Includes GB9c for Indic conjunct sequences (new in Unicode 15.1)
- Library size: ~18KB compiled (still lightweight!)
API
// Navigate by grapheme cluster (what users perceive as "characters")
int utflite_next_grapheme(const char *text, int length, int offset);
int utflite_prev_grapheme(const char *text, int offset);Data Tables Added
- GCB (Grapheme Cluster Break) properties: 557 ranges (~6.7KB)
- InCB (Indic Conjunct Break) Linkers: 43 codepoints
- InCB Consonants: 145 ranges (~1.2KB)
Full Changelog: 92d6485...v1.3.0