[smooth] Limit acceptable glyph complexity.
* src/smooth/ftgrays.c (gray_convert_glyph): Do not attempt to draw glyphs with taxicab:cbox perimeter ratio above 20.
This commit is contained in:
parent
7bdd4d1a00
commit
819d73f658
|
@ -2011,9 +2011,20 @@ typedef ptrdiff_t FT_PtrDist;
|
||||||
int continued = 0;
|
int continued = 0;
|
||||||
|
|
||||||
|
|
||||||
size = gray_taxi( RAS_VAR ) +
|
size = gray_taxi( RAS_VAR );
|
||||||
height * sizeof ( PCell ) / sizeof ( TCell ) +
|
|
||||||
9; /* empirical extra for local extrema */
|
/* taxicab perimeters in excess of 20 CBox perimeters are */
|
||||||
|
/* not drawn unless in direct mode with possible clipping */
|
||||||
|
if ( !ras.render_span &&
|
||||||
|
size > 20 * 2 * ( ras.max_ex - ras.min_ex + height ) )
|
||||||
|
{
|
||||||
|
FT_TRACE5(( "Blanking on taxi:cbox = %.2lf\n",
|
||||||
|
0.5 * size / ( ras.max_ex - ras.min_ex + height ) ));
|
||||||
|
return FT_THROW( Ok );
|
||||||
|
}
|
||||||
|
|
||||||
|
size += height * sizeof ( PCell ) / sizeof ( TCell ) +
|
||||||
|
9; /* empirical extra for local extrema */
|
||||||
|
|
||||||
if ( FT_QNEW_ARRAY( buffer, size ) )
|
if ( FT_QNEW_ARRAY( buffer, size ) )
|
||||||
return error;
|
return error;
|
||||||
|
|
Loading…
Reference in New Issue