From 50d36fe91b85a339a2d554a283f6d70e4aeb357c Mon Sep 17 00:00:00 2001 From: Ingo Kegel Date: Thu, 14 Jan 2021 18:59:54 +0100 Subject: [PATCH] Switched from sub-pixel to greyscale text anti-aliasing on macOS when running with a JetBrains JRE. Sub-pixel anti-aliasing (VALUE_TEXT_ANTIALIAS_LCD_HRGB) causes font rendering with too much weight with a JetBrains JREs (both 8 and 11). This can be seen when comparing the text rendering of UI elements between IntelliJ IDEA and FlatLaf. This commits aligns FlatLaf's behavior with IntelliJ IDEA which disables sub-pixel anti-aliasing on macOS for its IDE anti-aliasing setting and uses greyscale anti-aliasing by default (see com.intellij.ide.ui.AntialiasingType.canUseSubpixelAAForIDE). --- .../src/main/java/com/formdev/flatlaf/FlatLaf.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java index f941474d..4b9b01d7 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java @@ -546,7 +546,12 @@ public abstract class FlatLaf } private void putAATextInfo( UIDefaults defaults ) { - if( SystemInfo.isJava_9_orLater ) { + if ( SystemInfo.isJetBrainsJVM ) { + // The awt.font.desktophints property suggests sub-pixel anti-aliasing + // which renders text with too much weight on macOS in the JetBrains JRE. + // Use greyscale anti-aliasing instead. + defaults.put( RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON ); + } else if( SystemInfo.isJava_9_orLater ) { Object desktopHints = Toolkit.getDefaultToolkit().getDesktopProperty( DESKTOPFONTHINTS ); if( desktopHints instanceof Map ) { @SuppressWarnings( "unchecked" )