diff options
author | Ewald Hew <ewaldhew@gmail.com> | 2017-07-24 12:05:19 +0800 |
---|---|---|
committer | Ewald Hew <ewaldhew@gmail.com> | 2017-08-28 08:29:08 +0800 |
commit | 270b0c57341dcaed63af3012afb1ec72a69192ef (patch) | |
tree | 7d35e768cd4c898d32255861f31c816319ecb6fd | |
parent | 46a062c50beca216a75c241d0d49efb1172f0407 (diff) | |
download | freetype2-270b0c57341dcaed63af3012afb1ec72a69192ef.tar.gz |
[psaux] Change subfont synthesis for CID fonts.
Change t1_make_subfont to take in the Private dict record as an argument.
This is because Type 1 and CID font records in FreeType have this in different
places.
* src/psaux/psobjs.c (t1_make_subfont): Change T1_Face to FT_Face so that
CID is also accepted.
Take PS_Private as an argument and let caller figure out where the Private
dict actually is.
Update references.
* include/freetype/internal/psaux.h, src/psaux/psobjs.h: Update declaration.
* src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Update call.
-rw-r--r-- | include/freetype/internal/psaux.h | 4 | ||||
-rw-r--r-- | src/psaux/psobjs.c | 18 | ||||
-rw-r--r-- | src/psaux/psobjs.h | 3 | ||||
-rw-r--r-- | src/type1/t1gload.c | 2 |
4 files changed, 13 insertions, 14 deletions
diff --git a/include/freetype/internal/psaux.h b/include/freetype/internal/psaux.h index 9748368db..7357da452 100644 --- a/include/freetype/internal/psaux.h +++ b/include/freetype/internal/psaux.h @@ -1291,10 +1291,10 @@ FT_BEGIN_HEADER PS_Decoder* ps_decoder ); void - (*t1_make_subfont)( T1_Face face, + (*t1_make_subfont)( FT_Face face, + PS_Private priv, CFF_SubFont subfont ); - T1_CMap_Classes t1_cmap_classes; /* fields after this comment line were added after version 2.1.10 */ diff --git a/src/psaux/psobjs.c b/src/psaux/psobjs.c index 3fd2fda04..b592163ce 100644 --- a/src/psaux/psobjs.c +++ b/src/psaux/psobjs.c @@ -2329,10 +2329,10 @@ FT_LOCAL_DEF( void ) - t1_make_subfont( T1_Face face, + t1_make_subfont( FT_Face face, + PS_Private priv, CFF_SubFont subfont ) { - PS_Private priv = &face->type1.private_dict; CFF_Private cpriv = &subfont->private_dict; FT_UInt n, count; @@ -2379,20 +2379,18 @@ /* Initialize the random number generator. */ - if ( face->root.internal->random_seed != -1 ) + if ( face->internal->random_seed != -1 ) { /* . If we have a face-specific seed, use it. */ /* If non-zero, update it to a positive value. */ - subfont->random = (FT_UInt32)face->root.internal->random_seed; - if ( face->root.internal->random_seed ) + subfont->random = (FT_UInt32)face->internal->random_seed; + if ( face->internal->random_seed ) { do { - face->root.internal->random_seed = - (FT_Int32)((PSAux_Service)face->psaux)->cff_random( - (FT_UInt32)face->root.internal->random_seed ); - - } while ( face->root.internal->random_seed < 0 ); + face->internal->random_seed = (FT_Int32)cff_random( + (FT_UInt32)face->internal->random_seed ); + } while ( face->internal->random_seed < 0 ); } } if ( !subfont->random ) diff --git a/src/psaux/psobjs.h b/src/psaux/psobjs.h index 2fed988b4..aed19decd 100644 --- a/src/psaux/psobjs.h +++ b/src/psaux/psobjs.h @@ -285,7 +285,8 @@ FT_BEGIN_HEADER /*************************************************************************/ FT_LOCAL( void ) - t1_make_subfont( T1_Face face, + t1_make_subfont( FT_Face face, + PS_Private priv, CFF_SubFont subfont ); FT_LOCAL( void ) diff --git a/src/type1/t1gload.c b/src/type1/t1gload.c index b1020e9db..6e5d3e819 100644 --- a/src/type1/t1gload.c +++ b/src/type1/t1gload.c @@ -112,7 +112,7 @@ psaux->ps_decoder_init( decoder, TRUE, &psdecoder ); - psaux->t1_make_subfont( face, &subfont ); + psaux->t1_make_subfont( FT_FACE( face ), &face->type1.private_dict, &subfont ); psdecoder.current_subfont = &subfont; error = decoder_funcs->parse_charstrings( &psdecoder, |