diff --git a/ChangeLog b/ChangeLog index 112aa4e50..c99c82325 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2007-01-04 David Turner + * src/sfnt/ttcmap.c: slight optimization in the CMAP 4 validator + * src/cff/cffload.c, src/cff/cffload.h, src/cff/cffgload.c, src/cff/cfftypes.h: formatting + do not load the CFF index offsets into memory, since this wastes a *lot* of heap memory diff --git a/src/sfnt/ttcmap.c b/src/sfnt/ttcmap.c index 7795105ae..424716bfe 100644 --- a/src/sfnt/ttcmap.c +++ b/src/sfnt/ttcmap.c @@ -862,18 +862,19 @@ FT_UInt start, end, offset, n; FT_UInt last_start = 0, last_end = 0; FT_Int delta; + FT_Byte* p_start = starts; + FT_Byte* p_end = ends; + FT_Byte* p_delta = deltas; + FT_Byte* p_offset = offsets; for ( n = 0; n < num_segs; n++ ) { - p = starts + n * 2; - start = TT_PEEK_USHORT( p ); - p = ends + n * 2; - end = TT_PEEK_USHORT( p ); - p = deltas + n * 2; - delta = TT_PEEK_SHORT( p ); - p = offsets + n * 2; - offset = TT_PEEK_USHORT( p ); + p = p_offset; + start = TT_NEXT_USHORT( p_start ); + end = TT_NEXT_USHORT( p_end ); + delta = TT_NEXT_SHORT( p_delta ); + offset = TT_NEXT_USHORT( p_offset ); if ( start > end ) FT_INVALID_DATA;