ref: 3e19d85dd46eed324791e4aa6fb4c97d76385c0e
parent: d1214ac947c544f47fbf30f5ebbf4faab4f409f1
author: David Turner <[email protected]>
date: Wed Jul 17 17:52:20 EDT 2002
* include/freetype/config/ftoption.h, include/freetype/internal/tttypes.h, src/base/ftobjs.c, src/bdf/bdfdrivr.c, src/cff/cffobjs.c, src/pcf/pcfdrivr.c, src/sfnt/sfobjs.c, src/sfnt/ttcmap0.c, src/sfnt/ttcmap0.h, src/sfnt/ttload.c, src/type1/t1objs.c, src/type42/t42objs.c, src/winfonts/winfnt.c: code cleanup, FT_CONFIG_OPTION_USE_CMAPS is now the default
--- a/ChangeLog
+++ b/ChangeLog
@@ -4,6 +4,13 @@
src/cache/ftccache.c: cleaning up the cache sub-system code, linear
hashing is now the default
+ * include/freetype/config/ftoption.h, include/freetype/internal/tttypes.h,
+ src/base/ftobjs.c, src/bdf/bdfdrivr.c, src/cff/cffobjs.c,
+ src/pcf/pcfdrivr.c, src/sfnt/sfobjs.c, src/sfnt/ttcmap0.c,
+ src/sfnt/ttcmap0.h, src/sfnt/ttload.c, src/type1/t1objs.c,
+ src/type42/t42objs.c, src/winfonts/winfnt.c: code cleanup,
+ FT_CONFIG_OPTION_USE_CMAPS is now the default
+
2002-07-11 David Turner <[email protected]>
* src/sfnt/ttload.c, src/sfnt/ttload.h, src/sfnt/ttdriver.c: changing
--- a/include/freetype/internal/ftdriver.h
+++ b/include/freetype/internal/ftdriver.h
@@ -186,12 +186,10 @@
FT_Size_ResetPixelsFunc set_pixel_sizes;
FT_Slot_LoadFunc load_glyph;
- FT_CharMap_CharIndexFunc get_char_index;
FT_Face_GetKerningFunc get_kerning;
FT_Face_AttachFunc attach_file;
FT_Face_GetAdvancesFunc get_advances;
- FT_CharMap_CharNextFunc get_next_char;
} FT_Driver_ClassRec, *FT_Driver_Class;
--- a/include/freetype/internal/tttypes.h
+++ b/include/freetype/internal/tttypes.h
@@ -1483,17 +1483,8 @@
TT_OS2 os2; /* TrueType OS/2 table */
TT_Postscript postscript; /* TrueType Postscript table */
-#ifdef FT_CONFIG_OPTION_USE_CMAPS
-
FT_Byte* cmap_table; /* extracted 'cmap' table */
FT_ULong cmap_size;
-
-#else /* !FT_CONFIG_OPTION_USE_CMAPS */
-
- FT_Int num_charmaps;
- TT_CharMap charmaps; /* array of TT_CharMapRec */
-
-#endif /* !FT_CONFIG_OPTION_USE_CMAPS */
TT_Loader_GotoTableFunc goto_table;
--- a/src/base/ftobjs.c
+++ b/src/base/ftobjs.c
@@ -631,8 +631,6 @@
if ( face->generic.finalizer )
face->generic.finalizer( face );
-#ifdef FT_CONFIG_OPTION_USE_CMAPS
-
/* discard charmaps */
{
FT_Int n;
@@ -652,9 +650,7 @@
face->num_charmaps = 0;
}
-#endif /* FT_CONFIG_OPTION_USE_CMAPS */
-
/* finalize format-specific stuff */
if ( clazz->done_face )
clazz->done_face( face );
@@ -1520,8 +1516,6 @@
/* documentation is in freetype.h */
-#ifdef FT_CONFIG_OPTION_USE_CMAPS
-
FT_EXPORT_DEF( FT_UInt )
FT_Get_Char_Index( FT_Face face,
FT_ULong charcode )
@@ -1539,27 +1533,8 @@
return result;
}
-#else /* !FT_CONFIG_OPTION_USE_CMAPS */
- FT_EXPORT_DEF( FT_UInt )
- FT_Get_Char_Index( FT_Face face,
- FT_ULong charcode )
- {
- FT_UInt result = 0;
- FT_Driver driver;
-
- if ( face && face->charmap )
- {
- driver = face->driver;
- result = driver->clazz->get_char_index( face->charmap, charcode );
- }
- return result;
- }
-
-#endif /* !FT_CONFIG_OPTION_USE_CMAPS */
-
-
/* documentation is in freetype.h */
FT_EXPORT_DEF( FT_ULong )
@@ -1586,8 +1561,6 @@
/* documentation is in freetype.h */
-#ifdef FT_CONFIG_OPTION_USE_CMAPS
-
FT_EXPORT_DEF( FT_ULong )
FT_Get_Next_Char( FT_Face face,
FT_ULong charcode,
@@ -1613,37 +1586,6 @@
return result;
}
-#else /* !FT_CONFIG_OPTION_USE_CMAPS */
-
- FT_EXPORT_DEF( FT_ULong )
- FT_Get_Next_Char( FT_Face face,
- FT_ULong charcode,
- FT_UInt *agindex )
- {
- FT_ULong result = 0;
- FT_UInt gindex = 0;
- FT_Driver driver;
-
-
- if ( face && face->charmap )
- {
- driver = face->driver;
- result = driver->clazz->get_next_char( face->charmap, charcode );
- if ( result != 0 )
- {
- gindex = driver->clazz->get_char_index( face->charmap, result );
- if ( gindex == 0 )
- result = 0;
- }
- }
-
- if ( agindex )
- *agindex = gindex;
-
- return result;
- }
-
-#endif /* !FT_CONFIG_OPTION_USE_CMAPS */
/* documentation is in freetype.h */
--- a/src/bdf/bdfdrivr.c
+++ b/src/bdf/bdfdrivr.c
@@ -662,13 +662,9 @@
(FT_Slot_LoadFunc) BDF_Glyph_Load,
- (FT_CharMap_CharIndexFunc)0,
-
(FT_Face_GetKerningFunc) 0,
(FT_Face_AttachFunc) 0,
- (FT_Face_GetAdvancesFunc) 0,
-
- (FT_CharMap_CharNextFunc) 0
+ (FT_Face_GetAdvancesFunc) 0
};
--- a/src/cff/cffdrivr.c
+++ b/src/cff/cffdrivr.c
@@ -275,98 +275,10 @@
}
- /*************************************************************************/
- /* */
- /* <Function> */
- /* cff_get_char_index */
- /* */
- /* <Description> */
- /* Uses a charmap to return a given character code's glyph index. */
- /* */
- /* <Input> */
- /* charmap :: A handle to the source charmap object. */
- /* charcode :: The character code. */
- /* */
- /* <Return> */
- /* Glyph index. 0 means `undefined character code'. */
- /* */
- static FT_UInt
- cff_get_char_index( TT_CharMap charmap,
- FT_Long charcode )
- {
- FT_Error error;
- CFF_Face face;
- TT_CMapTable cmap;
-
- cmap = &charmap->cmap;
- face = (CFF_Face)charmap->root.face;
-
- /* Load table if needed */
- if ( !cmap->loaded )
- {
- SFNT_Service sfnt = (SFNT_Service)face->sfnt;
-
-
- error = sfnt->load_charmap( face, cmap, face->root.stream );
- if ( error )
- return 0;
-
- cmap->loaded = TRUE;
- }
-
- return ( cmap->get_index ? cmap->get_index( cmap, charcode ) : 0 );
- }
-
-
/*************************************************************************/
/* */
/* <Function> */
- /* cff_get_next_char */
- /* */
- /* <Description> */
- /* Uses a charmap to return the next encoded charcode. */
- /* */
- /* <Input> */
- /* charmap :: A handle to the source charmap object. */
- /* charcode :: The character code. */
- /* */
- /* <Return> */
- /* Char code. 0 means `no encoded chars above the given one'. */
- /* */
- static FT_Long
- cff_get_next_char( TT_CharMap charmap,
- FT_Long charcode )
- {
- FT_Error error;
- CFF_Face face;
- TT_CMapTable cmap;
-
-
- cmap = &charmap->cmap;
- face = (CFF_Face)charmap->root.face;
-
- /* Load table if needed */
- if ( !cmap->loaded )
- {
- SFNT_Service sfnt = (SFNT_Service)face->sfnt;
-
-
- error = sfnt->load_charmap( face, cmap, face->root.stream );
- if ( error )
- return 0;
-
- cmap->loaded = TRUE;
- }
-
- return ( cmap->get_next_char ? cmap->get_next_char( cmap, charcode )
- : 0 );
- }
-
-
- /*************************************************************************/
- /* */
- /* <Function> */
/* cff_get_name_index */
/* */
/* <Description> */
@@ -469,7 +381,7 @@
ft_module_font_driver |
ft_module_driver_scalable |
ft_module_driver_has_hinter,
-
+
sizeof( CFF_DriverRec ),
"cff",
0x10000L,
@@ -498,13 +410,10 @@
(FT_Size_ResetPixelsFunc) cff_size_reset,
(FT_Slot_LoadFunc) Load_Glyph,
- (FT_CharMap_CharIndexFunc)cff_get_char_index,
(FT_Face_GetKerningFunc) Get_Kerning,
(FT_Face_AttachFunc) 0,
(FT_Face_GetAdvancesFunc) 0,
-
- (FT_CharMap_CharNextFunc) cff_get_next_char
};
--- a/src/cff/cffobjs.c
+++ b/src/cff/cffobjs.c
@@ -447,12 +447,12 @@
root->style_flags = flags;
}
-
+
/*******************************************************************/
/* */
/* Compute char maps. */
/* */
-
+
/* try to synthetize a Unicode charmap if there is none available */
/* already. If an OpenType font contains a Unicode "cmap", we */
/* will use it, wathever be in the CFF part of the file.. */
@@ -461,23 +461,21 @@
FT_CharMap cmap;
FT_UInt nn;
CFF_Encoding encoding = &cff->encoding;
-
+
for ( nn = 0; nn < (FT_UInt) root->num_charmaps; nn++ )
{
cmap = root->charmaps[nn];
-
+
/* Windows Unicode (3,1) ? */
if ( cmap->platform_id == 3 && cmap->encoding_id == 1 )
goto Skip_Unicode;
-
+
/* Deprecated Unicode platform id ?? */
if ( cmap->platform_id == 0 )
goto Skip_Unicode; /* Standard Unicode (deprecated) */
}
-
- /* we didn't find a Unicode charmap, synthetize one */
-#ifdef FT_CONFIG_OPTION_USE_CMAPS
+ /* we didn't find a Unicode charmap, synthetize one */
cmaprec.face = root;
cmaprec.platform_id = 3;
cmaprec.encoding_id = 1;
@@ -484,7 +482,7 @@
cmaprec.encoding = ft_encoding_unicode;
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 */
@@ -495,7 +493,7 @@
if ( encoding->count > 0 )
{
FT_CMap_Class clazz;
-
+
cmaprec.face = root;
cmaprec.platform_id = 7; /* Adobe platform id */
@@ -506,28 +504,22 @@
cmaprec.encoding = ft_encoding_adobe_standard;
clazz = &cff_cmap_encoding_class_rec;
break;
-
+
case 1:
cmaprec.encoding_id = 1;
cmaprec.encoding = ft_encoding_adobe_expert;
clazz = &cff_cmap_encoding_class_rec;
break;
-
+
default:
cmaprec.encoding_id = 3;
cmaprec.encoding = ft_encoding_adobe_custom;
clazz = &cff_cmap_encoding_class_rec;
}
-
- FT_CMap_New( clazz, NULL, &cmaprec, NULL );
-#else /* !FT_CONFIG_OPTION_USE_CMAPS */
-
- /* unimplemented !! */
-
-#endif /* !FT_CONFIG_OPTION_USE_CMAPS */
+ FT_CMap_New( clazz, NULL, &cmaprec, NULL );
}
-
+
}
}
--- a/src/cid/cidriver.c
+++ b/src/cid/cidriver.c
@@ -40,11 +40,11 @@
cid_get_postscript_name( CID_Face face )
{
const char* result = face->cid.cid_font_name;
-
+
if ( result && result[0] == '/' )
result++;
-
+
return result;
}
@@ -63,228 +63,7 @@
}
-#if 0 /* unimplemented yet */
- static FT_Error
- cid_Get_Kerning( T1_Face face,
- FT_UInt left_glyph,
- FT_UInt right_glyph,
- FT_Vector* kerning )
- {
- CID_AFM* afm;
-
-
- kerning->x = 0;
- kerning->y = 0;
-
- afm = (CID_AFM*)face->afm_data;
- if ( afm )
- CID_Get_Kerning( afm, left_glyph, right_glyph, kerning );
-
- return CID_Err_Ok;
- }
-
-#endif /* 0 */
-
-
- /*************************************************************************/
- /* */
- /* <Function> */
- /* Cid_Get_Char_Index */
- /* */
- /* <Description> */
- /* Uses a charmap to return a given character code's glyph index. */
- /* */
- /* <Input> */
- /* charmap :: A handle to the source charmap object. */
- /* */
- /* charcode :: The character code. */
- /* */
- /* <Return> */
- /* Glyph index. 0 means `undefined character code'. */
- /* */
- static FT_UInt
- CID_Get_Char_Index( FT_CharMap charmap,
- FT_Long charcode )
- {
- T1_Face face;
- FT_UInt result = 0;
- PSNames_Service psnames;
-
-
- face = (T1_Face)charmap->face;
- psnames = (PSNames_Service)face->psnames;
- if ( psnames )
- switch ( charmap->encoding )
- {
- /*******************************************************************/
- /* */
- /* Unicode encoding support */
- /* */
- case ft_encoding_unicode:
- /* use the `PSNames' module to synthetize the Unicode charmap */
- result = psnames->lookup_unicode( &face->unicode_map,
- (FT_ULong)charcode );
-
- /* the function returns 0xFFFF if the Unicode charcode has */
- /* no corresponding glyph. */
- if ( result == 0xFFFF )
- result = 0;
- goto Exit;
-
- /*******************************************************************/
- /* */
- /* Custom Type 1 encoding */
- /* */
- case ft_encoding_adobe_custom:
- {
- T1_Encoding encoding = &face->type1.encoding;
-
-
- if ( charcode >= encoding->code_first &&
- charcode <= encoding->code_last )
- result = encoding->char_index[charcode];
- goto Exit;
- }
-
- /*******************************************************************/
- /* */
- /* Adobe Standard & Expert encoding support */
- /* */
- default:
- if ( charcode < 256 )
- {
- FT_UInt code;
- FT_Int n;
- const char* glyph_name;
-
-
- code = psnames->adobe_std_encoding[charcode];
- if ( charmap->encoding == ft_encoding_adobe_expert )
- code = psnames->adobe_expert_encoding[charcode];
-
- glyph_name = psnames->adobe_std_strings( code );
- if ( !glyph_name )
- break;
-
- for ( n = 0; n < face->type1.num_glyphs; n++ )
- {
- const char* gname = face->type1.glyph_names[n];
-
-
- if ( gname && gname[0] == glyph_name[0] &&
- ft_strcmp( gname, glyph_name ) == 0 )
- {
- result = n;
- break;
- }
- }
- }
- }
-
- Exit:
- return result;
- }
-
-
- /*************************************************************************/
- /* */
- /* <Function> */
- /* Cid_Get_Next_Char */
- /* */
- /* <Description> */
- /* Uses a charmap to return the next encoded char after. */
- /* */
- /* <Input> */
- /* charmap :: A handle to the source charmap object. */
- /* */
- /* charcode :: The character code. */
- /* */
- /* <Return> */
- /* Next char code. 0 means `no more char codes'. */
- /* */
- static FT_Long
- CID_Get_Next_Char( FT_CharMap charmap,
- FT_Long charcode )
- {
- T1_Face face;
- PSNames_Service psnames;
-
-
- face = (T1_Face)charmap->face;
- psnames = (PSNames_Service)face->psnames;
-
- if ( psnames )
- switch ( charmap->encoding )
- {
- /*******************************************************************/
- /* */
- /* Unicode encoding support */
- /* */
- case ft_encoding_unicode:
- /* use the `PSNames' module to synthetize the Unicode charmap */
- return psnames->next_unicode (&face->unicode_map,
- (FT_ULong)charcode );
-
- /*******************************************************************/
- /* */
- /* Custom Type 1 encoding */
- /* */
- case ft_encoding_adobe_custom:
- {
- T1_Encoding encoding = &face->type1.encoding;
-
-
- charcode++;
- if ( charcode < encoding->code_first )
- charcode = encoding->code_first;
- while ( charcode <= encoding->code_last )
- {
- if ( encoding->char_index[charcode] )
- return charcode;
- charcode++;
- }
- }
- break;
-
- /*******************************************************************/
- /* */
- /* Adobe Standard & Expert encoding support */
- /* */
- default:
- while ( ++charcode < 256 )
- {
- FT_UInt code;
- FT_Int n;
- const char* glyph_name;
-
-
- code = psnames->adobe_std_encoding[charcode];
- if ( charmap->encoding == ft_encoding_adobe_expert )
- code = psnames->adobe_expert_encoding[charcode];
-
- glyph_name = psnames->adobe_std_strings( code );
- if ( !glyph_name )
- continue;
-
- for ( n = 0; n < face->type1.num_glyphs; n++ )
- {
- const char* gname = face->type1.glyph_names[n];
-
-
- if ( gname && gname[0] == glyph_name[0] &&
- ft_strcmp( gname, glyph_name ) == 0 )
- {
- return charcode;
- }
- }
- }
- }
-
- return 0;
- }
-
-
FT_CALLBACK_TABLE_DEF
const FT_Driver_ClassRec t1cid_driver_class =
{
@@ -293,7 +72,7 @@
ft_module_font_driver |
ft_module_driver_scalable |
ft_module_driver_has_hinter ,
-
+
sizeof( FT_DriverRec ),
"t1cid", /* module name */
0x10000L, /* version 1.0 of driver */
@@ -323,14 +102,11 @@
(FT_Size_ResetPixelsFunc) CID_Size_Reset,
(FT_Slot_LoadFunc) CID_Load_Glyph,
- (FT_CharMap_CharIndexFunc)CID_Get_Char_Index,
(FT_Face_GetKerningFunc) 0,
(FT_Face_AttachFunc) 0,
(FT_Face_GetAdvancesFunc) 0,
-
- (FT_CharMap_CharNextFunc) CID_Get_Next_Char
};
--- a/src/pcf/pcfdriver.c
+++ b/src/pcf/pcfdriver.c
@@ -460,13 +460,9 @@
(FT_Slot_LoadFunc) PCF_Glyph_Load,
- (FT_CharMap_CharIndexFunc)0,
-
(FT_Face_GetKerningFunc) 0,
(FT_Face_AttachFunc) 0,
- (FT_Face_GetAdvancesFunc) 0,
-
- (FT_CharMap_CharNextFunc) 0
+ (FT_Face_GetAdvancesFunc) 0
};
--- a/src/pfr/pfrdrivr.c
+++ b/src/pfr/pfrdrivr.c
@@ -57,13 +57,10 @@
(FT_Size_ResetPointsFunc) NULL,
(FT_Size_ResetPixelsFunc) NULL,
(FT_Slot_LoadFunc) pfr_slot_load,
- (FT_CharMap_CharIndexFunc)NULL,
(FT_Face_GetKerningFunc) pfr_face_get_kerning,
(FT_Face_AttachFunc) 0,
- (FT_Face_GetAdvancesFunc) 0,
-
- (FT_CharMap_CharNextFunc) NULL
+ (FT_Face_GetAdvancesFunc) 0
};
--- a/src/sfnt/sfobjs.c
+++ b/src/sfnt/sfobjs.c
@@ -578,7 +578,6 @@
/* Try to set the charmap encoding according to the platform & */
/* encoding ID of each charmap. */
/* */
-#ifdef FT_CONFIG_OPTION_USE_CMAPS
TT_Build_CMaps( face ); /* ignore errors */
@@ -605,43 +604,8 @@
}
}
-#else /* !FT_CONFIG_OPTION_USE_CMAPS */
- {
- TT_CharMap charmap = face->charmaps;
-
- charmap = face->charmaps;
- root->num_charmaps = face->num_charmaps;
-
- /* allocate table of pointers */
- if ( FT_NEW_ARRAY( root->charmaps, root->num_charmaps ) )
- goto Exit;
-
- for ( n = 0; n < root->num_charmaps; n++, charmap++ )
- {
- FT_Int platform = charmap->cmap.platformID;
- FT_Int encoding = charmap->cmap.platformEncodingID;
-
-
- charmap->root.face = (FT_Face)face;
- charmap->root.platform_id = (FT_UShort)platform;
- charmap->root.encoding_id = (FT_UShort)encoding;
- charmap->root.encoding = sfnt_find_encoding( platform, encoding );
-
- /* now, set root->charmap with a unicode charmap */
- /* wherever available */
- if ( !root->charmap &&
- charmap->root.encoding == ft_encoding_unicode )
- root->charmap = (FT_CharMap)charmap;
-
- root->charmaps[n] = (FT_CharMap)charmap;
- }
- }
-
-#endif /* !FT_CONFIG_OPTION_USE_CMAPS */
-
-
#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
if ( face->num_sbit_strikes )
@@ -808,8 +772,6 @@
FT_FREE( face->dir_tables );
face->num_tables = 0;
-#ifdef FT_CONFIG_OPTION_USE_CMAPS
-
{
FT_Stream stream = FT_FACE_STREAM( face );
@@ -818,27 +780,6 @@
FT_FRAME_RELEASE( face->cmap_table );
face->cmap_size = 0;
}
-
-#else /* !FT_CONFIG_OPTION_USE_CMAPS */
-
- /* freeing the character mapping tables */
- if ( sfnt && sfnt->load_charmaps )
- {
- FT_UShort n;
-
-
- for ( n = 0; n < face->num_charmaps; n++ )
- sfnt->free_charmap( face, &face->charmaps[n].cmap );
- }
-
- FT_FREE( face->charmaps );
- face->num_charmaps = 0;
-
- FT_FREE( face->root.charmaps );
- face->root.num_charmaps = 0;
- face->root.charmap = 0;
-
-#endif /* !FT_CONFIG_OPTION_USE_CMAPS */
/* freeing the horizontal metrics */
FT_FREE( face->horizontal.long_metrics );
--- a/src/sfnt/ttcmap0.c
+++ b/src/sfnt/ttcmap0.c
@@ -1628,8 +1628,6 @@
#endif /* TT_CONFIG_CMAP_FORMAT_12 */
-#ifdef FT_CONFIG_OPTION_USE_CMAPS
-
static const TT_CMap_Class tt_cmap_classes[] =
{
#ifdef TT_CONFIG_CMAP_FORMAT_0
@@ -1743,8 +1741,6 @@
return 0;
}
-
-#endif /* FT_CONFIG_OPTION_USE_CMAPS */
/* END */
--- a/src/sfnt/ttcmap0.h
+++ b/src/sfnt/ttcmap0.h
@@ -54,7 +54,7 @@
{
FT_ValidatorRec validator;
FT_UInt num_glyphs;
-
+
} TT_ValidatorRec, *TT_Validator;
@@ -62,12 +62,8 @@
#define TT_VALID_GLYPH_COUNT( x ) TT_VALIDATOR( x )->num_glyphs
-#ifdef FT_CONFIG_OPTION_USE_CMAPS
-
FT_LOCAL( FT_Error )
TT_Build_CMaps( TT_Face face );
-
-#endif
FT_END_HEADER
--- a/src/sfnt/ttload.c
+++ b/src/sfnt/ttload.c
@@ -1200,8 +1200,6 @@
/* FreeType error code. 0 means success. */
/* */
-#ifdef FT_CONFIG_OPTION_USE_CMAPS
-
FT_LOCAL_DEF( FT_Error )
TT_Load_CMap( TT_Face face,
FT_Stream stream )
@@ -1229,105 +1227,6 @@
return error;
}
-#else /* !FT_CONFIG_OPTION_USE_CMAPS */
-
- FT_LOCAL_DEF( FT_Error )
- TT_Load_CMap( TT_Face face,
- FT_Stream stream )
- {
- FT_Error error;
- FT_Memory memory = stream->memory;
- FT_Long table_start;
- TT_CMapDirRec cmap_dir;
-
- const FT_Frame_Field cmap_fields[] =
- {
-#undef FT_STRUCTURE
-#define FT_STRUCTURE TT_CMapDirRec
-
- FT_FRAME_START( 4 ),
- FT_FRAME_USHORT( tableVersionNumber ),
- FT_FRAME_USHORT( numCMaps ),
- FT_FRAME_END
- };
-
- const FT_Frame_Field cmap_rec_fields[] =
- {
-#undef FT_STRUCTURE
-#define FT_STRUCTURE TT_CMapTableRec
-
- FT_FRAME_START( 4 ),
- FT_FRAME_USHORT( format ),
- FT_FRAME_USHORT( length ),
- FT_FRAME_END
- };
-
-
- FT_TRACE2(( "CMaps " ));
-
- error = face->goto_table( face, TTAG_cmap, stream, 0 );
- if ( error )
- {
- error = SFNT_Err_CMap_Table_Missing;
- goto Exit;
- }
-
- table_start = FT_STREAM_POS();
-
- if ( FT_STREAM_READ_FIELDS( cmap_fields, &cmap_dir ) )
- goto Exit;
-
- /* reserve space in face table for cmap tables */
- if ( FT_NEW_ARRAY( face->charmaps, cmap_dir.numCMaps ) )
- goto Exit;
-
- face->num_charmaps = cmap_dir.numCMaps;
- {
- TT_CharMap charmap = face->charmaps;
- TT_CharMap limit = charmap + face->num_charmaps;
-
-
- /* read the header of each charmap first */
- if ( FT_FRAME_ENTER( face->num_charmaps * 8L ) )
- goto Exit;
-
- for ( ; charmap < limit; charmap++ )
- {
- TT_CMapTable cmap;
-
-
- charmap->root.face = (FT_Face)face;
- cmap = &charmap->cmap;
-
- cmap->loaded = FALSE;
- cmap->platformID = FT_GET_USHORT();
- cmap->platformEncodingID = FT_GET_USHORT();
- cmap->offset = (FT_ULong)FT_GET_LONG();
- }
-
- FT_FRAME_EXIT();
-
- /* now read the rest of each table */
- for ( charmap = face->charmaps; charmap < limit; charmap++ )
- {
- TT_CMapTable cmap = &charmap->cmap;
-
-
- if ( FT_STREAM_SEEK( table_start + (FT_Long)cmap->offset ) ||
- FT_STREAM_READ_FIELDS( cmap_rec_fields, cmap ) )
- goto Exit;
-
- cmap->offset = FT_STREAM_POS();
- }
- }
-
- FT_TRACE2(( "loaded\n" ));
-
- Exit:
- return error;
- }
-
-#endif /* !FT_CONFIG_OPTION_USE_CMAPS */
/*************************************************************************/
--- a/src/truetype/ttdriver.c
+++ b/src/truetype/ttdriver.c
@@ -516,13 +516,10 @@
(FT_Size_ResetPointsFunc) Set_Char_Sizes,
(FT_Size_ResetPixelsFunc) Set_Pixel_Sizes,
(FT_Slot_LoadFunc) Load_Glyph,
- (FT_CharMap_CharIndexFunc)Get_Char_Index,
(FT_Face_GetKerningFunc) Get_Kerning,
(FT_Face_AttachFunc) 0,
- (FT_Face_GetAdvancesFunc) 0,
-
- (FT_CharMap_CharNextFunc) Get_Next_Char
+ (FT_Face_GetAdvancesFunc) 0
};
--- a/src/type1/t1driver.c
+++ b/src/type1/t1driver.c
@@ -227,235 +227,8 @@
#endif /* T1_CONFIG_OPTION_NO_AFM */
- /*************************************************************************/
- /* */
- /* <Function> */
- /* Get_Char_Index */
- /* */
- /* <Description> */
- /* Uses a charmap to return a given character code's glyph index. */
- /* */
- /* <Input> */
- /* charmap :: A handle to the source charmap object. */
- /* */
- /* charcode :: The character code. */
- /* */
- /* <Return> */
- /* Glyph index. 0 means `undefined character code'. */
- /* */
- static FT_UInt
- Get_Char_Index( FT_CharMap charmap,
- FT_Long charcode )
- {
- T1_Face face;
- FT_UInt result = 0;
- PSNames_Service psnames;
- face = (T1_Face)charmap->face;
- psnames = (PSNames_Service)face->psnames;
- if ( psnames )
- switch ( charmap->encoding )
- {
- /*******************************************************************/
- /* */
- /* Unicode encoding support */
- /* */
- case ft_encoding_unicode:
- /* use the `PSNames' module to synthetize the Unicode charmap */
- result = psnames->lookup_unicode( &face->unicode_map,
- (FT_ULong)charcode );
-
- /* the function returns 0xFFFF if the Unicode charcode has */
- /* no corresponding glyph */
- if ( result == 0xFFFFU )
- result = 0;
- goto Exit;
-
- /*******************************************************************/
- /* */
- /* ISOLatin1 encoding support */
- /* */
- case ft_encoding_latin_1:
- /* ISOLatin1 is the first page of Unicode */
- if ( charcode < 256 && psnames->unicode_value )
- {
- result = psnames->lookup_unicode( &face->unicode_map,
- (FT_ULong)charcode );
-
- /* the function returns 0xFFFF if the Unicode charcode has */
- /* no corresponding glyph */
- if ( result == 0xFFFFU )
- result = 0;
- }
- goto Exit;
-
- /*******************************************************************/
- /* */
- /* Custom Type 1 encoding */
- /* */
- case ft_encoding_adobe_custom:
- {
- T1_Encoding encoding = &face->type1.encoding;
-
-
- if ( charcode >= encoding->code_first &&
- charcode <= encoding->code_last )
- result = encoding->char_index[charcode];
- goto Exit;
- }
-
- /*******************************************************************/
- /* */
- /* Adobe Standard & Expert encoding support */
- /* */
- default:
- if ( charcode < 256 )
- {
- FT_UInt code;
- FT_Int n;
- const char* glyph_name;
-
-
- code = psnames->adobe_std_encoding[charcode];
- if ( charmap->encoding == ft_encoding_adobe_expert )
- code = psnames->adobe_expert_encoding[charcode];
-
- glyph_name = psnames->adobe_std_strings( code );
- if ( !glyph_name )
- break;
-
- for ( n = 0; n < face->type1.num_glyphs; n++ )
- {
- const char* gname = face->type1.glyph_names[n];
-
-
- if ( gname && gname[0] == glyph_name[0] &&
- ft_strcmp( gname, glyph_name ) == 0 )
- {
- result = n;
- break;
- }
- }
- }
- }
- Exit:
- return result;
- }
-
-
- /*************************************************************************/
- /* */
- /* <Function> */
- /* Get_Next_Char */
- /* */
- /* <Description> */
- /* Uses a charmap to return the next encoded char. */
- /* */
- /* <Input> */
- /* charmap :: A handle to the source charmap object. */
- /* */
- /* charcode :: The character code. */
- /* */
- /* <Return> */
- /* Next char code. 0 means `no more char codes'. */
- /* */
- static FT_Long
- Get_Next_Char( FT_CharMap charmap,
- FT_Long charcode )
- {
- T1_Face face;
- PSNames_Service psnames;
-
-
- face = (T1_Face)charmap->face;
- psnames = (PSNames_Service)face->psnames;
-
- if ( psnames )
- switch ( charmap->encoding )
- {
- /*******************************************************************/
- /* */
- /* Unicode encoding support */
- /* */
- case ft_encoding_unicode:
- /* use the `PSNames' module to synthetize the Unicode charmap */
- return psnames->next_unicode( &face->unicode_map,
- (FT_ULong)charcode );
-
- /*******************************************************************/
- /* */
- /* ISOLatin1 encoding support */
- /* */
- case ft_encoding_latin_1:
- {
- FT_Long code;
-
-
- /* use the `PSNames' module to synthetize the Unicode charmap */
- code = psnames->next_unicode( &face->unicode_map,
- (FT_ULong)charcode );
- if ( code < 256 )
- return code;
- break;
- }
-
- /*******************************************************************/
- /* */
- /* Custom Type 1 encoding */
- /* */
- case ft_encoding_adobe_custom:
- {
- T1_Encoding encoding = &face->type1.encoding;
-
-
- charcode++;
- if ( charcode < encoding->code_first )
- charcode = encoding->code_first;
- while ( charcode <= encoding->code_last )
- {
- if ( encoding->char_index[charcode] )
- return charcode;
- charcode++;
- }
- }
-
- /*******************************************************************/
- /* */
- /* Adobe Standard & Expert encoding support */
- /* */
- default:
- while ( ++charcode < 256 )
- {
- FT_UInt code;
- FT_Int n;
- const char* glyph_name;
-
-
- code = psnames->adobe_std_encoding[charcode];
- if ( charmap->encoding == ft_encoding_adobe_expert )
- code = psnames->adobe_expert_encoding[charcode];
-
- glyph_name = psnames->adobe_std_strings( code );
- if ( !glyph_name )
- continue;
-
- for ( n = 0; n < face->type1.num_glyphs; n++ )
- {
- const char* gname = face->type1.glyph_names[n];
-
-
- if ( gname && gname[0] == glyph_name[0] &&
- ft_strcmp( gname, glyph_name ) == 0 )
- return charcode;
- }
- }
- }
-
- return 0;
- }
-
-
FT_CALLBACK_TABLE_DEF
const FT_Driver_ClassRec t1_driver_class =
{
@@ -491,7 +264,6 @@
(FT_Size_ResetPointsFunc) T1_Size_Reset,
(FT_Size_ResetPixelsFunc) T1_Size_Reset,
(FT_Slot_LoadFunc) T1_Load_Glyph,
- (FT_CharMap_CharIndexFunc)Get_Char_Index,
#ifdef T1_CONFIG_OPTION_NO_AFM
(FT_Face_GetKerningFunc) 0,
@@ -500,9 +272,7 @@
(FT_Face_GetKerningFunc) Get_Kerning,
(FT_Face_AttachFunc) T1_Read_AFM,
#endif
- (FT_Face_GetAdvancesFunc) 0,
-
- (FT_CharMap_CharNextFunc) Get_Next_Char
+ (FT_Face_GetAdvancesFunc) 0
};
--- a/src/type1/t1objs.c
+++ b/src/type1/t1objs.c
@@ -427,8 +427,6 @@
root->internal->max_contours = 0;
}
-#ifdef FT_CONFIG_OPTION_USE_CMAPS
-
{
FT_Face root = &face->root;
@@ -491,81 +489,6 @@
root->charmap = root->charmaps[0];
}
}
-
-#else /* !FT_CONFIG_OPTION_USE_CMAPS */
-
- /* charmap support -- synthetize unicode charmap if possible */
- {
- FT_Face root = &face->root;
- FT_CharMap charmap = face->charmaprecs;
-
-
- /* synthesize a Unicode charmap if there is support in the `PSNames' */
- /* module */
- if ( psnames )
- {
- if ( psnames->unicode_value )
- {
- error = psnames->build_unicodes(
- root->memory,
- face->type1.num_glyphs,
- (const char**)face->type1.glyph_names,
- &face->unicode_map );
- if ( !error )
- {
- root->charmap = charmap;
- charmap->face = (FT_Face)face;
- charmap->encoding = ft_encoding_unicode;
- charmap->platform_id = 3;
- charmap->encoding_id = 1;
- charmap++;
- }
-
- /* simply clear the error in case of failure (which really) */
- /* means that out of memory or no unicode glyph names */
- error = T1_Err_Ok;
- }
- }
-
- /* now, support either the standard, expert, or custom encoding */
- charmap->face = (FT_Face)face;
- charmap->platform_id = 7; /* a new platform id for Adobe fonts? */
-
- switch ( face->type1.encoding_type )
- {
- case T1_ENCODING_TYPE_STANDARD:
- charmap->encoding = ft_encoding_adobe_standard;
- charmap->encoding_id = 0;
- break;
-
- case T1_ENCODING_TYPE_EXPERT:
- charmap->encoding = ft_encoding_adobe_expert;
- charmap->encoding_id = 1;
- break;
-
- case T1_ENCODING_TYPE_ARRAY:
- charmap->encoding = ft_encoding_adobe_custom;
- charmap->encoding_id = 2;
- break;
-
- case T1_ENCODING_TYPE_ISOLATIN1:
- charmap->encoding = ft_encoding_latin_1;
- charmap->encoding_id = 3;
- break;
-
- default:
- FT_ERROR(( "T1_Face_Init: invalid encoding\n" ));
- error = T1_Err_Invalid_File_Format;
- goto Exit;
- }
-
- root->charmaps = face->charmaps;
- root->num_charmaps = charmap - face->charmaprecs + 1;
- face->charmaps[0] = &face->charmaprecs[0];
- face->charmaps[1] = &face->charmaprecs[1];
- }
-
-#endif /* !FT_CONFIG_OPTION_USE_CMAPS */
Exit:
return error;
--- a/src/type42/t42drivr.c
+++ b/src/type42/t42drivr.c
@@ -61,10 +61,10 @@
{
FT_UInt len = (FT_UInt)( ft_strlen( gname ) );
-
+
if ( len >= buffer_max )
len = buffer_max - 1;
-
+
FT_MEM_COPY( buffer, gname, len );
((FT_Byte*)buffer)[len] = 0;
}
@@ -158,14 +158,11 @@
(FT_Size_ResetPointsFunc) T42_Size_SetChars,
(FT_Size_ResetPixelsFunc) T42_Size_SetPixels,
(FT_Slot_LoadFunc) T42_GlyphSlot_Load,
- (FT_CharMap_CharIndexFunc)T42_CMap_CharIndex,
(FT_Face_GetKerningFunc) 0,
(FT_Face_AttachFunc) 0,
- (FT_Face_GetAdvancesFunc) 0,
-
- (FT_CharMap_CharNextFunc) T42_CMap_CharNext,
+ (FT_Face_GetAdvancesFunc) 0
};
--- a/src/type42/t42objs.c
+++ b/src/type42/t42objs.c
@@ -436,120 +436,8 @@
}
- FT_LOCAL_DEF( FT_UInt )
- T42_CMap_CharIndex( FT_CharMap charmap,
- FT_Long charcode )
- {
- T42_Face face;
- FT_UInt result = 0;
- PSNames_Service psnames;
- face = (T42_Face)charmap->face;
- psnames = (PSNames_Service)face->psnames;
- if (!psnames )
- goto Exit;
-
- switch ( charmap->encoding )
- {
- /*******************************************************************/
- /* */
- /* Unicode encoding support */
- /* */
- case ft_encoding_unicode:
- /* if this charmap is used, we ignore the encoding of the font and */
- /* use the `PSNames' module to synthetize the Unicode charmap */
- result = psnames->lookup_unicode( &face->unicode_map,
- (FT_ULong)charcode );
-
- /* the function returns 0xFFFF if the Unicode charcode has */
- /* no corresponding glyph */
- if ( result == 0xFFFFU )
- result = 0;
-
- /* The result returned is the index (position)in the CharStrings */
- /* array. This must be used now to get the value associated to */
- /* that glyph_name, which is the real index within the truetype */
- /* structure. */
- result = ft_atoi( (const char*)face->type1.charstrings[result] );
- goto Exit;
-
- /*******************************************************************/
- /* */
- /* ISOLatin1 encoding support */
- /* */
- case ft_encoding_latin_1:
- /* ISOLatin1 is the first page of Unicode */
- if ( charcode < 256 && psnames->unicode_value )
- {
- result = psnames->lookup_unicode( &face->unicode_map,
- (FT_ULong)charcode );
-
- /* the function returns 0xFFFF if the Unicode charcode has */
- /* no corresponding glyph */
- if ( result == 0xFFFFU )
- result = 0;
- }
- goto Exit;
-
- /*******************************************************************/
- /* */
- /* Custom Type 1 encoding */
- /* */
- case ft_encoding_adobe_custom:
- {
- T1_Encoding encoding = &face->type1.encoding;
-
-
- if ( charcode >= encoding->code_first &&
- charcode <= encoding->code_last )
- {
- FT_UInt idx = encoding->char_index[charcode];
-
-
- result = ft_atoi( (const char *)face->type1.charstrings[idx] );
- }
- goto Exit;
- }
-
- /*******************************************************************/
- /* */
- /* Adobe Standard & Expert encoding support */
- /* */
- default:
- if ( charcode < 256 )
- {
- FT_UInt code;
- FT_Int n;
- const char* glyph_name;
-
-
- code = psnames->adobe_std_encoding[charcode];
- if ( charmap->encoding == ft_encoding_adobe_expert )
- code = psnames->adobe_expert_encoding[charcode];
-
- glyph_name = psnames->adobe_std_strings( code );
- if ( !glyph_name )
- break;
-
- for ( n = 0; n < face->type1.num_glyphs; n++ )
- {
- const char* gname = face->type1.glyph_names[n];
-
- if ( gname && ( ft_strcmp( gname, glyph_name ) == 0 ) )
- {
- result = ft_atoi( (const char *)face->type1.charstrings[n] );
- break;
- }
- }
- }
- }
-
- Exit:
- return result;
- }
-
-
FT_LOCAL_DEF( FT_Error )
T42_Size_Init( T42_Size size )
{
@@ -741,103 +629,6 @@
}
return error;
- }
-
-
-
- FT_LOCAL_DEF( FT_Long )
- T42_CMap_CharNext( FT_CharMap charmap,
- FT_Long charcode )
- {
- T42_Face face;
- PSNames_Service psnames;
-
-
- face = (T42_Face)charmap->face;
- psnames = (PSNames_Service)face->psnames;
-
- if ( psnames )
- switch ( charmap->encoding )
- {
- /*******************************************************************/
- /* */
- /* Unicode encoding support */
- /* */
- case ft_encoding_unicode:
- /* use the `PSNames' module to synthetize the Unicode charmap */
- return psnames->next_unicode( &face->unicode_map,
- (FT_ULong)charcode );
-
- /*******************************************************************/
- /* */
- /* ISOLatin1 encoding support */
- /* */
- case ft_encoding_latin_1:
- {
- FT_ULong code;
-
-
- /* use the `PSNames' module to synthetize the Unicode charmap */
- code = psnames->next_unicode( &face->unicode_map,
- (FT_ULong)charcode );
- if ( code < 256 )
- return code;
- break;
- }
-
- /*******************************************************************/
- /* */
- /* Custom Type 1 encoding */
- /* */
- case ft_encoding_adobe_custom:
- {
- T1_Encoding encoding = &face->type1.encoding;
-
-
- charcode++;
- if ( charcode < encoding->code_first )
- charcode = encoding->code_first;
- while ( charcode <= encoding->code_last ) {
- if ( encoding->char_index[charcode] )
- return charcode;
- charcode++;
- }
- }
-
-
- /*******************************************************************/
- /* */
- /* Adobe Standard & Expert encoding support */
- /* */
- default:
- while ( ++charcode < 256 )
- {
- FT_UInt code;
- FT_Int n;
- const char* glyph_name;
-
-
- code = psnames->adobe_std_encoding[charcode];
- if ( charmap->encoding == ft_encoding_adobe_expert )
- code = psnames->adobe_expert_encoding[charcode];
-
- glyph_name = psnames->adobe_std_strings( code );
- if ( !glyph_name )
- continue;
-
- for ( n = 0; n < face->type1.num_glyphs; n++ )
- {
- const char* gname = face->type1.glyph_names[n];
-
-
- if ( gname && gname[0] == glyph_name[0] &&
- ft_strcmp( gname, glyph_name ) == 0 )
- return charcode;
- }
- }
- }
-
- return 0;
}
--- a/src/type42/t42objs.h
+++ b/src/type42/t42objs.h
@@ -109,15 +109,6 @@
T42_GlyphSlot_Done( T42_GlyphSlot slot );
- FT_LOCAL( FT_UInt )
- T42_CMap_CharIndex( FT_CharMap charmap,
- FT_Long charcode );
-
- FT_LOCAL( FT_Long )
- T42_CMap_CharNext( FT_CharMap charmap,
- FT_Long charcode );
-
-
FT_LOCAL( FT_Error )
T42_Driver_Init( T42_Driver driver );
--- a/src/winfonts/winfnt.c
+++ b/src/winfonts/winfnt.c
@@ -682,14 +682,9 @@
(FT_Size_ResetPixelsFunc) FNT_Size_Set_Pixels,
(FT_Slot_LoadFunc) FNT_Load_Glyph,
- (FT_CharMap_CharIndexFunc)0,
-
-
(FT_Face_GetKerningFunc) 0,
(FT_Face_AttachFunc) 0,
- (FT_Face_GetAdvancesFunc) 0,
-
- (FT_CharMap_CharNextFunc) 0
+ (FT_Face_GetAdvancesFunc) 0
};