mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-24 06:20:43 -08:00
Handle Cairo errors in ftcrfont_open
* src/ftcrfont.c (ftcrfont_open): Handle Cairo errors (bug#41627).
(cherry picked from commit 954a4decfc)
This commit is contained in:
parent
29af10afe8
commit
0cdd6c9218
1 changed files with 14 additions and 2 deletions
|
|
@ -139,7 +139,8 @@ ftcrfont_open (struct frame *f, Lisp_Object entity, int pixel_size)
|
|||
|
||||
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);
|
||||
|
|
@ -154,6 +155,18 @@ ftcrfont_open (struct frame *f, Lisp_Object entity, int pixel_size)
|
|||
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),
|
||||
|
|
@ -231,7 +244,6 @@ ftcrfont_open (struct frame *f, Lisp_Object entity, int pixel_size)
|
|||
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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue