On Fri, 31 May 2024 16:54:58 GMT, Andy Goryachev <ango...@openjdk.org> wrote:

>> The issue is specific to Mac. The glyph positions returned from native side 
>> for complex text is not handled in the text render logic. This issue is 
>> observed only when trailing spaces are present along with LTR text mixed 
>> with RTL text (Example: "Arabic: العربية").
>> 
>> Made changes in `getPosX` of `TextRun` class to handle negative values.
>> 
>> Tested the changes manually with the sample code present in the bug and 
>> using the MonkeyTester.
>
> modules/javafx.graphics/src/main/java/com/sun/javafx/text/TextRun.java line 
> 332:
> 
>> 330:                 return x;
>> 331:             }
>> 332:             int prevIdx = (glyphIndex - 1)<<1;
> 
> would it be possible to add a comment explaining why this code is doing what 
> it's doing?  specifically, the reason for the while() loop and Math.abs().  
> and perhaps mention that this happens on mac only.

I think if this is specific to mac, and doesn't occur on other platforms that 
the supplied `positions` may be incorrect by the underlying `*GlyphLayout` 
code.  Under Windows it will likely use the `DWGlyphLayout` to supply 
`positions`.  On Mac this will be `CTGlyphLayout`.

The more prudent course of action than seems to be to fix what is supplied by 
`CTGlyphLayout` instead of working around it in `TextRun`.

I haven't checked it that extensively yet, but I think `positions` is not 
supposed to contain negative `x` values at all when not in compact mode.

-------------

PR Review Comment: https://git.openjdk.org/jfx/pull/1468#discussion_r1623146989

Reply via email to