diff options
author | Matthias Clasen <mclasen@redhat.com> | 2021-07-21 21:43:19 +0000 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2021-07-21 21:43:19 +0000 |
commit | 0978052c9c61032082d60bafba6ec1961b047ce2 (patch) | |
tree | 1a4143b7770815fe987c893d6ff06b3850414cec /pango/pangofc-fontmap.c | |
parent | 804ef7674724a1bb801778ee031fc0db261d4dfc (diff) | |
parent | d439eea5909b13a138930a668b3114a1dc4904b4 (diff) | |
download | pango-0978052c9c61032082d60bafba6ec1961b047ce2.tar.gz |
Merge branch 'approximated-sizes' into 'main'
font-desc: Use local double values to store sizes
Closes #580
See merge request GNOME/pango!377
Diffstat (limited to 'pango/pangofc-fontmap.c')
-rw-r--r-- | pango/pangofc-fontmap.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/pango/pangofc-fontmap.c b/pango/pangofc-fontmap.c index 62f2cd4b..9c008411 100644 --- a/pango/pangofc-fontmap.c +++ b/pango/pangofc-fontmap.c @@ -2789,6 +2789,7 @@ pango_fc_font_description_from_pattern (FcPattern *pattern, gboolean include_siz { FcMatrix *fc_matrix; double scale_factor = 1; + volatile double scaled_size; if (FcPatternGetMatrix (pattern, FC_MATRIX, 0, &fc_matrix) == FcResultMatch) { @@ -2802,7 +2803,12 @@ pango_fc_font_description_from_pattern (FcPattern *pattern, gboolean include_siz scale_factor = pango_matrix_get_font_scale_factor (&mat); } - pango_font_description_set_size (desc, scale_factor * size * PANGO_SCALE); + /* We need to use a local variable to ensure that the compiler won't + * implicitly cast it to integer while the result is kept in registers, + * leading to a wrong approximation in i386 (with 387 FPU) + */ + scaled_size = scale_factor * size * PANGO_SCALE; + pango_font_description_set_size (desc, scaled_size); } /* gravity is a bit different. we don't want to set it if it was not set on |