diff options
author | Behdad Esfahbod <behdad@gnome.org> | 2006-12-24 04:43:17 +0000 |
---|---|---|
committer | Behdad Esfahbod <behdad@src.gnome.org> | 2006-12-24 04:43:17 +0000 |
commit | 856f7cec6ef16a1624c48e58e0e43520978b9745 (patch) | |
tree | b242fb81284500b5ccee3460a25d8613b7099833 | |
parent | d9fb0e4a427970f639c0e922f288cb2aac7dc8fe (diff) | |
download | pango-856f7cec6ef16a1624c48e58e0e43520978b9745.tar.gz |
Bug 384543 – FcFontMatch misuse
2006-12-23 Behdad Esfahbod <behdad@gnome.org>
Bug 384543 – FcFontMatch misuse
* pango/pangofc-fontmap.c (pango_fc_face_describe):
Call FcConfigSubstitute and FcDefaultSubstitute before calling
FcFontMatch.
* pango/pangoft2.c (load_fallback_face):
Call _pango_ft2_font_map_default_substitute().
* pango/pangocairo-fcfontmap.c
(pango_cairo_fc_font_map_context_substitute):
Handle the case of context == NULL.
-rw-r--r-- | ChangeLog | 22 | ||||
-rw-r--r-- | pango/pangocairo-fcfontmap.c | 5 | ||||
-rw-r--r-- | pango/pangofc-fontmap.c | 5 | ||||
-rw-r--r-- | pango/pangoft2-fontmap.c | 8 | ||||
-rw-r--r-- | pango/pangoft2-private.h | 3 | ||||
-rw-r--r-- | pango/pangoft2.c | 2 |
6 files changed, 37 insertions, 8 deletions
@@ -1,5 +1,27 @@ 2006-12-23 Behdad Esfahbod <behdad@gnome.org> + Bug 384543 – FcFontMatch misuse + + * pango/pangofc-fontmap.c (pango_fc_face_describe): + Call FcConfigSubstitute and FcDefaultSubstitute before calling + FcFontMatch. + + * pango/pangoft2.c (load_fallback_face): + Call _pango_ft2_font_map_default_substitute(). + + * pango/pangocairo-fcfontmap.c + (pango_cairo_fc_font_map_context_substitute): + Handle the case of context == NULL. + +2006-12-23 Behdad Esfahbod <behdad@gnome.org> + + Patch from Eugeniy Meshcheryakov + + * pango/pangofc-fontmap.c (pango_fc_face_describe): + * pango/pangoft2.c (load_fallback_face): + +2006-12-23 Behdad Esfahbod <behdad@gnome.org> + * pango/pango-utils.c (pango_language_get_default): Improve docs. 2006-12-20 Behdad Esfahbod <behdad@gnome.org> diff --git a/pango/pangocairo-fcfontmap.c b/pango/pangocairo-fcfontmap.c index 83a39616..cc1360ba 100644 --- a/pango/pangocairo-fcfontmap.c +++ b/pango/pangocairo-fcfontmap.c @@ -94,8 +94,9 @@ pango_cairo_fc_font_map_context_substitute (PangoFcFontMap *fcfontmap, { FcConfigSubstitute (NULL, pattern, FcMatchPattern); - cairo_ft_font_options_substitute (_pango_cairo_context_get_merged_font_options (context), - pattern); + if (context) + cairo_ft_font_options_substitute (_pango_cairo_context_get_merged_font_options (context), + pattern); FcDefaultSubstitute (pattern); } diff --git a/pango/pangofc-fontmap.c b/pango/pangofc-fontmap.c index 9a343877..f383e904 100644 --- a/pango/pangofc-fontmap.c +++ b/pango/pangofc-fontmap.c @@ -1704,7 +1704,10 @@ pango_fc_face_describe (PangoFontFace *face) NULL); g_assert (match_pattern); - + + FcConfigSubstitute (NULL, match_pattern, FcMatchPattern); + FcDefaultSubstitute (match_pattern); + result_pattern = FcFontMatch (NULL, match_pattern, &res); if (result_pattern) { diff --git a/pango/pangoft2-fontmap.c b/pango/pangoft2-fontmap.c index 333e00bf..639ddebe 100644 --- a/pango/pangoft2-fontmap.c +++ b/pango/pangoft2-fontmap.c @@ -62,8 +62,6 @@ struct _PangoFT2FontMapClass }; static void pango_ft2_font_map_finalize (GObject *object); -static void pango_ft2_font_map_default_substitute (PangoFcFontMap *fcfontmap, - FcPattern *pattern); static PangoFcFont * pango_ft2_font_map_new_font (PangoFcFontMap *fcfontmap, FcPattern *pattern); static double pango_ft2_font_map_get_resolution (PangoFcFontMap *fcfontmap, @@ -80,7 +78,7 @@ pango_ft2_font_map_class_init (PangoFT2FontMapClass *class) PangoFcFontMapClass *fcfontmap_class = PANGO_FC_FONT_MAP_CLASS (class); gobject_class->finalize = pango_ft2_font_map_finalize; - fcfontmap_class->default_substitute = pango_ft2_font_map_default_substitute; + fcfontmap_class->default_substitute = _pango_ft2_font_map_default_substitute; fcfontmap_class->new_font = pango_ft2_font_map_new_font; fcfontmap_class->get_resolution = pango_ft2_font_map_get_resolution; } @@ -323,8 +321,8 @@ _pango_ft2_font_map_get_renderer (PangoFT2FontMap *ft2fontmap) return ft2fontmap->renderer; } -static void -pango_ft2_font_map_default_substitute (PangoFcFontMap *fcfontmap, +void +_pango_ft2_font_map_default_substitute (PangoFcFontMap *fcfontmap, FcPattern *pattern) { PangoFT2FontMap *ft2fontmap = PANGO_FT2_FONT_MAP (fcfontmap); diff --git a/pango/pangoft2-private.h b/pango/pangoft2-private.h index d1c11b90..b79f3b5c 100644 --- a/pango/pangoft2-private.h +++ b/pango/pangoft2-private.h @@ -24,6 +24,7 @@ #define __PANGOFT2_PRIVATE_H__ #include <pango/pangoft2.h> +#include <pango/pangofc-fontmap.h> #include <pango/pango-renderer.h> #include <fontconfig/fontconfig.h> @@ -82,6 +83,8 @@ PangoFT2Font * _pango_ft2_font_new (PangoFT2FontMap *ft2fontmap FcPattern *pattern); FT_Library _pango_ft2_font_map_get_library (PangoFontMap *fontmap); const char *_pango_ft2_ft_strerror (FT_Error error); +void _pango_ft2_font_map_default_substitute (PangoFcFontMap *fcfontmap, + FcPattern *pattern); void *_pango_ft2_font_get_cache_glyph_data (PangoFont *font, int glyph_index); diff --git a/pango/pangoft2.c b/pango/pangoft2.c index 35960a43..b7f1470e 100644 --- a/pango/pangoft2.c +++ b/pango/pangoft2.c @@ -100,6 +100,8 @@ load_fallback_face (PangoFT2Font *ft2font, FC_PIXEL_SIZE, FcTypeDouble, (double)ft2font->size / PANGO_SCALE, NULL); + _pango_ft2_font_map_default_substitute (fcfont->fontmap, sans); + matched = FcFontMatch (NULL, sans, &result); if (FcPatternGetString (matched, FC_FILE, 0, &filename2) != FcResultMatch) |