From cb9109fc4013c04b1fdb6c6c1bd1294dd3602448 Mon Sep 17 00:00:00 2001 From: Werner Lemberg Date: Fri, 9 Jun 2000 05:25:19 +0000 Subject: [PATCH] Applied Tom's patches to improve CFF handling. --- src/cff/t2load.c | 35 ++++++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/src/cff/t2load.c b/src/cff/t2load.c index 18bac5476..f3a0748c0 100644 --- a/src/cff/t2load.c +++ b/src/cff/t2load.c @@ -406,22 +406,35 @@ error = t2_new_cff_index( &font->charstrings_index, stream, 0 ); if (error) goto Exit; - /* read the local subrs */ - if ( FILE_Seek( base_offset + font->top_dict.private_offset + - font->private_dict.local_subrs_offset ) ) - goto Exit; + /* read the local subrs, if any */ + + if (font->private_dict.local_subrs_offset) { + + if ( FILE_Seek( base_offset + font->top_dict.private_offset + + font->private_dict.local_subrs_offset ) ) + goto Exit; - error = t2_new_cff_index( &font->local_subrs_index, stream, 1 ); - if (error) goto Exit; + error = t2_new_cff_index( &font->local_subrs_index, stream, 1 ); + if (error) goto Exit; + } /* explicit the global and local subrs */ - font->num_local_subrs = font->local_subrs_index.count; + + if (font->private_dict.local_subrs_offset) { + font->num_local_subrs = font->local_subrs_index.count; + } else { + font->num_local_subrs = 0; + } + font->num_global_subrs = font->global_subrs_index.count; - error = t2_explicit_cff_index( &font->global_subrs_index, - &font->global_subrs ) || - t2_explicit_cff_index( &font->local_subrs_index, - &font->local_subrs ); + + error = t2_explicit_cff_index( &font->global_subrs_index, &font->global_subrs ) ; + + if (font->private_dict.local_subrs_offset) { + error |= t2_explicit_cff_index( &font->local_subrs_index, &font->local_subrs ) ; + } + if (error) goto Exit; }