From ed3a7d7b0f77030530dbbaecf7b786853a693774 Mon Sep 17 00:00:00 2001 From: Werner Lemberg Date: Tue, 7 Oct 2003 20:06:35 +0000 Subject: [PATCH] * src/type1/t1load.c (parse_dict): Handle synthetic fonts properly. (parse_charstrings): Copy correct number of characters into `name_table'. --- ChangeLog | 2 ++ src/psaux/t1decode.c | 2 +- src/type1/t1load.c | 24 ++++++++++++++---------- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index c848f6cad..05f946621 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,8 @@ * src/type1/t1load.c (parse_subrs, parse_dict): Handle synthetic fonts properly. + (parse_charstrings): Copy correct number of characters into + `name_table'. 2003-10-06 Werner Lemberg diff --git a/src/psaux/t1decode.c b/src/psaux/t1decode.c index 76b688ff8..6cc0948cd 100644 --- a/src/psaux/t1decode.c +++ b/src/psaux/t1decode.c @@ -143,7 +143,7 @@ if ( name && name[0] == glyph_name[0] && - ft_strcmp( name,glyph_name ) == 0 ) + ft_strcmp( name, glyph_name ) == 0 ) return n; } diff --git a/src/type1/t1load.c b/src/type1/t1load.c index 3f1322dad..a59e2a8eb 100644 --- a/src/type1/t1load.c +++ b/src/type1/t1load.c @@ -1055,10 +1055,14 @@ T1_Skip_PS_Token( parser ); /* `array' */ T1_Skip_Spaces ( parser ); - /* initialize subrs array */ - error = psaux->ps_table_funcs->init( table, num_subrs, memory ); - if ( error ) - goto Fail; + /* initialize subrs array -- with synthetic fonts it is possible */ + /* we get here twice */ + if ( !loader->num_subrs ) + { + error = psaux->ps_table_funcs->init( table, num_subrs, memory ); + if ( error ) + goto Fail; + } /* the format is simple: */ /* */ @@ -1220,23 +1224,23 @@ break; } - if ( *cur != '/' ) - T1_Skip_PS_Token( parser ); - else + T1_Skip_PS_Token( parser ); + + if ( *cur == '/' ) { FT_PtrDist len; - T1_Skip_PS_Token( parser ); - if ( cur >= limit ) + if ( cur + 1 >= limit ) { error = T1_Err_Invalid_File_Format; goto Fail; } + cur++; /* skip `/' */ len = parser->root.cursor - cur; - error = T1_Add_Table( name_table, n, cur + 1, len + 1 ); + error = T1_Add_Table( name_table, n, cur, len + 1 ); if ( error ) goto Fail;