I want to iterate each character of a Unicode string, treating each surrogate pair and combining character sequence as a single unit (one grapheme).
You should be able to use the ICU BreakIterator for this (the character instance assuming it is feature-equivalent to the Java version).