diff --git a/ChangeLog b/ChangeLog index 7961ebe7d..067ecbe6e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,26 @@ +2017-09-25 Ewald Hew + + [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 [psaux] Fix Type 1 hinting. diff --git a/include/freetype/internal/psaux.h b/include/freetype/internal/psaux.h index 7357da452..c287974a5 100644 --- a/include/freetype/internal/psaux.h +++ b/include/freetype/internal/psaux.h @@ -1286,9 +1286,9 @@ FT_BEGIN_HEADER (*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, diff --git a/src/cff/cffgload.c b/src/cff/cffgload.c index 917fb3ad8..9a2080b21 100644 --- 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, diff --git a/src/cid/cidgload.c b/src/cid/cidgload.c index 9f47dcdf1..2194151a6 100644 --- 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; diff --git a/src/psaux/Jamfile b/src/psaux/Jamfile index ab861e656..0e5944d69 100644 --- a/src/psaux/Jamfile +++ b/src/psaux/Jamfile @@ -23,7 +23,6 @@ SubDir FT2_TOP $(FT2_SRC_DIR) psaux ; t1cmap t1decode cffdecode - psdecode psarrst psblues pserror diff --git a/src/psaux/psaux.c b/src/psaux/psaux.c index 8c9e63316..e30c9b084 100644 --- 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" diff --git a/src/psaux/psauxmod.c b/src/psaux/psauxmod.c index b07192909..fea60ce6d 100644 --- 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" diff --git a/src/psaux/psdecode.c b/src/psaux/psdecode.c deleted file mode 100644 index c8a5d01c2..000000000 --- a/src/psaux/psdecode.c +++ /dev/null @@ -1,91 +0,0 @@ - - -#include -#include FT_INTERNAL_SERVICE_H - -#include "psdecode.h" -#include "psobjs.h" - -#include "psauxerr.h" - - - /*************************************************************************/ - /* */ - /* */ - /* ps_decoder_init */ - /* */ - /* */ - /* Creates a decoder for the combined Type 1 / CFF interpreter. */ - /* */ - /* */ - /* decoder :: A pointer to the glyph builder to initialize. */ - /* */ - /* */ - /* */ - /* */ - /* */ - /* */ - /* */ - 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; - } - } - diff --git a/src/psaux/psdecode.h b/src/psaux/psdecode.h deleted file mode 100644 index dd7e6f285..000000000 --- a/src/psaux/psdecode.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef PSDECODE_H_ -#define PSDECODE_H_ - - -#include -#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 - diff --git a/src/psaux/psobjs.c b/src/psaux/psobjs.c index b592163ce..d643afeff 100644 --- a/src/psaux/psobjs.c +++ b/src/psaux/psobjs.c @@ -2328,6 +2328,87 @@ /*************************************************************************/ + /*************************************************************************/ + /* */ + /* */ + /* ps_decoder_init */ + /* */ + /* */ + /* Creates a wrapper decoder for use in the combined */ + /* Type 1 / CFF interpreter. */ + /* */ + /* */ + /* ps_decoder :: A pointer to the decoder to initialize. */ + /* */ + /* */ + /* 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, diff --git a/src/psaux/psobjs.h b/src/psaux/psobjs.h index aed19decd..6773eacb2 100644 --- a/src/psaux/psobjs.h +++ b/src/psaux/psobjs.h @@ -284,6 +284,11 @@ FT_BEGIN_HEADER /*************************************************************************/ /*************************************************************************/ + 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, diff --git a/src/psaux/rules.mk b/src/psaux/rules.mk index 55a835f6a..266d446f8 100644 --- a/src/psaux/rules.mk +++ b/src/psaux/rules.mk @@ -36,7 +36,6 @@ PSAUX_DRV_SRC := $(PSAUX_DIR)/psobjs.c \ $(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 \ diff --git a/src/type1/t1gload.c b/src/type1/t1gload.c index 6e5d3e819..e5f88d0a0 100644 --- 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;