summaryrefslogtreecommitdiff
path: root/pango/pangofc-fontmap.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2021-01-24 21:55:14 +0000
committerMatthias Clasen <mclasen@redhat.com>2021-01-24 21:55:14 +0000
commit23e033aead84005d5d253de7f5e891b9eef60baa (patch)
treeda11169c87840011970de5e27f3ded4c3a96b3e5 /pango/pangofc-fontmap.c
parent7c99441eda0e7a79d90b7a73faf93f1c89532120 (diff)
parent49b1f80a83433e5ddb18bd4e1577171fef8641e5 (diff)
downloadpango-23e033aead84005d5d253de7f5e891b9eef60baa.tar.gz
Merge branch 'fix-font-roundtrip' into 'master'
Fix font roundtrip Closes #530 See merge request GNOME/pango!280
Diffstat (limited to 'pango/pangofc-fontmap.c')
-rw-r--r--pango/pangofc-fontmap.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/pango/pangofc-fontmap.c b/pango/pangofc-fontmap.c
index 764336ae..fd17309d 100644
--- a/pango/pangofc-fontmap.c
+++ b/pango/pangofc-fontmap.c
@@ -2519,7 +2519,24 @@ pango_fc_font_description_from_pattern (FcPattern *pattern, gboolean include_siz
pango_font_description_set_variant (desc, PANGO_VARIANT_NORMAL);
if (include_size && FcPatternGetDouble (pattern, FC_SIZE, 0, &size) == FcResultMatch)
- pango_font_description_set_size (desc, size * PANGO_SCALE);
+ {
+ FcMatrix *fc_matrix;
+ double scale_factor = 1;
+
+ if (FcPatternGetMatrix (pattern, FC_MATRIX, 0, &fc_matrix) == FcResultMatch)
+ {
+ PangoMatrix mat = PANGO_MATRIX_INIT;
+
+ mat.xx = fc_matrix->xx;
+ mat.xy = fc_matrix->xy;
+ mat.yx = fc_matrix->yx;
+ mat.yy = fc_matrix->yy;
+
+ scale_factor = pango_matrix_get_font_scale_factor (&mat);
+ }
+
+ pango_font_description_set_size (desc, scale_factor * size * PANGO_SCALE);
+ }
/* gravity is a bit different. we don't want to set it if it was not set on
* the pattern */