PANGO_FC_FONT_UNLOCK_FACE (fcfont);
}
+PangoFontMetrics *
+pango_fc_font_create_base_metrics_for_context (PangoFcFont *fcfont,
+ PangoContext *context)
+{
+ PangoFontMetrics *metrics;
+ metrics = pango_font_metrics_new ();
+
+ get_face_metrics (fcfont, metrics);
+
+ return metrics;
+}
+
static int
max_glyph_width (PangoLayout *layout)
{
return max_width;
}
-PangoFontMetrics *
-pango_fc_font_create_metrics_for_context (PangoFcFont *fcfont,
- PangoContext *context)
-{
- PangoFontMetrics *metrics;
- PangoLayout *layout;
- PangoRectangle extents;
- PangoLanguage *language = pango_context_get_language (context);
- const char *sample_str = pango_language_get_sample_string (language);
- PangoFontDescription *desc = pango_font_describe_with_absolute_size (PANGO_FONT (fcfont));
-
- metrics = pango_font_metrics_new ();
-
- get_face_metrics (fcfont, metrics);
-
- layout = pango_layout_new (context);
- pango_layout_set_font_description (layout, desc);
- pango_font_description_free (desc);
-
- pango_layout_set_text (layout, sample_str, -1);
- pango_layout_get_extents (layout, NULL, &extents);
-
- metrics->approximate_char_width =
- extents.width / pango_utf8_strwidth (sample_str);
-
- pango_layout_set_text (layout, "0123456789", -1);
- metrics->approximate_digit_width = max_glyph_width (layout);
-
- g_object_unref (layout);
-
- return metrics;
-}
-
-/* This function is cut-and-pasted into pangocairo-fcfont.c - it might be
- * better to add a virtual fcfont->create_context (font).
- */
static PangoFontMetrics *
pango_fc_font_get_metrics (PangoFont *font,
PangoLanguage *language)
context = pango_font_map_create_context (fontmap);
pango_context_set_language (context, language);
- info->metrics = pango_fc_font_create_metrics_for_context (fcfont, context);
+ info->metrics = pango_fc_font_create_base_metrics_for_context (fcfont, context);
+
+ { /* Compute derived metrics */
+ PangoLayout *layout;
+ PangoRectangle extents;
+ const char *sample_str = pango_language_get_sample_string (language);
+ PangoFontDescription *desc = pango_font_describe_with_absolute_size (font);
+
+ layout = pango_layout_new (context);
+ pango_layout_set_font_description (layout, desc);
+ pango_font_description_free (desc);
+
+ pango_layout_set_text (layout, sample_str, -1);
+ pango_layout_get_extents (layout, NULL, &extents);
+
+ info->metrics->approximate_char_width = extents.width / pango_utf8_strwidth (sample_str);
+
+ pango_layout_set_text (layout, "0123456789", -1);
+ info->metrics->approximate_digit_width = max_glyph_width (layout);
+
+ g_object_unref (layout);
+ }
g_object_unref (context);
g_object_unref (fontmap);
}
/**
- * pango_fc_font_kern_glyphs
+ * pango_fc_font_kern_glyphs:
* @font: a #PangoFcFont
* @glyphs: a #PangoGlyphString
*
}
/**
- * _pango_fc_font_get_decoder
+ * _pango_fc_font_get_decoder:
* @font: a #PangoFcFont
*
* This will return any custom decoder set on this font.
}
/**
- * _pango_fc_font_set_decoder
+ * _pango_fc_font_set_decoder:
* @font: a #PangoFcFont
* @decoder: a #PangoFcDecoder to set for this font
*