Graham, David,
some time ago we had a discussion about the usefulness of a patch from Alexei: http://lists.nongnu.org/archive/html/freetype-devel/2010-11/msg00010.html However, right now the usefulness is evident, since applying the patch fixes the quite serious issue #37017. :-) https://savannah.nongnu.org/bugs/index.php?37017 For reference, I'm attaching his patch below. In case you have Bézier harness tests, please run them! Alexei, please extend the comment so that normal mortals like me can better understand the mathematical logic behind your change, then apply it. Werner ====================================================================== diff --git a/src/smooth/ftgrays.c b/src/smooth/ftgrays.c index a7a18f2..bb263fb 100644 --- a/src/smooth/ftgrays.c +++ b/src/smooth/ftgrays.c @@ -1082,10 +1082,8 @@ typedef ptrdiff_t FT_PtrDist; goto Split; /* If P1 or P2 is outside P0-P3, split the curve. */ - if ( dy * dy1 + dx * dx1 < 0 || - dy * dy2 + dx * dx2 < 0 || - dy * (arc[3].y - arc[1].y) + dx * (arc[3].x - arc[1].x) < 0 || - dy * (arc[3].y - arc[2].y) + dx * (arc[3].x - arc[2].x) < 0 ) + if ( dx1 * ( dx1 - dx ) + dy1 * ( dy1 - dy ) > 0 || + dx2 * ( dx2 - dx ) + dy2 * ( dy2 - dy ) > 0 ) goto Split; /* No reason to split. */ _______________________________________________ Freetype-devel mailing list Freetype-devel@nongnu.org https://lists.nongnu.org/mailman/listinfo/freetype-devel