[prev in list] [next in list] [prev in thread] [next in thread]
List: openjdk-openjfx-dev
Subject: Re: RFR: 8314215: Trailing Spaces before Line Breaks Affect the Center Alignment of Text [v18]
From: Kevin Rushforth <kcr () openjdk ! org>
Date: 2024-04-26 19:39:00
Message-ID: G9uD13SQ-hcQoRcLC4JcZTvVfvPKyxJkzCdNP7INjts=.46b25ee4-8a59-4a41-9bff-f4181ce2fb09 () github ! com
[Download RAW message or body]
On Tue, 23 Apr 2024 19:30:49 GMT, John Hendrikx <jhendrikx@openjdk.org> wrote:
> > There are a number of tickets open related to text rendering:
> >
> > https://bugs.openjdk.org/browse/JDK-8314215
> >
> > https://bugs.openjdk.org/browse/JDK-8145496
> >
> > https://bugs.openjdk.org/browse/JDK-8129014
> >
> > They have in common that wrapped text is taking the trailing spaces on each \
> > wrapped line into account when calculating where to wrap. This looks okay for \
> > text that is left aligned (as the spaces will be trailing the lines and generally \
> > aren't a problem, but looks weird with CENTER and RIGHT alignments. Even with \
> > LEFT alignment there are artifacts of this behavior, where a line like `AAA BBB \
> > CCC` (note the **double** spaces) gets split up into `AAA `, `BBB ` and `CCC`, \
> > but if space reduces further, it will wrap **too** early because the space is \
> > taken into account (ie. `AAA` may still have fit just fine, but `AAA ` doesn't, \
> > so the engine wraps it to `AA` + `A ` or something).
> > The fix for this is two fold; first the individual lines of text should not \
> > include any trailing spaces into their widths; second, the code that is taking \
> > the trailing space into account when wrapping should ignore all trailing spaces \
> > (currently it is ignoring all but one trailing space). With these two fixes, the \
> > layout in LEFT/CENTER/RIGHT alignments all look great, and there is no more early \
> > wrapping due to a space being taking into account while the actual text still \
> > would have fit (this is annoying in tight layouts, where a line can be wrapped \
> > early even though it looks like it would have fit).
> > If it were that simple, we'd be done, but there may be another issue here that \
> > needs solving: wrapped aligned TextArea's.
> > TextArea don't directly support text alignment (via a setTextAlignment method \
> > like Label) but you can change it via CSS.
> > For Left alignment + wrapping, TextArea will ignore any spaces typed before a \
> > line that was wrapped. In other words, you can type spaces as much as you want, \
> > and they won't show up and the cursor won't move. The spaces are all getting \
> > appended to the previous line. When you cursor through these spaces, the cursor \
> > can be rendered out of the control's bounds. To illustrate, if you have the text \
> > `AAA BBB CCC`, and the text gets wrapped to `AAA`, `BBB`, `CCC`, \
> > typing spaces before `BBB` will not show up. If you cursor back, the cursor may \
> > be outside the control bounds because so many spaces are trailing `AAA`.
> > The above behavior has NOT changed, is pretty standard for wrapped text \
> > controls,...
>
> John Hendrikx has updated the pull request incrementally with one additional commit \
> since the last revision:
> Update copyright years
The newly added test passes on all platforms.
@hjohn I assigned [JDK-8145496](https://bugs.openjdk.org/browse/JDK-8145496) to you \
to verify that it is fixed by this PR. If so, please close it as a duplicate of this \
bug. Since [JDK-8129014](https://bugs.openjdk.org/browse/JDK-8129014) is an old (JDK \
7) issue, let's just leave it alone.
-------------
PR Comment: https://git.openjdk.org/jfx/pull/1236#issuecomment-2080012431
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic