diff options
author | Werner Lemberg <wl@gnu.org> | 2013-02-01 12:55:44 +0100 |
---|---|---|
committer | Werner Lemberg <wl@gnu.org> | 2013-02-01 12:55:44 +0100 |
commit | 40633205287c8e9ea80e9b8824d8ca5ab651edf1 (patch) | |
tree | 02cfc0bc102456f26b4f2c3a6cd88e825c7ed681 | |
parent | fba917d0e70da17eb1807b16363cb7d1a6ecef39 (diff) | |
download | freetype2-40633205287c8e9ea80e9b8824d8ca5ab651edf1.tar.gz |
[truetype] Fix Savannah bug #38211.
* src/truetype/ttinterp.c (Ins_IP): Make FreeType behave identical
to other interpreters if rp1 == rp2 (which is invalid).
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | src/truetype/ttinterp.c | 15 |
2 files changed, 19 insertions, 3 deletions
@@ -1,3 +1,10 @@ +2013-02-01 Werner Lemberg <wl@gnu.org> + + [truetype] Fix Savannah bug #38211. + + * src/truetype/ttinterp.c (Ins_IP): Make FreeType behave identical + to other interpreters if rp1 == rp2 (which is invalid). + 2013-01-28 Alexei Podtelezhnikov <apodtele@gmail.com> [base] Small optimization of BBox calculation. diff --git a/src/truetype/ttinterp.c b/src/truetype/ttinterp.c index d1fd80584..4e4a5bfbe 100644 --- a/src/truetype/ttinterp.c +++ b/src/truetype/ttinterp.c @@ -6974,9 +6974,18 @@ cur_dist = CUR_Func_project ( &CUR.zp2.cur[point], cur_base ); if ( org_dist ) - new_dist = ( old_range != 0 ) - ? FT_MulDiv( org_dist, cur_range, old_range ) - : cur_dist; + { + if ( old_range ) + new_dist = FT_MulDiv( org_dist, cur_range, old_range ); + else + { + /* use the middle position */ + new_dist = cur_dist - + CUR_fast_dualproj( &CUR.zp2.cur[point] ) + + ( CUR_fast_dualproj( &CUR.zp1.cur[CUR.GS.rp1] ) + + CUR_fast_dualproj( &CUR.zp1.cur[CUR.GS.rp2] ) ) / 2; + } + } else new_dist = 0; |