From f5af95653b92f30048ffc76bf63b27388f8140b6 Mon Sep 17 00:00:00 2001 From: Peter Breitenlohner Date: Thu, 11 Nov 2010 08:26:36 +0000 Subject: handle number on different line than /CharStrings; report from DEK, fix from Thanh git-svn-id: svn://tug.org/texlive/trunk@20405 c570f23f-e606-0410-a88d-b1316a301751 --- Build/source/texk/web2c/pdftexdir/writet1.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'Build/source/texk/web2c/pdftexdir/writet1.c') diff --git a/Build/source/texk/web2c/pdftexdir/writet1.c b/Build/source/texk/web2c/pdftexdir/writet1.c index 65aacc05460..0f62e217f2c 100644 --- a/Build/source/texk/web2c/pdftexdir/writet1.c +++ b/Build/source/texk/web2c/pdftexdir/writet1.c @@ -1609,9 +1609,32 @@ static void t1_mark_glyphs(void) subr_max = ptr - subr_tab; } +static void t1_check_unusual_charstring(void) +{ + char *p = strstr(t1_line_array, charstringname) + strlen(charstringname); + int i; + /* if no number follows "/CharStrings", let's read the next line */ + if (sscanf(p, "%i", &i) != 1) { + strcpy(t1_buf_array, t1_line_array); + t1_getline(); + strcat(t1_buf_array, t1_line_array); + strcpy(t1_line_array, t1_buf_array); + t1_line_ptr = eol(t1_line_array); + } +} + static void t1_subset_charstrings(void) { cs_entry *ptr; + + /* at this point t1_line_array contains "/CharStrings". + when we hit a case like this: + dup/CharStrings + 229 dict dup begin + we read the next line and concatenate to t1_line_array before moving on + */ + t1_check_unusual_charstring(); + cs_size_pos = strstr(t1_line_array, charstringname) + strlen(charstringname) - t1_line_array + 1; /* cs_size_pos points to the number indicating -- cgit v1.2.3