getPreviousGraphemeOffset static method
Calculates the previous grapheme cluster offset in a string.
Returns the start offset of the grapheme cluster that ends at
currentOffset, handling surrogate pairs, CJK variation selectors,
combining marks, and ZWJ sequences correctly.
Implementation
static int getPreviousGraphemeOffset(String s, int currentOffset) {
if (currentOffset <= 0) return 0;
if (currentOffset > s.length) return s.length;
int pos = 0;
for (final grapheme in s.characters) {
final nextPos = pos + grapheme.length;
if (nextPos >= currentOffset) {
return pos;
}
pos = nextPos;
}
return currentOffset - 1;
}