ref: bfcc375b06e26cb85e7a74b51f8d1e7915ca7457
parent: 00dfa3304e7275c1cba822ebd9e760b63d4601fd
author: Werner Lemberg <[email protected]>
date: Wed Feb 6 03:47:29 EST 2013
* 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.
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2013-02-06 Werner Lemberg <[email protected]>
+
+ * 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 <[email protected]>
[truetype] A better fix for Savannah bug #38211.
--- a/src/truetype/ttobjs.c
+++ b/src/truetype/ttobjs.c
@@ -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;