diff options
author | Owen Taylor <otaylor@redhat.com> | 2002-07-03 22:40:20 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 2002-07-03 22:40:20 +0000 |
commit | 6ebb942adbf89cfda1ac868a47057d9cabe91780 (patch) | |
tree | 3ab14e74a3a4c61a0c1e9ae32cfaf6bc13aafaff /pango/pangoxft-font.c | |
parent | 145341236ea2dad9e5a0e7270d0b6dc7d9b09770 (diff) | |
download | pango-6ebb942adbf89cfda1ac868a47057d9cabe91780.tar.gz |
Be more robust when trying to set the unicode character map on the font.
Wed Jul 3 18:39:45 2002 Owen Taylor <otaylor@redhat.com>
* pango/pangoft2.c pango/pangoxft-font.c: Be more
robust when trying to set the unicode character
map on the font.
* pango/pangoft2.c pango/pangoft2-private.h:
Obey FC_HINTING, FC_AUTOHINT.
Diffstat (limited to 'pango/pangoxft-font.c')
-rw-r--r-- | pango/pangoxft-font.c | 45 |
1 files changed, 43 insertions, 2 deletions
diff --git a/pango/pangoxft-font.c b/pango/pangoxft-font.c index 48fea5c0..2d017bde 100644 --- a/pango/pangoxft-font.c +++ b/pango/pangoxft-font.c @@ -685,6 +685,44 @@ pango_xft_font_find_shaper (PangoFont *font, return (PangoEngineShape *)pango_map_get_engine (shape_map, ch); } +gboolean +set_unicode_charmap (FT_Face face) +{ + int charmap; + + for (charmap = 0; charmap < face->num_charmaps; charmap++) + if (face->charmaps[charmap]->encoding == ft_encoding_unicode) + { + FT_Error error = FT_Set_Charmap(face, face->charmaps[charmap]); + return error == FT_Err_Ok; + } + + return FALSE; +} + +void +load_fallback_font (PangoXftFont *xfont) +{ + Display *display; + int screen; + XftFont *xft_font; + + _pango_xft_font_map_get_info (xfont->fontmap, &display, &screen); + + xft_font = XftFontOpen (display, screen, + FC_FAMILY, FcTypeString, "sans", + FC_SIZE, FcTypeDouble, (double)pango_font_description_get_size (xfont->description)/PANGO_SCALE, + NULL); + + if (!xft_font) + { + g_warning ("Cannot open fallback font, nothing to do"); + exit (1); + } + + xfont->xft_font = xft_font; +} + /** * pango_xft_font_get_font: * @font: a #PangoFont. @@ -711,8 +749,11 @@ pango_xft_font_get_font (PangoFont *font) xfont->xft_font = XftFontOpenPattern (display, FcPatternDuplicate (xfont->font_pattern)); if (!xfont->xft_font) { - g_warning ("Cannot open fallback font, nothing to do"); - exit (1); + gchar *name = pango_font_description_to_string (xfont->description); + g_warning ("Cannot open font file for font %s", name); + g_free (name); + + load_fallback_font (xfont); } } |