Don't respect FontConfig matrix for bitmap fonts.
FontConfig provides 10-scale-bitmap-fonts.conf which applies an inverse
"pixelsize" matrix. It is not known if this .conf is active or not, so
it is not clear if "pixelsize" should be applied before this matrix.
Since using a matrix with a bitmap font isn't a great idea, only apply
the matrix to outline fonts.
Change-Id: I5500120d091e73712949453a328d27b44f03b0c7
Reviewed-on: https://skia-review.googlesource.com/c/192680
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Hal Canary <halcanary@google.com>
diff --git a/src/ports/SkFontMgr_fontconfig.cpp b/src/ports/SkFontMgr_fontconfig.cpp
index 79e8e0f..f7f76a1 100644
--- a/src/ports/SkFontMgr_fontconfig.cpp
+++ b/src/ports/SkFontMgr_fontconfig.cpp
@@ -490,8 +490,13 @@
}
void onFilterRec(SkScalerContextRec* rec) const override {
+ // FontConfig provides 10-scale-bitmap-fonts.conf which applies an inverse "pixelsize"
+ // matrix. It is not known if this .conf is active or not, so it is not clear if
+ // "pixelsize" should be applied before this matrix. Since using a matrix with a bitmap
+ // font isn't a great idea, only apply the matrix to outline fonts.
const FcMatrix* fcMatrix = get_matrix(fPattern, FC_MATRIX);
- if (fcMatrix) {
+ bool fcOutline = get_bool(fPattern, FC_OUTLINE, true);
+ if (fcOutline && fcMatrix) {
// fPost2x2 is column-major, left handed (y down).
// FcMatrix is column-major, right handed (y up).
SkMatrix fm;