summaryrefslogtreecommitdiff
path: root/pango/pangofc-font.c
diff options
context:
space:
mode:
Diffstat (limited to 'pango/pangofc-font.c')
-rw-r--r--pango/pangofc-font.c23
1 files changed, 17 insertions, 6 deletions
diff --git a/pango/pangofc-font.c b/pango/pangofc-font.c
index dec1f680..f48cffb7 100644
--- a/pango/pangofc-font.c
+++ b/pango/pangofc-font.c
@@ -560,14 +560,19 @@ pango_fc_font_real_get_glyph (PangoFcFont *font,
if (entry->ch != wc)
{
face = PANGO_FC_FONT_LOCK_FACE (font);
- index = FcFreeTypeCharIndex (face, wc);
- if (index > (FT_UInt)face->num_glyphs)
- index = 0;
+ if (G_LIKELY (face))
+ {
+ index = FcFreeTypeCharIndex (face, wc);
+ if (index > (FT_UInt)face->num_glyphs)
+ index = 0;
+
+ PANGO_FC_FONT_UNLOCK_FACE (font);
+ }
+ else
+ index = 0;
entry->ch = wc;
entry->glyph = index;
-
- PANGO_FC_FONT_UNLOCK_FACE (font);
}
return entry->glyph;
@@ -729,7 +734,7 @@ pango_fc_font_kern_glyphs (PangoFcFont *font,
g_return_if_fail (glyphs != NULL);
face = PANGO_FC_FONT_LOCK_FACE (font);
- if (!face)
+ if (G_UNLIKELY (!face))
return;
if (!FT_HAS_KERNING (face))
@@ -871,6 +876,12 @@ pango_fc_font_get_raw_extents (PangoFcFont *fcfont,
g_return_if_fail (PANGO_IS_FC_FONT (fcfont));
face = PANGO_FC_FONT_LOCK_FACE (fcfont);
+ if (G_UNLIKELY (!face))
+ {
+ /* Get generic unknown-glyph extents. */
+ pango_font_get_glyph_extents (NULL, glyph, ink_rect, logical_rect);
+ return;
+ }
if (glyph == PANGO_GLYPH_EMPTY)
gm = NULL;