diff options
Diffstat (limited to '0004-Properly-handle-phantom-points-for-variation-fonts-5.patch')
-rw-r--r-- | 0004-Properly-handle-phantom-points-for-variation-fonts-5.patch | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/0004-Properly-handle-phantom-points-for-variation-fonts-5.patch b/0004-Properly-handle-phantom-points-for-variation-fonts-5.patch new file mode 100644 index 000000000000..3f498d6f4fbf --- /dev/null +++ b/0004-Properly-handle-phantom-points-for-variation-fonts-5.patch @@ -0,0 +1,60 @@ +From 2d7a2292f80368125c08f3818faf6926bcc9eb5d Mon Sep 17 00:00:00 2001 +From: Ben Wagner <bungeman@google.com> +Date: Fri, 12 Jul 2019 10:48:10 +0200 +Subject: [PATCH 4/4] Properly handle phantom points for variation fonts + (#56601). + +* src/truetype/ttgload.c (TT_Process_Simple_Glyph): Scale phantom +points if HVAR and/or VVAR is present. +--- + src/truetype/ttgload.c | 27 +++++++++++++++++++++------ + 1 file changed, 21 insertions(+), 6 deletions(-) + +diff --git a/src/truetype/ttgload.c b/src/truetype/ttgload.c +index a04684086..093eed839 100644 +--- a/src/truetype/ttgload.c ++++ b/src/truetype/ttgload.c +@@ -1102,19 +1102,34 @@ + } + + #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT +- /* if we have a HVAR table, `pp1' and/or `pp2' are already adjusted */ +- if ( !( loader->face->variation_support & TT_FACE_FLAG_VAR_HADVANCE ) || +- !IS_HINTED( loader->load_flags ) ) ++ /* if we have a HVAR table, `pp1' and/or `pp2' */ ++ /* are already adjusted but unscaled */ ++ if ( ( loader->face->variation_support & TT_FACE_FLAG_VAR_HADVANCE ) && ++ IS_HINTED( loader->load_flags ) ) ++ { ++ loader->pp1.x = FT_MulFix( loader->pp1.x, x_scale ); ++ loader->pp2.x = FT_MulFix( loader->pp2.x, x_scale ); ++ /* pp1.y and pp2.y are always zero */ ++ } ++ else + #endif + { + loader->pp1 = outline->points[n_points - 4]; + loader->pp2 = outline->points[n_points - 3]; + } + + #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT +- /* if we have a VVAR table, `pp3' and/or `pp4' are already adjusted */ +- if ( !( loader->face->variation_support & TT_FACE_FLAG_VAR_VADVANCE ) || +- !IS_HINTED( loader->load_flags ) ) ++ /* if we have a VVAR table, `pp3' and/or `pp4' */ ++ /* are already adjusted but unscaled */ ++ if ( ( loader->face->variation_support & TT_FACE_FLAG_VAR_VADVANCE ) && ++ IS_HINTED( loader->load_flags ) ) ++ { ++ loader->pp3.x = FT_MulFix( loader->pp3.x, x_scale ); ++ loader->pp3.y = FT_MulFix( loader->pp3.y, y_scale ); ++ loader->pp4.x = FT_MulFix( loader->pp4.x, x_scale ); ++ loader->pp4.y = FT_MulFix( loader->pp4.y, y_scale ); ++ } ++ else + #endif + { + loader->pp3 = outline->points[n_points - 2]; +-- +2.25.1 + |