RFR: 8302797: ArrayIndexOutOfBoundsException in TextRun.getWrapIndex()
Andy Goryachev
angorya at openjdk.org
Tue Mar 7 20:32:09 UTC 2023
On Tue, 7 Mar 2023 19:54:15 GMT, Phil Race <prr at openjdk.org> wrote:
> This fixes an the AIOOBE when finding a line break point in RTL laid out glyphs.
> The comment in the bug report explains how we can end up trying to find an unachievable break point and yet there's no "stop" on the search when we've run out of glyphs so hence the exception.
>
> The fix uses a different method to choose a break point.
>
> A system test has been supplied which will fail on macOS (even with standard macOS fonts, not just the Noto Sans Arabic) unless the fix is applied.
Changes requested by angorya (Committer).
The fix introduces another problem, affecting the wrapping of RTL text. To see the issue, use a TextFlow page in the monkey tester with a RTL text (or simply place a TextFlow in a SplitPane and reduce the width of the TextFlow.
LTR script seems unaffected.
master branch - wrapping is correct:

the fix branch - wrapping leaves one character per line:

modules/javafx.graphics/src/main/java/com/sun/javafx/text/TextRun.java line 288:
> 286: */
> 287: /* Not need to check for compact as bidi disables the simple case */
> 288: for (int gi = glyphCount; gi <= 0; gi--) {
should we also correct the comment on line 288?
-------------
PR: https://git.openjdk.org/jfx/pull/1055
More information about the openjfx-dev
mailing list