RFR: JDK-8314215 Trailing Spaces before Line Breaks Affect the Center Alignment of Text [v10]
John Hendrikx
jhendrikx at openjdk.org
Wed Feb 7 23:30:59 UTC 2024
On Wed, 7 Feb 2024 15:57:35 GMT, John Hendrikx <jhendrikx at openjdk.org> wrote:
>> one thing: you may sync up with the latest master branch, that's the configuration I am testing.
>
> @andy-goryachev-oracle
>
> I'm not quite seeing what you are seeing. Here is a screenshots of `LOGICAL` setting with the text `The quick brown fox jumps over the lazy dog`; notice that there is a horizontal scroll bar -- that looks incorrect:
>
> 
>
> Now, for the `VISUAL` setting it is a bit hard to see if it is doing the right thing because the `Text` node is lacking any kind of border to see where the actual bounds are. However, I do clearly see it responding to underline on/off, so it is taking that into account somehow (which makes sense for `VISUAL`)
>
> `VISUAL` with underline on (notice scroll bar):
>
> 
>
> And off (notice scroll bar is gone):
>
> 
>
> So, it seems that:
> - Logical bounds still have a bug where the `Text` is getting a scroll bar
> - Visual bounds seem to be what you'd expect (I see no bugs -- text is correctly aligned with respect to **other** lines, but there may be trailing spaces that take up additional visual space which results in the overall alignment to be off (ie. right aligned text is not touching the right most edge, since there are spaces there, but **only** when strike through or underline is on (!!) ) -- again it is bit hard to tell as there is no border to see where the visual bounds really are -- you have to look at the horizonal scroll bar :)
> @hjohn are you trying a single line? Try this string:
>
> ```
> The quick brown fox jumps over the lazy dog
> The quick brown fox jumps over the lazy dog
> ```
>
> 
Well, wrap text is on, so that allows the code to strip spaces between words if it places a soft wrap there (which is working). At the end of the first line, it doesn't want to wrap yet, but a hard wrap is encountered (`\n`). Since there is no soft wrap there, the spaces are kept intact.
The question really is if this is correct for the 2nd line. There is no soft wrap at the 2nd `dog`, so why is it stripping spaces there? I don't have a test case for that one yet in my `TextLayoutTest` but I will add one. For the 2nd line it is stripping **trailing** spaces (not spaces between words where a soft wrap occurred), so I think that the 2nd line is incorrect.
-------------
PR Comment: https://git.openjdk.org/jfx/pull/1236#issuecomment-1933109332
More information about the openjfx-dev
mailing list