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.
This commit is contained in:
parent
e28550af18
commit
93e3cffddf
20
ChangeLog
20
ChangeLog
@ -1,3 +1,23 @@
|
||||
2017-09-25 Ewald Hew <ewaldhew@gmail.com>
|
||||
|
||||
[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.
|
||||
|
||||
2017-09-25 Ewald Hew <ewaldhew@gmail.com>
|
||||
|
||||
[type1] Switch to Adobe engine.
|
||||
|
@ -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 */
|
||||
|
@ -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 )
|
||||
|
@ -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 )
|
||||
|
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user