* 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.
This commit is contained in:
parent
34700b54ba
commit
7df5ed770f
12
ChangeLog
12
ChangeLog
|
@ -1,3 +1,15 @@
|
|||
2003-06-02 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
* 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 <wl@gnu.org>
|
||||
|
||||
* src/winfonts/winfnt.c (FNT_Load_Glyph): Revert change from
|
||||
|
|
|
@ -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 ) )
|
||||
{
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue