diff options
Diffstat (limited to 'pango/pangofc-fontmap.c')
-rw-r--r-- | pango/pangofc-fontmap.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/pango/pangofc-fontmap.c b/pango/pangofc-fontmap.c index dd066cd3..03d508dd 100644 --- a/pango/pangofc-fontmap.c +++ b/pango/pangofc-fontmap.c @@ -228,6 +228,9 @@ static PangoFont *pango_fc_font_map_new_font (PangoFcFontMap *fontmap, PangoFcFontsetKey *fontset_key, FcPattern *match); +static PangoFontFace *pango_fc_font_map_get_face (PangoFontMap *fontmap, + PangoFont *font); + static guint pango_fc_font_face_data_hash (PangoFcFontFaceData *key); static gboolean pango_fc_font_face_data_equal (PangoFcFontFaceData *key1, PangoFcFontFaceData *key2); @@ -1193,6 +1196,7 @@ pango_fc_font_map_class_init (PangoFcFontMapClass *class) fontmap_class->load_fontset = pango_fc_font_map_load_fontset; fontmap_class->list_families = pango_fc_font_map_list_families; fontmap_class->get_family = pango_fc_font_map_get_family; + fontmap_class->get_face = pango_fc_font_map_get_face; fontmap_class->shape_engine_type = PANGO_RENDER_TYPE_FC; } @@ -1709,6 +1713,26 @@ pango_fc_font_map_new_font (PangoFcFontMap *fcfontmap, return (PangoFont *)fcfont; } +static PangoFontFace * +pango_fc_font_map_get_face (PangoFontMap *fontmap, + PangoFont *font) +{ + PangoFcFont *fcfont = PANGO_FC_FONT (font); + FcResult res; + const char *s; + PangoFontFamily *family; + + res = FcPatternGetString (fcfont->font_pattern, FC_FAMILY, 0, (FcChar8 **) &s); + g_assert (res == FcResultMatch); + + family = pango_font_map_get_family (fontmap, s); + + res = FcPatternGetString (fcfont->font_pattern, FC_STYLE, 0, (FcChar8 **)(void*)&s); + g_assert (res == FcResultMatch); + + return pango_font_family_get_face (family, s); +} + static void pango_fc_default_substitute (PangoFcFontMap *fontmap, PangoFcFontsetKey *fontsetkey, |