[psaux] Fix CFF advance widths. (#52466)

Glyph advance widths were being written to the new `PS_Decoder' but not
saved to the underlying format specific decoder. This caused pure CFF
fonts to have bad advance width.

* include/freetype/internal/psaux.h (PS_Decoder): Change `glyph_width'
field to pointer.
Remove unused fields.
* src/psaux/psobjs.c (ps_decoder_init): Change `glyph_width' from copy
to reference.
Remove unused.
* src/psaux/psft.c (cf2_setGlyphWidth): Update code.
This commit is contained in:
Ewald Hew 2017-11-22 12:32:47 +08:00
parent 954710ddd7
commit b9bd2d14e2
4 changed files with 19 additions and 7 deletions

View File

@ -1,3 +1,19 @@
2017-11-22 Ewald Hew <ewaldhew@gmail.com>
[psaux] Fix CFF advance widths. (#52466)
Glyph advance widths were being written to the new `PS_Decoder' but not
saved to the underlying format specific decoder. This caused pure CFF
fonts to have bad advance width.
* include/freetype/internal/psaux.h (PS_Decoder): Change `glyph_width'
field to pointer.
Remove unused fields.
* src/psaux/psobjs.c (ps_decoder_init): Change `glyph_width' from copy
to reference.
Remove unused.
* src/psaux/psft.c (cf2_setGlyphWidth): Update code.
2017-11-15 Vlad Tsyrklevich <vtsyrklevich@google.com>
* include/freetype/ftrender.h: Fix `FT_Renderer_RenderFunc' type.

View File

@ -614,10 +614,7 @@ FT_BEGIN_HEADER
CFF_SubFont current_subfont; /* for current glyph_index */
FT_Generic* cf2_instance;
FT_Pos glyph_width;
FT_Pos nominal_width;
FT_Bool read_width;
FT_Pos* glyph_width;
FT_Bool width_only;
FT_Int num_hints;

View File

@ -95,7 +95,7 @@
FT_ASSERT( decoder );
decoder->glyph_width = cf2_fixedToInt( width );
*decoder->glyph_width = cf2_fixedToInt( width );
}

View File

@ -2407,8 +2407,7 @@
ps_decoder->locals = cff_decoder->locals;
ps_decoder->locals_bias = cff_decoder->locals_bias;
ps_decoder->glyph_width = cff_decoder->glyph_width;
ps_decoder->nominal_width = cff_decoder->nominal_width;
ps_decoder->glyph_width = &cff_decoder->glyph_width;
ps_decoder->width_only = cff_decoder->width_only;
ps_decoder->hint_mode = cff_decoder->hint_mode;