Question/discussion about JDK-8129582

Itai itaisha at
Wed Jan 4 17:19:41 UTC 2017

Recently JDK-8129582 [1] started really affecting me, with startup speed
and overall responsiveness becoming really bad.

Digging into it, I have found most time is wasted in
com.sun.javafx.text.GlyphLayout.layout (as represented by PangoGlyphLayout
on my Linux machine), which in turn is called
by com.sun.javafx.text.PrismTextLayout.shape, which has:

    if (run.isComplex()) {
            /* Use GlyphLayout to shape complex text */
            layout.layout(run, font, strike, chars);
    } else {
            if (layoutCache == null) {
             } else {

which to my very naive reading seems as if while non-complex (with all BiDi
text considered complex) glyph runs are cached, complex runs are never
cached, which forces re-calculation every time.

I'm trying to read and understand this part better, but could it be
possible that this is the issue? How feasible would it be to have a layout
cache for complex runs, or at least non-complex BiDi runs?



More information about the openjfx-dev mailing list