On Thu, 10 Sep 2026 17:47:40 GMT, Martin Fox <[email protected]> wrote:

>> This PR attempts to improve LCD text rendering on Windows and Linux. Changes 
>> include:
>> 
>> - (Windows only) When setting up DirectWrite the code now uses the 
>> NATURAL_SYMMETRIC rendering mode except for very small glyphs where it uses 
>> NATURAL. Using NATURAL_SYMMETRIC avoids distorted glyphs at specific pixel 
>> sizes (see [JDK-8389632](https://bugs.openjdk.org/browse/JDK-8389632)) and 
>> retains the curves along the top and bottom of the glyphs. Using NATURAL at 
>> small sizes avoids glyphs turning very fuzzy and light.
>> 
>> - The code is now consistently converts the colors from sRGB to a linear 
>> space (more or less), composites them, and then converts the result back to 
>> sRGB.
>> 
>> - The shader applies a contrast equation to the LCD glyph mask which helps 
>> emphasize the stems. The same equation is used by Skia and probably added by 
>> Microsoft when they cleaned up text rendering for Chromium. BTW it’s just 
>> the equation for a parabola that goes through points (0, 0) and (1, 1).
>> 
>> My testing was mostly done on a 27 inch display with a resolution of 
>> 2560x1440 and a screen scale of 150%. This was low enough to notice a 
>> difference. Resolutions higher than that (like full-on Retina) tend to hide 
>> a lot of sins.
>> 
>> I recommend reading “The Raster Tragedy in Skia” which is concise but covers 
>> a lot of ground. It contains a section on the challenges of compositing text 
>> in sRGB space and also the issues getting LCD text to look dark enough 
>> without inflating the stems. I wish I had found this earlier in the process.
>> 
>> ---------
>> - [x] I confirm that I make this contribution in accordance with the 
>> [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai).
>
> Martin Fox has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Added Swing version of the cascade

> We had a bit of internal discussion on the topic. ... Basically, this PR is 
> unlikely to go in without the system property.

Is this how that is decided in, and I quote JavaFX's mission statement: "a 
collaborative effort by many individuals and companies"? Interesting 
information for all collaborators who don't count towards "we".

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

PR Comment: https://git.openjdk.org/jfx/pull/2284#issuecomment-5623266214

Reply via email to