diff options
Diffstat (limited to 'pango/pangocoretext-fontmap.c')
-rw-r--r-- | pango/pangocoretext-fontmap.c | 69 |
1 files changed, 26 insertions, 43 deletions
diff --git a/pango/pangocoretext-fontmap.c b/pango/pangocoretext-fontmap.c index 6cd9fe9f..4d101847 100644 --- a/pango/pangocoretext-fontmap.c +++ b/pango/pangocoretext-fontmap.c @@ -827,12 +827,6 @@ get_scaled_size (PangoCoreTextFontMap *fontmap, { double size = pango_font_description_get_size (desc); - if (!pango_font_description_get_size_is_absolute (desc)) - { - double dpi = pango_core_text_font_map_get_resolution (fontmap, context); - size = size * dpi / 72.; - } - return .5 + pango_matrix_get_font_scale_factor (pango_context_get_matrix (context)) * size; } @@ -846,7 +840,7 @@ struct _PangoCoreTextFontsetKey PangoLanguage *language; PangoFontDescription *desc; PangoMatrix matrix; - int pixelsize; + int pointsize; double resolution; PangoGravity gravity; gpointer context_key; @@ -865,7 +859,7 @@ pango_core_text_fontset_key_init (PangoCoreTextFontsetKey *key, key->fontmap = fontmap; get_context_matrix (context, &key->matrix); key->language = language; - key->pixelsize = get_scaled_size (fontmap, context, desc); + key->pointsize = get_scaled_size (fontmap, context, desc); key->resolution = pango_core_text_font_map_get_resolution (fontmap, context); key->gravity = pango_context_get_gravity (context); key->desc = pango_font_description_copy_static (desc); @@ -885,7 +879,7 @@ pango_core_text_fontset_key_copy (const PangoCoreTextFontsetKey *old) key->fontmap = old->fontmap; key->matrix = old->matrix; key->language = old->language; - key->pixelsize = old->pixelsize; + key->pointsize = old->pointsize; key->resolution = old->resolution; key->gravity = old->gravity; key->desc = pango_font_description_copy (old->desc); @@ -929,7 +923,7 @@ pango_core_text_fontset_key_equal (const PangoCoreTextFontsetKey *key_a, const PangoCoreTextFontsetKey *key_b) { if (key_a->language == key_b->language && - key_a->pixelsize == key_b->pixelsize && + key_a->pointsize == key_b->pointsize && key_a->resolution == key_b->resolution && key_a->gravity == key_b->gravity && pango_font_description_equal (key_a->desc, key_b->desc) && @@ -979,7 +973,7 @@ struct _PangoCoreTextFontKey CTFontDescriptorRef ctfontdescriptor; PangoMatrix matrix; PangoGravity gravity; - int pixelsize; + int pointsize; double resolution; gboolean synthetic_italic; gpointer context_key; @@ -995,7 +989,7 @@ pango_core_text_font_key_init (PangoCoreTextFontKey *key, key->fontmap = ctfontmap; key->ctfontdescriptor = ctdescriptor; key->matrix = *pango_core_text_fontset_key_get_matrix (fontset_key); - key->pixelsize = fontset_key->pixelsize; + key->pointsize = fontset_key->pointsize; key->resolution = fontset_key->resolution; key->synthetic_italic = synthetic_italic; key->gravity = pango_core_text_fontset_key_get_gravity (fontset_key); @@ -1011,7 +1005,7 @@ pango_core_text_font_key_copy (const PangoCoreTextFontKey *old) key->ctfontdescriptor = old->ctfontdescriptor; CFRetain (key->ctfontdescriptor); key->matrix = old->matrix; - key->pixelsize = old->pixelsize; + key->pointsize = old->pointsize; key->resolution = old->resolution; key->synthetic_italic = old->synthetic_italic; key->gravity = old->gravity; @@ -1057,7 +1051,7 @@ pango_core_text_font_key_equal (const PangoCoreTextFontKey *key_a, if (CFEqual (key_a->ctfontdescriptor, key_b->ctfontdescriptor) && memcmp (&key_a->matrix, &key_b->matrix, 4 * sizeof (double)) == 0 && key_a->gravity == key_b->gravity && - key_a->pixelsize == key_b->pixelsize && + key_a->pointsize == key_b->pointsize && key_a->resolution == key_b->resolution && key_a->synthetic_italic == key_b->synthetic_italic) { @@ -1073,9 +1067,9 @@ pango_core_text_font_key_equal (const PangoCoreTextFontKey *key_a, } int -pango_core_text_font_key_get_absolute_size (const PangoCoreTextFontKey *key) +pango_core_text_font_key_get_size (const PangoCoreTextFontKey *key) { - return key->pixelsize; + return key->pointsize; } double @@ -1162,32 +1156,34 @@ pango_core_text_font_map_new_font (PangoCoreTextFontMap *fontmap, static gboolean find_best_match (PangoCoreTextFamily *font_family, const PangoFontDescription *description, - PangoFontDescription **best_description, PangoCoreTextFace **best_face) { PangoFontDescription *new_desc; + PangoFontDescription *best_description = NULL; int i; - *best_description = NULL; *best_face = NULL; for (i = 0; i < font_family->n_faces; i++) { new_desc = pango_font_face_describe (font_family->faces[i]); - if (pango_font_description_better_match (description, *best_description, new_desc)) + if (pango_font_description_better_match (description, best_description, + new_desc)) { - pango_font_description_free (*best_description); - *best_description = new_desc; + pango_font_description_free (best_description); + best_description = new_desc; *best_face = (PangoCoreTextFace *)font_family->faces[i]; } else pango_font_description_free (new_desc); } - if (*best_description) - return TRUE; - + if (best_description) + { + pango_font_description_free (best_description); + return TRUE; + } return FALSE; } @@ -1557,33 +1553,20 @@ pango_core_text_fontset_new (PangoCoreTextFontsetKey *key, if (font_family) { - PangoFontDescription *best_description; PangoCoreTextFace *best_face; - gint size; - gboolean is_absolute; /* Force a listing of the available faces */ pango_font_family_list_faces ((PangoFontFamily *)font_family, NULL, NULL); - if (!find_best_match (font_family, description, &best_description, &best_face)) + if (!find_best_match (font_family, description, &best_face)) return NULL; - size = pango_font_description_get_size (description); - if (size < 0) - return NULL; - - is_absolute = pango_font_description_get_size_is_absolute (description); - if (is_absolute) - pango_font_description_set_absolute_size (best_description, size); - else - pango_font_description_set_size (best_description, size); + best_font = + pango_core_text_font_map_new_font (key->fontmap, + key, + best_face->ctfontdescriptor, + best_face->synthetic_italic); - best_font = pango_core_text_font_map_new_font (key->fontmap, - key, - best_face->ctfontdescriptor, - best_face->synthetic_italic); - - pango_font_description_free (best_description); } else return NULL; |