RFR: 8236689: macOS 10.15 Catalina: LCD text renders badly

Kevin Rushforth kcr at openjdk.java.net
Sat Mar 19 16:01:29 UTC 2022


On Tue, 15 Mar 2022 18:13:15 GMT, Mike Hearn <duke at openjdk.java.net> wrote:

>> On an external (non-retina) monitor JavaFX LCD text on macOS is painful on the eyes.
>> Retina diminishes it rather than cures it.
>> 
>> The problem is a mix of a couple of things
>> 1) CoreText no longer generates LCD glyphs (except perhaps if you change some system settings at your own risk)
>> 2) Prism's LCD shader assumes it got LCD glyphs and makes sub-pixel positioning adjustments that turn greyscale
>> glyphs into multi-coloured glyphs that weren't meant to be ...
>> 
>> The fix here is to just disable LCD by default on macOS as is already done (eg) on iOS
>> This ripples through to make everything use grey scale even if you asked for the LCD (which you can't have)
>> It also means if you REALLY want it (and perhaps are tweaking those magical settings) you can have it back
>> by just specifying -Dprism.lcdtext=on
>> 
>> Also it means the pieces of support for this on macos are still there if Apple ever bring it back (unlikely).
>> Not that much code would be removed anyway .. a fair amount of it is needed for Windows and Linux.
>
> I can't comment on the JBS bug, but I'm not sure this is actually fixed. I upgraded to JavaFX 18 and the bug is still there. Setting `-Dprism.lcdtext=off` fixes it. I'm not sure why, because the change to do this by default seems simple enough.

@mikehearn I downloaded the JavaFX 18 GA bundle and can confirm that LCD text is disabled by default on macOS as per this fix. You might want to double-check the JavaFX version by printing out the "javafx.version" system property.

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

PR: https://git.openjdk.java.net/jfx/pull/642


More information about the openjfx-dev mailing list