From: Cristy Date: Fri, 19 Oct 2018 00:23:00 +0000 (-0400) Subject: Not all fonts support outlines for printable characters such as `A' X-Git-Tag: 7.0.8-13~6 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=91028f121061ae5a55f1b7801c7b4e110e3c0a77;p=imagemagick Not all fonts support outlines for printable characters such as `A' --- diff --git a/MagickCore/annotate.c b/MagickCore/annotate.c index 187aaa909..78a294547 100644 --- a/MagickCore/annotate.c +++ b/MagickCore/annotate.c @@ -1559,6 +1559,9 @@ static MagickBooleanType RenderFreetype(Image *image,const DrawInfo *draw_info, code=0; for (i=0; i < (ssize_t) length; i++) { + FT_Outline + outline; + /* Render UTF-8 sequence. */ @@ -1576,8 +1579,8 @@ static MagickBooleanType RenderFreetype(Image *image,const DrawInfo *draw_info, ft_status=FT_Get_Glyph(face->glyph,&glyph.image); if (ft_status != 0) continue; - ft_status=FT_Outline_Get_BBox(&((FT_OutlineGlyph) glyph.image)->outline, - &bounds); + outline=((FT_OutlineGlyph) glyph.image)->outline; + ft_status=FT_Outline_Get_BBox(&outline,&bounds); if (ft_status != 0) continue; if ((p == draw_info->text) || (bounds.xMin < metrics->bounds.x1)) @@ -1601,8 +1604,9 @@ static MagickBooleanType RenderFreetype(Image *image,const DrawInfo *draw_info, */ annotate_info->affine.tx=glyph.origin.x/64.0; annotate_info->affine.ty=(-glyph.origin.y/64.0); - (void) FT_Outline_Decompose(&((FT_OutlineGlyph) glyph.image)->outline, - &OutlineMethods,annotate_info); + if ((outline.n_contours > 0) && (outline.n_points > 0)) + ft_status=FT_Outline_Decompose(&outline,&OutlineMethods, + annotate_info); } FT_Vector_Transform(&glyph.origin,&affine); (void) FT_Glyph_Transform(glyph.image,&affine,&glyph.origin);