shithub: freetype+ttf2subf

Download patch

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.

git/fs: mount .git/fs: mount/attach disallowed
--- 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. */