private static void sortRow(List<GlyphRun> row) {
        boolean allRTL = true;
        for (GlyphRun run : row)  {
            if (run.unicodeString.isBlank()) {
                // ignore whitespace for all RTL check
                continue;
            }
            if (run.direction == GlyphRun.DIRECTION.LTR) {
                allRTL = false;
                break;
            }
        }
        if (allRTL) {
            // If all the text in a row is RTL then sort it in reverse
            java.util.Collections.sort(row, RTL_SORTER);
        } else {
            // Otherwise sort it from left to right
            java.util.Collections.sort(row, LTR_SORTER);
        }
    }
Handles an individual page.  For now, this marks up
canvas entities in a &lt;div&gt; tag.  Based on the spec,
it currently relies on order within the xml for order of output
of text to xhtml.  We could do more complex processing of coordinates
for bidi-languages, but the spec implies that we should be able
to rely on storage order.
<p/>
As with our PDFParser, this currently dumps urls at the bottom of the page
and does not attempt to calculate the correct anchor text.
<p/>
TODO: integrate table markup
tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/xps/XPSPageContentHandler.java