On Fri, 9 Feb 2024 16:24:21 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. >> >> ![transparent-lcd-text](https://github.com/openjdk/jfx/assets/34689748/81f9503c-c706-44d8-b4db-6b47f0eb5fea) >> >> 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 LgTm ------------- Marked as reviewed by angorya (Reviewer). PR Review: https://git.openjdk.org/jfx/pull/1361#pullrequestreview-1872875914