Character boundary analysis in `java.text.BreakIterator` now conforms to Extended Grapheme Clusters breaks defined in <a href="https://www.unicode.org/reports/tr29/#Grapheme_Cluster_Boundaries">Unicode Consortium's Standard Annex #29</a>. This change will introduce intentional behavioral changes because the old implementation simply breaks at the code point boundaries for the vast majority of characters. For example, this is a String that contains the US flag and a grapheme for a 4-member-family.
```
"πΊπΈπ¨βπ©βπ§βπ¦"
```
This String will be broken into two graphemes with the new implementation:
```
"πΊπΈ", "π¨βπ©βπ§βπ¦"
```
whereas the old implementation simply breaks at the code point boundaries:
```
"πΊ", "πΈ", "π¨", "(zwj)", "π©", "(zwj)", "π§", "(zwj)"β, "π¦"
```
where (zwj) denotes ZERO WIDTH JOINER (U+200D).