* src/type1/t1load.c (parse_dict): Handle synthetic fonts properly. (parse_charstrings): Copy correct number of characters into `name_table'.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
diff --git a/ChangeLog b/ChangeLog
index c848f6c..05f9466 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 <wl@gnu.org>
diff --git a/src/psaux/t1decode.c b/src/psaux/t1decode.c
index 76b688f..6cc0948 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 3f1322d..a59e2a8 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;