Text rendering on Mojave (macOS)
philip.race at oracle.com
Wed Nov 28 17:02:42 UTC 2018
freetype is not used at all by FX on Mac and is used by JDK *only*
for dynamically loaded fonts including Type 1 fonts. All platform fonts
are rendered via the platform renderer by both toolkits.
So the freetype filter isn't relevant here.
It is possible that along with removing sub-pixel AA as a user-settable
Apple stopped caring so much about filtering the sub-pixel text and removed
some setting that said how by much to reduce the fringing.
I can quite believe that Apple's position is that 1) ios doesn't support it,
2) hidpi displays are all they ship today, 3) LCD complicates caches +
although we've all managed to make it work for many years ...
I suppose we'll have to look at matching what they are doing but as many
folks on that thread noted it is a quality loss on non-retina displays -
a reason sub-pixel text was introduced and it doesn't go away until ALL
displays are hi-dpi. So if there's a way that keeps it for lo-res
displays I think
we'd want to do that even if Apple don't.
On 11/28/18 8:31 AM, Laurent Bourgès wrote:
> It remembers me that recently (within 2 months), somebody proposed 2 patchs
> to enable freetype LCDFilter for awt & javafx.
> Both patches are integrated in jdk12 & jfx 12 ... probably a backport to
> jdk11u & jfx11u is in progress...
> Please test latest version, first.
> My 2 cents,
> Le mer. 28 nov. 2018 à 16:49, Kirill Grouchnikov <
> kirill.grouchnikov at gmail.com> a écrit :
>> I've sent this one a couple of days ago, and looks like it fell through the
>> moderation cracks since it had an image attached to it. So sending this
>> So I spent some time today looking into font rendering on the latest macOS
>> 10.14 (Mojave), I came across
>> that says that it has removed the subpixel anti-aliasing setting. There's a
>> new one under "General" named "Use font smoothing when available".
>> When that setting is on (which is by default), font rendering in Swing with
>> the recommended awt.font.desktophints system property is too heavy. Looking
>> at how
>> is doing it (lines 399-420) it appears that they are setting
>> KEY_TEXT_ANTIALIASING to VALUE_TEXT_ANTIALIAS_OFF, and doing that in Swing
>> results in font rendering that is consistent with native apps.
>> Then I looked at how JavaFX font rendering looks like with locally built
>> No matter if that new platform setting is off or on, all the texts look
>> halo'd - zoom in on
>> and see all those pink / light blue pixels around glyphs.
>> Am I running the demo wrong?
More information about the openjfx-dev