diff --git a/ChangeLog b/ChangeLog index 6449172ca..128671624 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2003-06-02 Werner Lemberg + + * src/cff/cffobjs.c (cff_face_init): Use symbolic names for + Adobe specific encoding IDs (there was a wrong EID value for custom + encoding). + + * src/cff/cffcmap.h (CFF_CMapStdRec): Remove `count'. + * src/cff/cffcmap.c (cff_cmap_encoding_init, + cff_cmap_encoding_done): Updated. + (cff_cmap_encoding_char_index, cff_cmap_encoding_char_next): Use + 256 as limit for character code. + 2003-06-01 Werner Lemberg * src/winfonts/winfnt.c (FNT_Load_Glyph): Revert change from diff --git a/src/base/ftobjs.c b/src/base/ftobjs.c index 13f792907..fefa9dae3 100644 --- a/src/base/ftobjs.c +++ b/src/base/ftobjs.c @@ -2270,7 +2270,7 @@ return FT_Err_Invalid_Argument; face = charmap->face; - memory = FT_FACE_MEMORY(face); + memory = FT_FACE_MEMORY( face ); if ( !FT_ALLOC( cmap, clazz->size ) ) { diff --git a/src/cff/cffcmap.c b/src/cff/cffcmap.c index 5beb6aea5..34af47ea6 100644 --- a/src/cff/cffcmap.c +++ b/src/cff/cffcmap.c @@ -4,7 +4,7 @@ /* */ /* CFF character mapping table (cmap) support (body). */ /* */ -/* Copyright 2002 by */ +/* Copyright 2002, 2003 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -36,7 +36,6 @@ CFF_Encoding encoding = &cff->encoding; - cmap->count = encoding->count; cmap->gids = encoding->codes; return 0; @@ -46,7 +45,6 @@ FT_CALLBACK_DEF( void ) cff_cmap_encoding_done( CFF_CMapStd cmap ) { - cmap->count = 0; cmap->gids = NULL; } @@ -58,7 +56,7 @@ FT_UInt result = 0; - if ( char_code < cmap->count ) + if ( char_code < 256 ) result = cmap->gids[char_code]; return result; @@ -75,14 +73,14 @@ *pchar_code = 0; - if ( char_code < cmap->count ) + if ( char_code < 255 ) { FT_UInt code = (FT_UInt)(char_code + 1); for (;;) { - if ( code >= cmap->count ) + if ( code >= 256 ) break; result = cmap->gids[code]; @@ -164,7 +162,7 @@ pair = cmap->pairs; for ( n = 0; n < count; n++ ) { - FT_UInt sid = charset->sids[n]; + FT_UInt sid = charset->sids[n]; const char* gname; diff --git a/src/cff/cffcmap.h b/src/cff/cffcmap.h index e136d29e0..ceb32cd3c 100644 --- a/src/cff/cffcmap.h +++ b/src/cff/cffcmap.h @@ -4,7 +4,7 @@ /* */ /* CFF character mapping table (cmap) support (specification). */ /* */ -/* Copyright 2002 by */ +/* Copyright 2002, 2003 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -38,7 +38,6 @@ FT_BEGIN_HEADER typedef struct CFF_CMapStdRec_ { FT_CMapRec cmap; - FT_UInt count; FT_UShort* gids; /* up to 256 elements */ } CFF_CMapStdRec; diff --git a/src/cff/cffload.c b/src/cff/cffload.c index 0a0fcb797..1882a8ab3 100644 --- a/src/cff/cffload.c +++ b/src/cff/cffload.c @@ -1505,8 +1505,8 @@ FT_ULong base_offset, FT_ULong offset ) { - FT_Memory memory = stream->memory; - FT_Error error = 0; + FT_Memory memory = stream->memory; + FT_Error error = 0; FT_UShort glyph_sid; @@ -1557,7 +1557,6 @@ while ( j < num_glyphs ) { - /* Read the first glyph sid of the range. */ if ( FT_READ_USHORT( glyph_sid ) ) goto Exit; @@ -1699,11 +1698,11 @@ FT_ULong base_offset, FT_ULong offset ) { - FT_Error error = 0; - FT_UInt count; - FT_UInt j; - FT_UShort glyph_sid; - FT_UInt glyph_code; + FT_Error error = 0; + FT_UInt count; + FT_UInt j; + FT_UShort glyph_sid; + FT_UInt glyph_code; /* Check for charset->sids. If we do not have this, we fail. */ @@ -1720,8 +1719,8 @@ encoding->codes[j] = 0; } - /* Note: The encoding table in a CFF font is indexed by glyph index, */ - /* where the first encoded glyph index is 1. Hence, we read the char */ + /* Note: The encoding table in a CFF font is indexed by glyph index; */ + /* the first encoded glyph index is 1. Hence, we read the character */ /* code (`glyph_code') at index j and make the assignment: */ /* */ /* encoding->codes[glyph_code] = j + 1 */ @@ -1734,7 +1733,6 @@ if ( offset > 1 ) { - encoding->offset = base_offset + offset; /* we need to parse the table to determine its size */ @@ -1857,13 +1855,13 @@ /* Assign code to SID mapping. */ encoding->sids[glyph_code] = glyph_sid; - /* First, lookup GID which has been assigned to */ - /* SID glyph_sid. */ + /* First, look up GID which has been assigned to */ + /* SID glyph_sid. */ for ( gindex = 0; gindex < num_glyphs; gindex++ ) { if ( charset->sids[gindex] == glyph_sid ) { - encoding->codes[glyph_code] = (FT_UShort) gindex; + encoding->codes[glyph_code] = (FT_UShort)gindex; break; } } @@ -1875,10 +1873,10 @@ FT_UInt i; - /* We take into account the fact a CFF font can use a predefined */ - /* encoding without containing all of the glyphs encoded by this */ - /* encoding (see the note at the end of section 12 in the CFF */ - /* specification). */ + /* We take into account the fact a CFF font can use a predefined */ + /* encoding without containing all of the glyphs encoded by this */ + /* encoding (see the note at the end of section 12 in the CFF */ + /* specification). */ switch ( (FT_UInt)offset ) { @@ -1900,7 +1898,6 @@ encoding->count = 0; - for ( j = 0; j < 256; j++ ) { /* If j is encoded, find the GID for it. */ @@ -2208,7 +2205,7 @@ if ( font->num_glyphs > 0 ) { error = cff_charset_load( &font->charset, font->num_glyphs, stream, - base_offset, dict->charset_offset ); + base_offset, dict->charset_offset ); if ( error ) goto Exit; diff --git a/src/cff/cffobjs.c b/src/cff/cffobjs.c index 758ccef31..a39015e9f 100644 --- a/src/cff/cffobjs.c +++ b/src/cff/cffobjs.c @@ -466,7 +466,7 @@ CFF_Encoding encoding = &cff->encoding; - for ( nn = 0; nn < (FT_UInt) root->num_charmaps; nn++ ) + for ( nn = 0; nn < (FT_UInt)root->num_charmaps; nn++ ) { cmap = root->charmaps[nn]; @@ -485,12 +485,12 @@ cmaprec.encoding_id = 1; cmaprec.encoding = FT_ENCODING_UNICODE; - nn = (FT_UInt) root->num_charmaps; + nn = (FT_UInt)root->num_charmaps; FT_CMap_New( &cff_cmap_unicode_class_rec, NULL, &cmaprec, NULL ); /* if no Unicode charmap was previously selected, select this one */ - if ( root->charmap == NULL && nn != (FT_UInt) root->num_charmaps ) + if ( root->charmap == NULL && nn != (FT_UInt)root->num_charmaps ) root->charmap = root->charmaps[nn]; Skip_Unicode: @@ -504,19 +504,19 @@ if ( encoding->offset == 0 ) { - cmaprec.encoding_id = 0; + cmaprec.encoding_id = TT_ADOBE_ID_STANDARD; cmaprec.encoding = FT_ENCODING_ADOBE_STANDARD; clazz = &cff_cmap_encoding_class_rec; } else if ( encoding->offset == 1 ) { - cmaprec.encoding_id = 1; + cmaprec.encoding_id = TT_ADOBE_ID_EXPERT; cmaprec.encoding = FT_ENCODING_ADOBE_EXPERT; clazz = &cff_cmap_encoding_class_rec; } else { - cmaprec.encoding_id = 3; + cmaprec.encoding_id = TT_ADOBE_ID_CUSTOM; cmaprec.encoding = FT_ENCODING_ADOBE_CUSTOM; clazz = &cff_cmap_encoding_class_rec; }