[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.
GSoC-2017-kushal
Ewald Hew 7 years ago
parent 954710ddd7
commit b9bd2d14e2
  1. 16
      ChangeLog
  2. 5
      include/freetype/internal/psaux.h
  3. 2
      src/psaux/psft.c
  4. 3
      src/psaux/psobjs.c

@ -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.

@ -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;

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

@ -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;

Loading…
Cancel
Save