diff --git a/ChangeLog b/ChangeLog index 6df13e4c9..14203e20b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2001-09-10 Yao Zhang + + * src/sfnt/ttcmap.c (code_to_index2): Handle code values with + hi-byte == 0 correctly. + +2001-09-10 Werner Lemberg + + * builds/link-std.mk ($(PROJECT_LIBRARY)): Fix typo. + 2001-08-30 Martin Muskens * src/type1/t1load.c (parse_font_matrix): A new way to compute the diff --git a/builds/link_dos.mk b/builds/link_dos.mk index b35115b59..044a86b2a 100644 --- a/builds/link_dos.mk +++ b/builds/link_dos.mk @@ -34,7 +34,7 @@ ifdef BUILD_PROJECT ifdef CLEAN_LIBRARY -$(CLEAN_LIBRARY) $(NO_OUTPUT) endif - $(LINK_LIBRARY) + $(LINK_LIBRARY) endif diff --git a/builds/link_std.mk b/builds/link_std.mk index 9cd6dba80..193c3429b 100644 --- a/builds/link_std.mk +++ b/builds/link_std.mk @@ -32,9 +32,9 @@ ifdef BUILD_PROJECT # $(PROJECT_LIBRARY): $(OBJECTS_LIST) ifdef CLEAN_LIBRARY - -$(CLEAN_LIBRARY) xx $(NO_OUTPUT) + -$(CLEAN_LIBRARY) $(NO_OUTPUT) endif - $(LINK_LIBRARY) + $(LINK_LIBRARY) endif diff --git a/src/sfnt/ttcmap.c b/src/sfnt/ttcmap.c index 64dd3bb78..b37faf4c2 100644 --- a/src/sfnt/ttcmap.c +++ b/src/sfnt/ttcmap.c @@ -503,28 +503,29 @@ { /* an 8-bit character code -- we use the subHeader 0 in this case */ /* to test whether the character code is in the charmap */ - if ( cmap2->subHeaderKeys[char_lo] == 0 ) - result = cmap2->glyphIdArray[char_lo]; + index1 = cmap2->subHeaderKeys[char_lo]; + if ( index1 != 0 ) + return 0; } else { /* a 16-bit character code */ index1 = cmap2->subHeaderKeys[char_hi & 0xFF]; - if ( index1 ) - { - sh2 = cmap2->subHeaders + index1; - char_lo -= sh2->firstCode; + if ( index1 == 0 ) + return 0; + } - if ( char_lo < (FT_UInt)sh2->entryCount ) - { - offset = sh2->idRangeOffset / 2 + char_lo; - if ( offset < (FT_UInt)cmap2->numGlyphId ) - { - result = cmap2->glyphIdArray[offset]; - if ( result ) - result = ( result + sh2->idDelta ) & 0xFFFF; - } - } + sh2 = cmap2->subHeaders + index1; + char_lo -= sh2->firstCode; + + if ( char_lo < (FT_UInt)sh2->entryCount ) + { + offset = sh2->idRangeOffset / 2 + char_lo; + if ( offset < (FT_UInt)cmap2->numGlyphId ) + { + result = cmap2->glyphIdArray[offset]; + if ( result ) + result = ( result + sh2->idDelta ) & 0xFFFF; } }