提交 de4c501d 编写于 作者: P prr

6930980: Disable TrueType hinting for fonts known not to hint well

Reviewed-by: igor, jgodinez
上级 2edeb643
......@@ -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();
......
......@@ -244,7 +244,8 @@ public abstract class FontScaler implements DisposerRecord {
abstract long createScalerContext(double[] matrix,
boolean fontType,
int aa, int fm,
float boldness, float italic);
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();
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册