* src/truetype/ttobjs.c (tt_size_run_prep): Reset reference points.

Up to now, we simply took a snapshot of the Graphics State after the
`prep' table has been executed, and right before a glyph's bytecode
was run it got reloaded.  However, as Greg Hitchcock has told us in
private communication, reference points get reset to zero in the MS
rasterizer and we follow in due course.  While reasonable, this is
undocumented behaviour.

Most notably, this fixes the rendering of Arial's `x' glyph in
subpixel hinting mode.
This commit is contained in:
Werner Lemberg 2013-02-06 08:47:29 +01:00
parent 00dfa3304e
commit bfcc375b06
2 changed files with 19 additions and 0 deletions

View File

@ -1,3 +1,17 @@
2013-02-06 Werner Lemberg <wl@gnu.org>
* src/truetype/ttobjs.c (tt_size_run_prep): Reset reference points.
Up to now, we simply took a snapshot of the Graphics State after the
`prep' table has been executed, and right before a glyph's bytecode
was run it got reloaded. However, as Greg Hitchcock has told us in
private communication, reference points get reset to zero in the MS
rasterizer and we follow in due course. While reasonable, this is
undocumented behaviour.
Most notably, this fixes the rendering of Arial's `x' glyph in
subpixel hinting mode.
2013-02-05 Werner Lemberg <wl@gnu.org>
[truetype] A better fix for Savannah bug #38211.

View File

@ -878,6 +878,11 @@
else
error = TT_Err_Ok;
/* UNDOCUMENTED! Reference points are reset to zero. */
exec->GS.rp0 = 0;
exec->GS.rp1 = 0;
exec->GS.rp2 = 0;
/* save as default graphics state */
size->GS = exec->GS;