orderVisually function
Implementation
List<GlyphRun> orderVisually(List<GlyphRun> glyphRuns) {
final List<GlyphRun> orderedRuns = [];
int maxLevel = 0;
for (final run in glyphRuns) {
if (run.level > maxLevel) {
maxLevel = run.level;
}
orderedRuns.add(run);
}
for (int newLevel = maxLevel; newLevel > 0; newLevel--) {
for (int start = orderedRuns.length - 1; start >= 0; start--) {
if (orderedRuns[start].level >= newLevel) {
int count = 1;
for (; start > 0 && orderedRuns[start - 1].level >= newLevel; start--) {
count++;
}
_reverseRuns(orderedRuns, start, count);
}
}
}
return orderedRuns;
}