> JavaFX LCD text rendering (aka sub-pixel antialiasing) uses a pixel shader > and alpha blending. The alpha channel is used is ways that interfere with its > use for transparency. The existing logic checks that the current blend > equation is SRC_OVER and that the surface is opaque, and that we are > rendering using a Paint of type Color. It fails to check that the text color > is opaque. When it isn't, the resulting alpha value is not preserved, even in > the middle of the filled portion of the text, resulting in a visually > noticeable difference in color. > >  > > The solution is to add the missing check for alpha == 1 to the test that > checks whether we can use LCD text rendering. I note that Java2D falls back > to gray scale when the text color is transparent for a similar reason. > > I added a robot test that checks the color in the middle of the filled > portion of a rendered text character and also checks that we use LCD for > opaque colors and GRAY scale for transparent colors.
Kevin Rushforth has updated the pull request incrementally with one additional commit since the last revision: more review feedback ------------- Changes: - all: https://git.openjdk.org/jfx/pull/1361/files - new: https://git.openjdk.org/jfx/pull/1361/files/62c768cf..ee1a621c Webrevs: - full: https://webrevs.openjdk.org/?repo=jfx&pr=1361&range=02 - incr: https://webrevs.openjdk.org/?repo=jfx&pr=1361&range=01-02 Stats: 3 lines in 1 file changed: 0 ins; 1 del; 2 mod Patch: https://git.openjdk.org/jfx/pull/1361.diff Fetch: git fetch https://git.openjdk.org/jfx.git pull/1361/head:pull/1361 PR: https://git.openjdk.org/jfx/pull/1361