JBR-3269 Disabled subpixel antialiasing for macOS Big Sur and newer

This commit is contained in:
Nikita Gubarkov
2021-04-02 01:24:57 +03:00
committed by Vitaly Provodin
parent d7e51fe60c
commit 7faec92ebe
4 changed files with 25 additions and 15 deletions

View File

@@ -111,11 +111,12 @@ public class FontStrikeDesc {
*/
public static int getAAHintIntVal(Object aa, Font2D font2D, int ptSize) {
if (FontUtilities.isMacOSX14 &&
(aa == VALUE_TEXT_ANTIALIAS_OFF ||
aa == VALUE_TEXT_ANTIALIAS_DEFAULT ||
aa == VALUE_TEXT_ANTIALIAS_ON ||
aa == VALUE_TEXT_ANTIALIAS_GASP))
if (FontUtilities.isMacOSX16 ||
(FontUtilities.isMacOSX14 &&
(aa == VALUE_TEXT_ANTIALIAS_OFF ||
aa == VALUE_TEXT_ANTIALIAS_DEFAULT ||
aa == VALUE_TEXT_ANTIALIAS_ON ||
aa == VALUE_TEXT_ANTIALIAS_GASP)))
{
return INTVAL_TEXT_ANTIALIAS_ON;
}
@@ -153,11 +154,12 @@ public class FontStrikeDesc {
FontRenderContext frc) {
Object aa = frc.getAntiAliasingHint();
if (FontUtilities.isMacOSX14 &&
(aa == VALUE_TEXT_ANTIALIAS_OFF ||
aa == VALUE_TEXT_ANTIALIAS_DEFAULT ||
aa == VALUE_TEXT_ANTIALIAS_ON ||
aa == VALUE_TEXT_ANTIALIAS_GASP))
if (FontUtilities.isMacOSX16 ||
(FontUtilities.isMacOSX14 &&
(aa == VALUE_TEXT_ANTIALIAS_OFF ||
aa == VALUE_TEXT_ANTIALIAS_DEFAULT ||
aa == VALUE_TEXT_ANTIALIAS_ON ||
aa == VALUE_TEXT_ANTIALIAS_GASP)))
{
return INTVAL_TEXT_ANTIALIAS_ON;
}

View File

@@ -45,6 +45,7 @@ public final class FontUtilities {
public static boolean isMacOSX;
public static boolean isMacOSX14;
public static boolean isMacOSX16;
public static boolean useJDKScaler;
@@ -70,9 +71,10 @@ public final class FontUtilities {
isMacOSX = osName.contains("OS X"); // TODO: MacOSX
if (isMacOSX) {
// os.version has values like 10.13.6, 10.14.6
// If it is not positively recognised as 10.13 or less,
// assume it means 10.14 or some later version.
// If it is not positively recognised as 10.13 (10.15) or less,
// assume it means 10.14 (10.16) or some later version.
isMacOSX14 = true;
isMacOSX16 = true;
String version = System.getProperty("os.version", "");
if (version.startsWith("10.")) {
version = version.substring(3);
@@ -83,6 +85,7 @@ public final class FontUtilities {
try {
int v = Integer.parseInt(version);
isMacOSX14 = (v >= 14);
isMacOSX16 = (v >= 16);
} catch (NumberFormatException e) {
}
}

View File

@@ -774,8 +774,9 @@ public final class SunGraphics2D
}
}
}
if (FontUtilities.isMacOSX14 &&
(aahint == SunHints.INTVAL_TEXT_ANTIALIAS_OFF))
if (FontUtilities.isMacOSX16 ||
(FontUtilities.isMacOSX14 &&
aahint == SunHints.INTVAL_TEXT_ANTIALIAS_OFF))
{
aahint = SunHints.INTVAL_TEXT_ANTIALIAS_ON;
}

View File

@@ -456,7 +456,11 @@ public abstract class SurfaceData
} else {
solidTextRenderer = new SolidTextRenderer();
}
lcdTextRenderer = new LCDTextRenderer();
if (FontUtilities.isMacOSX16) {
lcdTextRenderer = aaTextRenderer;
} else {
lcdTextRenderer = new LCDTextRenderer();
}
colorPipe = new AlphaColorPipe();
// colorShape = colorPrimitives;