FcPatternDestroy (pat);
font_face = cairo_ft_font_face_create_for_pattern (match);
- if (!font_face)
+ if (!font_face
+ || cairo_font_face_status (font_face) != CAIRO_STATUS_SUCCESS)
{
unblock_input ();
FcPatternDestroy (match);
cairo_font_face_destroy (font_face);
cairo_font_options_destroy (options);
unblock_input ();
+ if (!scaled_font
+ || cairo_scaled_font_status (scaled_font) != CAIRO_STATUS_SUCCESS)
+ {
+ FcPatternDestroy (match);
+ return Qnil;
+ }
+ ft_face = cairo_ft_scaled_font_lock_face (scaled_font);
+ if (!ft_face)
+ {
+ FcPatternDestroy (match);
+ return Qnil;
+ }
font_object = font_build_object (VECSIZE (struct font_info),
AREF (entity, FONT_TYPE_INDEX),
font->descent = font->height - font->ascent;
}
- ft_face = cairo_ft_scaled_font_lock_face (scaled_font);
if (XFIXNUM (AREF (entity, FONT_SIZE_INDEX)) == 0)
{
int upEM = ft_face->units_per_EM;