ref: 9ea55c7c333e47345de2dff0e613e3e23dc8fdd3
parent: 5b995a8dd849a309038103fc1c96c3040a04f81b
author: Alexei Podtelezhnikov <[email protected]>
date: Sun Aug 12 07:14:46 EDT 2012
Fix Savannah bug #37017. * src/smooth/ftgrays.c (gray_render_cubic): Use a different set of checks when detecting super curvy splines to be split.
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2012-08-12 Alexei Podtelezhnikov <[email protected]>
+
+ Fix Savannah bug #37017.
+
+ * src/smooth/ftgrays.c (gray_render_cubic): Use a different set of
+ checks when detecting super curvy splines to be split.
+
2012-08-05 Werner Lemberg <[email protected]>
[autofit] Improve recognition of flat segments.
@@ -43,6 +50,12 @@
* src/type1/t1load.c (parse_encoding): Check cursor position after
call to T1_Skip_PS_Token.
+
+2012-07-12 Alexei Podtelezhnikov <[email protected]>
+
+ Revert the last commit 45337b07.
+
+ * src/base/ftstroke.c (FT_Stroker_New): Revert the previous chenge.
2012-07-11 Alexei Podtelezhnikov <[email protected]>
--- a/src/smooth/ftgrays.c
+++ b/src/smooth/ftgrays.c
@@ -1091,11 +1091,11 @@
if ( s > s_limit )
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 )
+ /* Split super curvy segments where the off points are so far
+ from the chord that the angles P0-P1-P3 or P0-P2-P3 become
+ acute as detected by appropriate dot products. */
+ if ( dx1 * ( dx1 - dx ) + dy1 * ( dy1 - dy ) > 0 ||
+ dx2 * ( dx2 - dx ) + dy2 * ( dy2 - dy ) > 0 )
goto Split;
/* No reason to split. */