Commit e845a85ea5fee7f4e6c2ebfc6266a0d8fe81426b

Dave Arnold 2013-10-03T23:04:29

* src/cff/cf2font.c (cf2_computeDarkening): Avoid division by zero.

diff --git a/ChangeLog b/ChangeLog
index 10acbbf..2e21e75 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2013-10-03  Dave Arnold  <darnold@adobe.com>
+
+	* src/cff/cf2font.c (cf2_computeDarkening): Avoid division by zero.
+
 2013-10-02  Darrell Bellert  <darrell.bellert@hl.konicaminolta.us>
 
 	* src/sfnt/ttload.c (tt_face_load_pclt): Fix `pclt_fields'.
diff --git a/src/cff/cf2font.c b/src/cff/cf2font.c
index 2eb7732..718d1e2 100644
--- a/src/cff/cf2font.c
+++ b/src/cff/cf2font.c
@@ -98,9 +98,15 @@
      */
 
     /* Internal calculations are done in units per thousand for */
-    /* convenience.                                             */
+    /* convenience. The x axis is scaled stem width in          */
+    /* thousandths of a pixel. That is, 1000 is 1 pixel.        */
+    /* The y axis is darkening amount in thousandths of a pixel.*/
+    /* In the code, below, dividing by ppem and                 */
+    /* adjusting for emRatio converts darkenAmount to character */
+    /* space (font units).                                      */
     CF2_Fixed  stemWidthPer1000, scaledStem;
 
+
     *darkenAmount = 0;
 
     if ( boldenAmount == 0 && !stemDarkened )
@@ -158,7 +164,7 @@
                            FT_DivFix( cf2_intToFixed( x1 ), ppem );
 
 
-        if ( !ydelta )
+        if ( !xdelta )
           goto Try_x3;
 
         *darkenAmount = FT_MulFix( x, FT_DivFix( ydelta, xdelta ) ) +
@@ -175,7 +181,7 @@
                              FT_DivFix( cf2_intToFixed( x2 ), ppem );
 
 
-          if ( !ydelta )
+          if ( !xdelta )
             goto Try_x4;
 
           *darkenAmount = FT_MulFix( x, FT_DivFix( ydelta, xdelta ) ) +
@@ -193,7 +199,7 @@
                              FT_DivFix( cf2_intToFixed( x3 ), ppem );
 
 
-          if ( !ydelta )
+          if ( !xdelta )
             goto Use_y4;
 
           *darkenAmount = FT_MulFix( x, FT_DivFix( ydelta, xdelta ) ) +