summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBehdad Esfahbod <behdad@gnome.org>2006-12-24 04:43:17 +0000
committerBehdad Esfahbod <behdad@src.gnome.org>2006-12-24 04:43:17 +0000
commit856f7cec6ef16a1624c48e58e0e43520978b9745 (patch)
treeb242fb81284500b5ccee3460a25d8613b7099833
parentd9fb0e4a427970f639c0e922f288cb2aac7dc8fe (diff)
downloadpango-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--ChangeLog22
-rw-r--r--pango/pangocairo-fcfontmap.c5
-rw-r--r--pango/pangofc-fontmap.c5
-rw-r--r--pango/pangoft2-fontmap.c8
-rw-r--r--pango/pangoft2-private.h3
-rw-r--r--pango/pangoft2.c2
6 files changed, 37 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index 3e0e5295..76f2503d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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)