[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-openjfx-dev
Subject:    Re: RFR: JDK-8314215 Trailing Spaces before Line Breaks Affect the Center Alignment of Text [v10]
From:       John Hendrikx <jhendrikx () openjdk ! org>
Date:       2024-01-31 0:34:57
Message-ID: 4RI02IK9HBxjKom1kJhrFG9f5ZLg_GeiVL1RbfriANc=.82451ef0-7dcf-4457-9177-4ebedcea23f9 () github ! com
[Download RAW message or body]

> 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, \
> and IMHO does not need further attent...

John Hendrikx has updated the pull request incrementally with one additional commit \
since the last revision:

  Fix test comment

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

Changes:
  - all: https://git.openjdk.org/jfx/pull/1236/files
  - new: https://git.openjdk.org/jfx/pull/1236/files/e71a851a..a49b99a6

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jfx&pr=1236&range=09
 - incr: https://webrevs.openjdk.org/?repo=jfx&pr=1236&range=08-09

  Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod
  Patch: https://git.openjdk.org/jfx/pull/1236.diff
  Fetch: git fetch https://git.openjdk.org/jfx.git pull/1236/head:pull/1236

PR: https://git.openjdk.org/jfx/pull/1236


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic