From b624868b8e9355ad5a4ff07d67aa6188499e3334 Mon Sep 17 00:00:00 2001 From: Ewald Hew Date: Sun, 24 Sep 2017 22:32:40 +0200 Subject: [PATCH] Move `cff_random' into `psaux' service. NOTE: Does not compile! Minor fix to allow both `cff' and `psaux' to use `cff_random'. * src/cff/cffload.c (cff_random): Move to... * src/psaux/psobjs.c: Here. * src/cff/cffload.h: Move corresponding declaration to `src/psaux/psobjs.h'. * include/freetype/internal/psaux.h (PSAux_ServiceRec): Register the function here... * src/psaux/psauxmod.c: And here. * src/cff/cffload.c, src/psaux/cf2intrp.c: Update code. --- ChangeLog | 19 +++++++++++++++++++ include/freetype/internal/psaux.h | 4 ++++ src/cff/cffload.c | 18 ++++-------------- src/cff/cffload.h | 3 --- src/psaux/cf2intrp.c | 1 + src/psaux/psauxmod.c | 1 + src/psaux/psobjs.c | 12 ++++++++++++ src/psaux/psobjs.h | 4 ++++ 8 files changed, 45 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index 386b6c9c2..45fba7d5c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,22 @@ +2017-09-24 Ewald Hew + + [psaux, cff] Move `cff_random' into `psaux' service. + + NOTE: Does not compile! + + Minor fix to allow both `cff' and `psaux' to use `cff_random'. + + * src/cff/cffload.c (cff_random): Move to... + * src/psaux/psobjs.c: Here. + * src/cff/cffload.h: Move corresponding declaration to + `src/psaux/psobjs.h'. + + * include/freetype/internal/psaux.h (PSAux_ServiceRec): Register the + function here... + * src/psaux/psauxmod.c: And here. + + * src/cff/cffload.c, src/psaux/cf2intrp.c: Update code. + 2017-09-24 Ewald Hew [cff] Move struct declarations to `freetype/internal'. diff --git a/include/freetype/internal/psaux.h b/include/freetype/internal/psaux.h index f127a44cc..258009be5 100644 --- a/include/freetype/internal/psaux.h +++ b/include/freetype/internal/psaux.h @@ -1067,6 +1067,10 @@ FT_BEGIN_HEADER FT_Offset length, FT_UShort seed ); + FT_UInt32 + (*cff_random)( FT_UInt32 r ); + + T1_CMap_Classes t1_cmap_classes; /* fields after this comment line were added after version 2.1.10 */ diff --git a/src/cff/cffload.c b/src/cff/cffload.c index 12420384a..5e6839d6c 100644 --- a/src/cff/cffload.c +++ b/src/cff/cffload.c @@ -1945,18 +1945,6 @@ } - FT_LOCAL_DEF( FT_UInt32 ) - cff_random( FT_UInt32 r ) - { - /* a 32bit version of the `xorshift' algorithm */ - r ^= r << 13; - r ^= r >> 17; - r ^= r << 5; - - return r; - } - - /* There are 3 ways to call this function, distinguished by code. */ /* */ /* . CFF_CODE_TOPDICT for either a CFF Top DICT or a CFF Font DICT */ @@ -1980,6 +1968,8 @@ CFF_FontRecDict top = &subfont->font_dict; CFF_Private priv = &subfont->private_dict; + PSAux_Service psaux = (PSAux_Service)face->psaux; + FT_Bool cff2 = FT_BOOL( code == CFF2_CODE_TOPDICT || code == CFF2_CODE_FONTDICT ); FT_UInt stackSize = cff2 ? CFF2_DEFAULT_STACK @@ -2094,7 +2084,7 @@ do { driver->random_seed = - (FT_Int32)cff_random( (FT_UInt32)driver->random_seed ); + (FT_Int32)psaux->cff_random( (FT_UInt32)driver->random_seed ); } while ( driver->random_seed < 0 ); } @@ -2107,7 +2097,7 @@ do { face->root.internal->random_seed = - (FT_Int32)cff_random( (FT_UInt32)face->root.internal->random_seed ); + (FT_Int32)psaux->cff_random( (FT_UInt32)face->root.internal->random_seed ); } while ( face->root.internal->random_seed < 0 ); } diff --git a/src/cff/cffload.h b/src/cff/cffload.h index 82a041705..ef3c1bd86 100644 --- a/src/cff/cffload.h +++ b/src/cff/cffload.h @@ -61,9 +61,6 @@ FT_BEGIN_HEADER FT_UInt cid ); - FT_LOCAL( FT_UInt32 ) - cff_random( FT_UInt32 r ); - FT_LOCAL( FT_Error ) cff_font_load( FT_Library library, FT_Stream stream, diff --git a/src/psaux/cf2intrp.c b/src/psaux/cf2intrp.c index 3e7ad5763..605b46838 100644 --- a/src/psaux/cf2intrp.c +++ b/src/psaux/cf2intrp.c @@ -47,6 +47,7 @@ #include "cf2intrp.h" #include "cf2error.h" +#include "psobjs.h" /* for cff_random */ /*************************************************************************/ diff --git a/src/psaux/psauxmod.c b/src/psaux/psauxmod.c index cd9f52529..a8808810b 100644 --- a/src/psaux/psauxmod.c +++ b/src/psaux/psauxmod.c @@ -143,6 +143,7 @@ &t1_builder_funcs, &t1_decoder_funcs, t1_decrypt, + cff_random, (const T1_CMap_ClassesRec*) &t1_cmap_classes, diff --git a/src/psaux/psobjs.c b/src/psaux/psobjs.c index db268fc42..92691db6c 100644 --- a/src/psaux/psobjs.c +++ b/src/psaux/psobjs.c @@ -2044,4 +2044,16 @@ } + FT_LOCAL_DEF( FT_UInt32 ) + cff_random( FT_UInt32 r ) + { + /* a 32bit version of the `xorshift' algorithm */ + r ^= r << 13; + r ^= r >> 17; + r ^= r << 5; + + return r; + } + + /* END */ diff --git a/src/psaux/psobjs.h b/src/psaux/psobjs.h index c06bb281c..c16379462 100644 --- a/src/psaux/psobjs.h +++ b/src/psaux/psobjs.h @@ -247,6 +247,10 @@ FT_BEGIN_HEADER FT_UShort seed ); + FT_LOCAL( FT_UInt32 ) + cff_random( FT_UInt32 r ); + + FT_END_HEADER #endif /* PSOBJS_H_ */