decompose function
The simplest non-recursive decomposition algorithm.
For example, it can be used to decompose characters with a specified font variant.
Implementation
String decompose(String source, List<Decomposer> decomposers) {
final list = <int>[];
final runes = source.runes;
for (final rune in runes) {
var done = false;
for (var i = 0; i < decomposers.length; i++) {
final decomposer = decomposers[i];
final characters = decomposer.decompose(rune);
if (characters != null) {
done = true;
list.addAll(characters);
break;
}
}
if (!done) {
list.add(rune);
}
}
return String.fromCharCodes(list);
}