diff --git a/ChangeLog b/ChangeLog index 10acbbf07..2e21e7521 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2013-10-03 Dave Arnold + + * src/cff/cf2font.c (cf2_computeDarkening): Avoid division by zero. + 2013-10-02 Darrell Bellert * src/sfnt/ttload.c (tt_face_load_pclt): Fix `pclt_fields'. diff --git a/src/cff/cf2font.c b/src/cff/cf2font.c index 2eb77322e..718d1e27e 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 ) ) +