[truetype] Fix handling of MIRP instruction.

Thanks to Greg Hitchcock who explained the issue.

* src/truetype/ttinterp.c (Ins_MIRP): Replace a `>=' operator with
`>' since the description in the specification is incorrect.
This fixes, for example, glyph `two' in font `Helvetica Neue LT Com
65 medium' at 15ppem.
This commit is contained in:
Werner Lemberg 2011-01-18 07:35:26 +01:00
parent 17f54bc66c
commit dcdb3167dc
2 changed files with 26 additions and 1 deletions

View File

@ -1,3 +1,14 @@
2011-01-18 Werner Lemberg <wl@gnu.org>
[truetype] Fix handling of MIRP instruction.
Thanks to Greg Hitchcock who explained the issue.
* src/truetype/ttinterp.c (Ins_MIRP): Replace a `>=' operator with
`>' since the description in the specification is incorrect.
This fixes, for example, glyph `two' in font `Helvetica Neue LT Com
65 medium' at 15ppem.
2011-01-15 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
Fix ARM assembly code in include/freetype/config/ftconfig.h.

View File

@ -6244,8 +6244,22 @@
/* refer to the same zone. */
if ( CUR.GS.gep0 == CUR.GS.gep1 )
if ( FT_ABS( cvt_dist - org_dist ) >= CUR.GS.control_value_cutin )
{
/* XXX: According to Greg Hitchcock, the following wording is */
/* the right one: */
/* */
/* When the absolute difference between the value in */
/* the table [CVT] and the measurement directly from */
/* the outline is _greater_ than the cut_in value, the */
/* outline measurement is used. */
/* */
/* This is from `instgly.doc'. The description in */
/* `ttinst2.doc', version 1.66, is thus incorrect since */
/* it implies `>=' instead of `>'. */
if ( FT_ABS( cvt_dist - org_dist ) > CUR.GS.control_value_cutin )
cvt_dist = org_dist;
}
distance = CUR_Func_round(
cvt_dist,