mirror of
https://github.com/openjdk/jdk.git
synced 2026-02-17 13:55:20 +00:00
6930980: Disable TrueType hinting for fonts known not to hint well
Reviewed-by: igor, jgodinez
This commit is contained in:
parent
01e63ab0d1
commit
07cf679af3
@ -151,6 +151,23 @@ public class FileFontStrike extends PhysicalStrike {
|
||||
}
|
||||
}
|
||||
|
||||
/* Amble fonts are better rendered unhinted although there's the
|
||||
* inevitable fuzziness that accompanies this due to no longer
|
||||
* snapping stems to the pixel grid. The exception is that in B&W
|
||||
* mode they are worse without hinting. The down side to that is that
|
||||
* B&W metrics will differ which normally isn't the case, although
|
||||
* since AA mode is part of the measuring context that should be OK.
|
||||
* We don't expect Amble to be installed in the Windows fonts folder.
|
||||
* If we were to, then we'd also might want to disable using the
|
||||
* native rasteriser path which is used for LCD mode for platform
|
||||
* fonts. since we have no way to disable hinting by GDI.
|
||||
* In the case of Amble, since its 'gasp' table says to disable
|
||||
* hinting, I'd expect GDI to follow that, so likely it should
|
||||
* all be consistent even if GDI used.
|
||||
*/
|
||||
boolean disableHinting = desc.aaHint != INTVAL_TEXT_ANTIALIAS_OFF &&
|
||||
fileFont.familyName.startsWith("Amble");
|
||||
|
||||
/* If any of the values is NaN then substitute the null scaler context.
|
||||
* This will return null images, zero advance, and empty outlines
|
||||
* as no rendering need take place in this case.
|
||||
@ -165,7 +182,7 @@ public class FileFontStrike extends PhysicalStrike {
|
||||
pScalerContext = fileFont.getScaler().createScalerContext(matrix,
|
||||
fileFont instanceof TrueTypeFont,
|
||||
desc.aaHint, desc.fmHint,
|
||||
boldness, italic);
|
||||
boldness, italic, disableHinting);
|
||||
}
|
||||
|
||||
mapper = fileFont.getMapper();
|
||||
|
||||
@ -242,9 +242,10 @@ public abstract class FontScaler implements DisposerRecord {
|
||||
freed when corresponding strike is being released.
|
||||
*/
|
||||
abstract long createScalerContext(double[] matrix,
|
||||
boolean fontType,
|
||||
int aa, int fm,
|
||||
float boldness, float italic);
|
||||
boolean fontType,
|
||||
int aa, int fm,
|
||||
float boldness, float italic,
|
||||
boolean disableHinting);
|
||||
|
||||
/* Marks context as invalid because native scaler is invalid.
|
||||
Notes:
|
||||
|
||||
@ -211,7 +211,8 @@ class FreetypeFontScaler extends FontScaler {
|
||||
}
|
||||
|
||||
long createScalerContext(double[] matrix, boolean fontType,
|
||||
int aa, int fm, float boldness, float italic) {
|
||||
int aa, int fm, float boldness, float italic,
|
||||
boolean disableHinting) {
|
||||
if (nativeScaler != 0L) {
|
||||
return createScalerContextNative(nativeScaler, matrix,
|
||||
fontType, aa, fm, boldness, italic);
|
||||
|
||||
@ -67,7 +67,7 @@ class NullFontScaler extends FontScaler {
|
||||
long getLayoutTableCache() {return 0L;}
|
||||
|
||||
long createScalerContext(double[] matrix, boolean fontType, int aa,
|
||||
int fm, float boldness, float italic) {
|
||||
int fm, float boldness, float italic, boolean disableHinting) {
|
||||
return getNullScalerContext();
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user