ref: ebb1735aa79f71b2f0c78bc1c5586d3e034d6c11
parent: d52dd7f31d958980331fdffec70588785669a327
author: Ewald Hew <[email protected]>
date: Mon Sep 25 04:26:57 EDT 2017
Move `psdecode' into `psobjs'. As the former only contains a single procedure, move it into `psobjs' for simplicity. Also change the parameter order to the conventional one. * src/psaux/psdecode.c (ps_decoder_init): Moved to... * src/psaux/psobjs.c: ...Here. * src/psaux/psdecode.h, src/psaux/psobjs.h: Ditto. * include/freetype/internal/psaux.h (PSAux_ServiceRec): Update `ps_decoder_init' function signature. * src/cff/cffgload.c, src/cid/cidgload.c, src/type1/t1gload.c: Update calls. * src/psaux/psaux.c, src/psaux/psauxmod.c: Update includes. * src/psaux/Jamfile (_sources), src/psaux/rules.mk (PSAUX_DRV_SRC): Update file references.
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,28 @@
2017-09-25 Ewald Hew <[email protected]>
+ [psaux] Move `psdecode' into `psobjs'.
+
+ As the former only contains a single procedure, move it into
+ `psobjs' for simplicity. Also change the parameter order to the
+ conventional one.
+
+ * src/psaux/psdecode.c (ps_decoder_init): Moved to...
+ * src/psaux/psobjs.c: ...Here.
+ * src/psaux/psdecode.h, src/psaux/psobjs.h: Ditto.
+
+ * include/freetype/internal/psaux.h (PSAux_ServiceRec): Update
+ `ps_decoder_init' function signature.
+
+ * src/cff/cffgload.c, src/cid/cidgload.c, src/type1/t1gload.c:
+ Update calls.
+
+ * src/psaux/psaux.c, src/psaux/psauxmod.c: Update includes.
+
+ * src/psaux/Jamfile (_sources), src/psaux/rules.mk (PSAUX_DRV_SRC):
+ Update file references.
+
+2017-09-25 Ewald Hew <[email protected]>
+
[psaux] Fix Type 1 hinting.
Type 1 hinting breaks sometimes when mid-charstring hints should
--- a/include/freetype/internal/psaux.h
+++ b/include/freetype/internal/psaux.h
@@ -1286,9 +1286,9 @@
(*cff_random)( FT_UInt32 r );
void
- (*ps_decoder_init)( void* decoder,
- FT_Bool is_t1,
- PS_Decoder* ps_decoder );
+ (*ps_decoder_init)( PS_Decoder* ps_decoder,
+ void* decoder,
+ FT_Bool is_t1 );
void
(*t1_make_subfont)( FT_Face face,
--- a/src/cff/cffgload.c
+++ b/src/cff/cffgload.c
@@ -435,7 +435,7 @@
else
#endif
{
- psaux->ps_decoder_init( &decoder, FALSE, &psdecoder );
+ psaux->ps_decoder_init( &psdecoder, &decoder, FALSE );
error = decoder_funcs->parse_charstrings( &psdecoder,
charstring,
--- a/src/cid/cidgload.c
+++ b/src/cid/cidgload.c
@@ -187,7 +187,7 @@
CFF_SubFontRec subfont;
- psaux->ps_decoder_init( decoder, TRUE, &psdecoder );
+ psaux->ps_decoder_init( &psdecoder, decoder, TRUE );
psaux->t1_make_subfont( FT_FACE( face ), &dict->private_dict, &subfont );
psdecoder.current_subfont = &subfont;
--- a/src/psaux/Jamfile
+++ b/src/psaux/Jamfile
@@ -23,7 +23,6 @@
t1cmap
t1decode
cffdecode
- psdecode
psarrst
psblues
pserror
--- a/src/psaux/psaux.c
+++ b/src/psaux/psaux.c
@@ -26,7 +26,6 @@
#include "t1cmap.c"
#include "t1decode.c"
#include "cffdecode.c"
-#include "psdecode.c"
#include "psarrst.c"
#include "psblues.c"
--- a/src/psaux/psauxmod.c
+++ b/src/psaux/psauxmod.c
@@ -23,7 +23,6 @@
#include "t1cmap.h"
#include "psft.h"
#include "cffdecode.h"
-#include "psdecode.h"
#ifndef T1_CONFIG_OPTION_NO_AFM
#include "afmparse.h"
--- a/src/psaux/psdecode.c
+++ /dev/null
@@ -1,91 +1,0 @@
-
-
-#include <ft2build.h>
-#include FT_INTERNAL_SERVICE_H
-
-#include "psdecode.h"
-#include "psobjs.h"
-
-#include "psauxerr.h"
-
-
- /*************************************************************************/
- /* */
- /* <Function> */
- /* ps_decoder_init */
- /* */
- /* <Description> */
- /* Creates a decoder for the combined Type 1 / CFF interpreter. */
- /* */
- /* <InOut> */
- /* decoder :: A pointer to the glyph builder to initialize. */
- /* */
- /* <Input> */
- /* */
- /* */
- /* */
- /* */
- /* */
- FT_LOCAL_DEF( void )
- ps_decoder_init( void* decoder,
- FT_Bool is_t1,
- PS_Decoder* ps_decoder )
- {
- FT_ZERO( ps_decoder );
-
- if ( is_t1 )
- {
- T1_Decoder t1_decoder = (T1_Decoder)decoder;
-
- ps_builder_init( &t1_decoder->builder,
- is_t1,
- &ps_decoder->builder );
-
- ps_decoder->cf2_instance = &t1_decoder->cf2_instance;
- ps_decoder->psnames = t1_decoder->psnames;
-
- ps_decoder->num_glyphs = t1_decoder->num_glyphs;
- ps_decoder->glyph_names = t1_decoder->glyph_names;
- ps_decoder->hint_mode = t1_decoder->hint_mode;
- ps_decoder->blend = t1_decoder->blend;
-
- ps_decoder->num_locals = t1_decoder->num_subrs;
- ps_decoder->locals = t1_decoder->subrs;
- ps_decoder->locals_len = t1_decoder->subrs_len;
- ps_decoder->locals_hash = t1_decoder->subrs_hash;
-
- ps_decoder->buildchar = t1_decoder->buildchar;
- ps_decoder->len_buildchar = t1_decoder->len_buildchar;
-
- ps_decoder->lenIV = t1_decoder->lenIV;
- }
- else
- {
- CFF_Decoder* cff_decoder = (CFF_Decoder*)decoder;
-
- ps_builder_init( &cff_decoder->builder,
- is_t1,
- &ps_decoder->builder );
-
- ps_decoder->cff = cff_decoder->cff;
- ps_decoder->cf2_instance = &cff_decoder->cff->cf2_instance;
- ps_decoder->current_subfont = cff_decoder->current_subfont;
-
- ps_decoder->num_globals = cff_decoder->num_globals;
- ps_decoder->globals = cff_decoder->globals;
- ps_decoder->globals_bias = cff_decoder->globals_bias;
- ps_decoder->num_locals = cff_decoder->num_locals;
- 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->width_only = cff_decoder->width_only;
-
- ps_decoder->hint_mode = cff_decoder->hint_mode;
-
- ps_decoder->get_glyph_callback = cff_decoder->get_glyph_callback;
- ps_decoder->free_glyph_callback = cff_decoder->free_glyph_callback;
- }
- }
-
--- a/src/psaux/psdecode.h
+++ /dev/null
@@ -1,20 +1,0 @@
-#ifndef PSDECODE_H_
-#define PSDECODE_H_
-
-
-#include <ft2build.h>
-#include FT_INTERNAL_POSTSCRIPT_AUX_H
-
-
-FT_BEGIN_HEADER
-
- FT_LOCAL( void )
- ps_decoder_init( void* decoder,
- FT_Bool is_t1,
- PS_Decoder* ps_decoder );
-
-
-FT_END_HEADER
-
-#endif
-
--- a/src/psaux/psobjs.c
+++ b/src/psaux/psobjs.c
@@ -2328,6 +2328,87 @@
/*************************************************************************/
+ /*************************************************************************/
+ /* */
+ /* <Function> */
+ /* ps_decoder_init */
+ /* */
+ /* <Description> */
+ /* Creates a wrapper decoder for use in the combined */
+ /* Type 1 / CFF interpreter. */
+ /* */
+ /* <InOut> */
+ /* ps_decoder :: A pointer to the decoder to initialize. */
+ /* */
+ /* <Input> */
+ /* decoder :: A pointer to the original decoder. */
+ /* */
+ /* is_t1 :: Flag indicating Type 1 or CFF */
+ /* */
+ FT_LOCAL_DEF( void )
+ ps_decoder_init( PS_Decoder* ps_decoder,
+ void* decoder,
+ FT_Bool is_t1 )
+ {
+ FT_ZERO( ps_decoder );
+
+ if ( is_t1 )
+ {
+ T1_Decoder t1_decoder = (T1_Decoder)decoder;
+
+ ps_builder_init( &t1_decoder->builder,
+ is_t1,
+ &ps_decoder->builder );
+
+ ps_decoder->cf2_instance = &t1_decoder->cf2_instance;
+ ps_decoder->psnames = t1_decoder->psnames;
+
+ ps_decoder->num_glyphs = t1_decoder->num_glyphs;
+ ps_decoder->glyph_names = t1_decoder->glyph_names;
+ ps_decoder->hint_mode = t1_decoder->hint_mode;
+ ps_decoder->blend = t1_decoder->blend;
+
+ ps_decoder->num_locals = t1_decoder->num_subrs;
+ ps_decoder->locals = t1_decoder->subrs;
+ ps_decoder->locals_len = t1_decoder->subrs_len;
+ ps_decoder->locals_hash = t1_decoder->subrs_hash;
+
+ ps_decoder->buildchar = t1_decoder->buildchar;
+ ps_decoder->len_buildchar = t1_decoder->len_buildchar;
+
+ ps_decoder->lenIV = t1_decoder->lenIV;
+ }
+ else
+ {
+ CFF_Decoder* cff_decoder = (CFF_Decoder*)decoder;
+
+ ps_builder_init( &cff_decoder->builder,
+ is_t1,
+ &ps_decoder->builder );
+
+ ps_decoder->cff = cff_decoder->cff;
+ ps_decoder->cf2_instance = &cff_decoder->cff->cf2_instance;
+ ps_decoder->current_subfont = cff_decoder->current_subfont;
+
+ ps_decoder->num_globals = cff_decoder->num_globals;
+ ps_decoder->globals = cff_decoder->globals;
+ ps_decoder->globals_bias = cff_decoder->globals_bias;
+ ps_decoder->num_locals = cff_decoder->num_locals;
+ 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->width_only = cff_decoder->width_only;
+
+ ps_decoder->hint_mode = cff_decoder->hint_mode;
+
+ ps_decoder->get_glyph_callback = cff_decoder->get_glyph_callback;
+ ps_decoder->free_glyph_callback = cff_decoder->free_glyph_callback;
+ }
+ }
+
+
FT_LOCAL_DEF( void )
t1_make_subfont( FT_Face face,
PS_Private priv,
--- a/src/psaux/psobjs.h
+++ b/src/psaux/psobjs.h
@@ -285,6 +285,11 @@
/*************************************************************************/
FT_LOCAL( void )
+ ps_decoder_init( PS_Decoder* ps_decoder,
+ void* decoder,
+ FT_Bool is_t1 );
+
+ FT_LOCAL( void )
t1_make_subfont( FT_Face face,
PS_Private priv,
CFF_SubFont subfont );
--- a/src/psaux/rules.mk
+++ b/src/psaux/rules.mk
@@ -36,7 +36,6 @@
$(PSAUX_DIR)/psauxmod.c \
$(PSAUX_DIR)/psarrst.c \
$(PSAUX_DIR)/psblues.c \
- $(PSAUX_DIR)/psdecode.c \
$(PSAUX_DIR)/pserror.c \
$(PSAUX_DIR)/psfont.c \
$(PSAUX_DIR)/psft.c \
--- a/src/type1/t1gload.c
+++ b/src/type1/t1gload.c
@@ -110,7 +110,7 @@
CFF_SubFontRec subfont;
- psaux->ps_decoder_init( decoder, TRUE, &psdecoder );
+ psaux->ps_decoder_init( &psdecoder, decoder, TRUE );
psaux->t1_make_subfont( FT_FACE( face ), &face->type1.private_dict, &subfont );
psdecoder.current_subfont = &subfont;