diff --git a/src/sdf/ftsdfrend.c b/src/sdf/ftsdfrend.c index 420ad496c..6fd104dbf 100644 --- a/src/sdf/ftsdfrend.c +++ b/src/sdf/ftsdfrend.c @@ -350,6 +350,8 @@ error = render->raster_render( render->raster, (const FT_Raster_Params*)¶ms ); + if ( x_shift || y_shift ) + FT_Outline_Translate( outline, -x_shift, -y_shift ); Exit: if ( !error ) { @@ -362,9 +364,6 @@ slot->internal->flags &= ~FT_GLYPH_OWN_BITMAP; } - if ( x_shift || y_shift ) - FT_Outline_Translate( outline, -x_shift, -y_shift ); - return error; } @@ -506,6 +505,16 @@ goto Exit; } + /* do not convert to SDF if the bitmap is not owned by glyph */ + if ( !(slot->internal->flags & FT_GLYPH_OWN_BITMAP) ) + { + FT_ERROR(( "ft_bsdf_render: can't convert bitmap to sdf;\n" )); + FT_ERROR(( " bitmap not owned by glyph.\n" )); + + error = FT_THROW( Invalid_Argument ); + goto Exit; + } + if ( !bitmap->rows || !bitmap->pitch ) goto Exit;