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

Reply via email to