ref: ed3a7d7b0f77030530dbbaecf7b786853a693774
parent: 34808199ce9f2079c2b7bb5c73e607a29e31b16b
author: Werner Lemberg <[email protected]>
date: Tue Oct 7 16:06:35 EDT 2003
* src/type1/t1load.c (parse_dict): Handle synthetic fonts properly. (parse_charstrings): Copy correct number of characters into `name_table'.
--- 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 <[email protected]>
--- 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;
}
--- 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;