summaryrefslogtreecommitdiff
path: root/pango/pangocairo-fcfont.c
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>2005-03-15 23:00:28 +0000
committerOwen Taylor <otaylor@src.gnome.org>2005-03-15 23:00:28 +0000
commitcc35f77a1b4e40ba85d583d0b0f301c288adb930 (patch)
tree2544826477ac2343fa2d121f6ef7438bb1fe770a /pango/pangocairo-fcfont.c
parentc6fb33e1dde1721132273b038923e1d2da3abba3 (diff)
downloadpango-cc35f77a1b4e40ba85d583d0b0f301c288adb930.tar.gz
Include the effect of the CTM in the FC_PIXEL_SIZE we set in the
2005-03-15 Owen Taylor <otaylor@redhat.com> * pango/pangofc-fontmap.c: Include the effect of the CTM in the FC_PIXEL_SIZE we set in the FcPattern. (Fixes problems with getting the wrong font when drawing the same font at multiple scales. Reported by Keith Packard.) * pango/pangofc-fontmap.h pango/pangocairo-fcfontmap.c pango/pangocairo-fc.h pango/pangocairo-fontfont.c: Add the PangoFontDescription to create_font() ... we need it to get the right pixel size to combine with the CTM. * pango/pangofc-fontmap.c (pango_fc_fontmap_get_dpi): Extract out the logic for finding the DPI from the size-listing code. (pango_fc_font_map_get_render_key): Handle mix of absolute and not sizes correctly.
Diffstat (limited to 'pango/pangocairo-fcfont.c')
-rw-r--r--pango/pangocairo-fcfont.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/pango/pangocairo-fcfont.c b/pango/pangocairo-fcfont.c
index ea335472..52da3a4a 100644
--- a/pango/pangocairo-fcfont.c
+++ b/pango/pangocairo-fcfont.c
@@ -321,15 +321,15 @@ _pango_cairo_fc_get_render_key (PangoCairoFcFontMap *cffontmap,
}
PangoFcFont *
-_pango_cairo_fc_font_new (PangoCairoFcFontMap *cffontmap,
- PangoContext *context,
- FcPattern *pattern)
+_pango_cairo_fc_font_new (PangoCairoFcFontMap *cffontmap,
+ PangoContext *context,
+ const PangoFontDescription *desc,
+ FcPattern *pattern)
{
PangoCairoFcFont *cffont;
- FcResult result;
const PangoMatrix *pango_ctm;
FcMatrix *fc_matrix;
- double pixel_size;
+ double size;
g_return_val_if_fail (PANGO_IS_CAIRO_FC_FONT_MAP (cffontmap), NULL);
g_return_val_if_fail (pattern != NULL, NULL);
@@ -358,10 +358,13 @@ _pango_cairo_fc_font_new (PangoCairoFcFontMap *cffontmap,
cairo_matrix_destroy (tmp_matrix);
}
- result = FcPatternGetDouble (pattern, FC_PIXEL_SIZE, 0, &pixel_size);
- g_assert (result == FcResultMatch);
+ if (pango_font_description_get_size_is_absolute (desc))
+ size = pango_font_description_get_size (desc);
+ else
+ size = cffontmap->dpi * pango_font_description_get_size (desc) / 72.;
- cairo_matrix_scale (cffont->font_matrix, pixel_size, pixel_size);
+ cairo_matrix_scale (cffont->font_matrix,
+ size / PANGO_SCALE, size / PANGO_SCALE);
cffont->total_matrix = cairo_matrix_create ();