* src/type1/t1load.c (parse_dict): Handle synthetic

fonts properly.
(parse_charstrings): Copy correct number of characters into
`name_table'.
This commit is contained in:
Werner Lemberg 2003-10-07 20:06:35 +00:00
parent 9ab9340d8b
commit 6165edf5d9
3 changed files with 17 additions and 11 deletions

View File

@ -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 <wl@gnu.org>

View File

@ -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;
}

View File

@ -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;