ref: f9350be1e45baa1c29f7551274982262f8e769ce
parent: 52f2a008f171a820007a1bc71b44eb736e69500c
author: Ben Wagner <[email protected]>
date: Thu Apr 1 05:44:00 EDT 2021
[base] Complete `ft_glyphslot_clear`. * src/base/ftobjs.c (ft_glyphslot_clear): This function is intended to reset all the values of a glyph slot. However, it was not resetting the values of the advances and `glyph_index`. Reset the advances and `glyph_index` to zero.
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
2021-04-02 Ben Wagner <[email protected]>
+ [base] Complete `ft_glyphslot_clear`.
+
+ * src/base/ftobjs.c (ft_glyphslot_clear): This function is intended
+ to reset all the values of a glyph slot. However, it was not
+ resetting the values of the advances and `glyph_index`. Reset the
+ advances and `glyph_index` to zero.
+
+2021-04-02 Ben Wagner <[email protected]>
+
[truetype] Prevent glyph program state from persisting.
`FDEF` instructions are specified as allowed only in 'prep' or
--- a/src/base/ftobjs.c
+++ b/src/base/ftobjs.c
@@ -539,6 +539,8 @@
ft_glyphslot_free_bitmap( slot );
/* clear all public fields in the glyph slot */
+ slot->glyph_index = 0;
+
FT_ZERO( &slot->metrics );
FT_ZERO( &slot->outline );
@@ -559,6 +561,8 @@
slot->linearHoriAdvance = 0;
slot->linearVertAdvance = 0;
+ slot->advance.x = 0;
+ slot->advance.y = 0;
slot->lsb_delta = 0;
slot->rsb_delta = 0;
}