On Fri, 9 Feb 2024 14:29:18 GMT, Kevin Rushforth <k...@openjdk.org> wrote:
>> 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: > > Address review feedback looks good, some minor comments. tests/system/src/test/java/test/robot/javafx/scene/TransparentLCDTest.java line 69: > 67: * @bug 8311492 > 68: */ > 69: public class TransparentLCDTest { Was there a reason you did not use `VisualTestBase` class? The code is fine the way it is, I am just curious. ------------- PR Review: https://git.openjdk.org/jfx/pull/1361#pullrequestreview-1872732167 PR Review Comment: https://git.openjdk.org/jfx/pull/1361#discussion_r1484517970