ref: f4c0b921a18ad421a022ee7c1d2449daae502ae0
parent: c4ec9731608c0001e41fb53f59e04ec9a5eeabf1
author: Werner Lemberg <[email protected]>
date: Tue Sep 30 01:39:35 EDT 2003
* include/freetype/internal/t1types.h: Don't include FT_INTERNAL_OBJECTS_H but FT_INTERNAL_SERVICE_H. * src/truetype/ttobjs.c: Don't include FT_SERVICE_POSTSCRIPT_NAMES_H.
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,27 +1,122 @@
+2003-09-29 Werner Lemberg <[email protected]>
+
+ * include/freetype/internal/t1types.h: Don't include
+ FT_INTERNAL_OBJECTS_H but FT_INTERNAL_SERVICE_H.
+ * src/truetype/ttobjs.c: Don't include
+ FT_SERVICE_POSTSCRIPT_NAMES_H.
+
2003-09-29 David Turner <[email protected]>
- * src/base/ftglyph.c (FT_Get_Glyph): fixing small bug, thanks
- to Henry Maddocks for spotting this
+ Added new service to handle glyph name dictionaries, replacing the
+ old internal header named `psnames.h' by `services/svpsname.h'.
+ Note that this is different from `services/svpostnm.h' which only
+ handles the retrieval of PostScript font names for a given face.
+ (Should we merge these two services into a single header?)
- * include/freetype/internal/services/svpsname.h (added),
- include/freetype/internal/psnames.h (removed),
- include/freetype/internal/internal.h (FT_SERVICE_POSTSCRIPT_NAMES):
+ * include/freetype/internal/psnames.h: Removed. Most of its
+ contents is moved to...
+ * include/freetype/internal/services/svpsname.h: New file.
- added new service to handle glyph name dictionaries, replacing
- the old internal header named "psnames.h" by "services/svpsname.h"
- note that this is different from "services/svpostnm.h" which only
- handles the retrieval of Postscript font name for a given face.
- (should we merge these two services into a single header ??)
+ * include/freetype/internal/services/svpostnm.h
+ (FT_SERVICE_ID_POSTSCRIPT_NAME): Replaced with...
+ (FT_SERVICE_ID_POSTSCRIPT_FONT_NAME): New macro.
+ (PsName): Service named changed to...
+ (PsFontName): This.
+ Updated `FT_Service_PsName' -> `FT_Service_PsFontName' and
+ `POSTSCRIPT_NAME' -> `POSTSCRIPT_FONT_NAME' everywhere.
+ * include/freetype/internal/internal.h
+ (FT_INTERNAL_POSTSCRIPT_NAMES_H): Removed.
+ * include/freetype/internal/psaux.h: Include
+ FT_SERVICE_POSTSCRIPT_NAMES_H.
+ (T1_DecoderRec): Updated type of `psnames'.
+ * include/freetype/internal/t1types.h: Don't include
+ FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H.
+ Include FT_INTERNAL_OBJECTS_H.
+ * include/freetype/internal/t42types.h: Don't include
+ FT_INTERNAL_POSTSCRIPT_NAMES_H.
+ * include/freetype/internal/tttypes.h (TT_FaceRec): Updated.
- * include/freetype/internal/ftserv.h: adding
- FT_FACE_FIND_GLOBAL_SERVICE (used to lookup a service globally,
- instead of only within the current module)
+ * include/freetype/internal/ftserv.h (FT_FACE_FIND_SERVICE): Changed
+ order of parameters. All callers updated.
+ (FT_FACE_FIND_GLOBAL_SERVICE): New macro to look up a service
+ globally, checking all modules.
+ (FT_ServiceCacheRec): Updated.
+ (FT_SERVICE_POSTSCRIPT_NAMES_H): New macro for accessing
+ `svpsname.h'.
- * include/freetype/internal/ftobjs.h, src/base/ftobjs.c: adding
- the new base function ft_module_get_service
+ * include/freetype/internal/ftobjs.h, src/base/ftobjs.c
+ (ft_module_get_service): New function.
+ * src/cff/cffdrivr.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H
+ but FT_SERVICE_POSTSCRIPT_NAMES_H.
+ (cff_get_glyph_name, cff_get_name_index): Use new POSTSCRIPT_NAMES
+ service.
+ * src/cff/cffcmap.c (cff_cmap_unicode_init): Updated.
+ * src/cff/cffload.c, src/cff/cffload.h: Don't include
+ FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H.
+ (cff_index_get_sid_string): Updated.
+ * src/cff/cffobjs.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H
+ but FT_SERVICE_POSTSCRIPT_NAMES_H.
+ (cff_face_init): Use new POSTSCRIPT_NAMES service.
+ * src/cff/cffobjs.h: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H
+ but FT_SERVICE_POSTSCRIPT_NAMES_H.
+ * src/cid/cidobjs.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H
+ but FT_SERVICE_POSTSCRIPT_NAMES_H.
+ (cid_face_init): Use new POSTSCRIPT_NAMES service.
+ * src/cid/cidriver.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H.
+
+ * src/psaux/t1cmap.c (t1_cmap_std_init, t1_cmap_unicode_init): Use
+ new POSTSCRIPT_NAMES service.
+ * src/psaux/t1decode.h (t1_lookup_glyph_by_stdcharcode,
+ t1_decode_init): Use new POSTSCRIPT_NAMES service.
+ * src/psaux/t1cmap.h, src/psaux/t1decode.h: Dont' include
+ FT_INTERNAL_POSTSCRIPT_NAMES_H.
+
+ * src/psnames/psmodule.c: Don't include
+ FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H.
+ (ps_build_unicode_table): Renamed to...
+ (ps_unicodes_init): This.
+ (ps_lookup_unicode): Renamed to...
+ (ps_unicodes_char_index): This.
+ (ps_next_unicode): Renamed to...
+ (ps_unicodes_char_next): This.
+ (psnames_interface): Updated.
+ (psnames_services): New services list.
+ (psnames_get_service): New function.
+ (psnames_module_class): Updated.
+
+ * src/sfnt/sfobjs.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H
+ but FT_SERVICE_POSTSCRIPT_NAMES_H.
+ (sfnt_init_face): Use new POSTSCRIPT_NAMES service.
+ * src/sfnt/ttpost.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H
+ but FT_SERVICE_POSTSCRIPT_NAMES_H.
+ (tt_face_get_ps_name): Updated.
+
+ * src/truetype/ttobjs.c: Don't include
+ FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H.
+
+ * src/type1/t1driver.c: Don't include
+ FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H.
+ * src/type1/t1objs.c: Don't include
+ FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H.
+ (T1_Face_Init): Use new POSTSCRIPT_NAMES service.
+
+ * src/type42/t42drivr.c (t42_get_ps_name): Renamed to...
+ (t42_get_ps_font_name): This.
+ (t42_service_ps_name): Renamed to...
+ (t42_service_ps_font_name): This.
+ (t42_services): Updated.
+ * src/type42/t42objs.c (T42_Face_Init): Use new POSTSCRIPT_NAMES
+ service.
+ * src/type42/t42objs.h: Don't include
+ FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H.
+
+
+ * src/base/ftglyph.c (FT_Get_Glyph): Don't access `slot' before
+ testing its validity. Reported by Henry Maddocks
+ <[email protected]>.
2003-09-21 Werner Lemberg <[email protected]>
--- a/include/freetype/internal/ftserv.h
+++ b/include/freetype/internal/ftserv.h
@@ -40,9 +40,12 @@
* FT_FACE_FIND_SERVICE
*
* @description:
- * This macro is used to lookup a service from a face's driver module.
+ * This macro is used to look up a service from a face's driver module.
*
* @input:
+ * face ::
+ * The source face handle.
+ *
* id ::
* A string describing the service as defined in the service's
* header files (e.g. FT_SERVICE_ID_MULTI_MASTERS which expands to
@@ -49,9 +52,6 @@
* `multi-masters'). It is automatically prefixed with
* `FT_SERVICE_ID_'.
*
- * face ::
- * The source face handle.
- *
* @output:
* ptr ::
* A variable that receives the service pointer. Will be NULL
@@ -60,8 +60,10 @@
#define FT_FACE_FIND_SERVICE( face, ptr, id ) \
FT_BEGIN_STMNT \
FT_Module module = FT_MODULE( FT_FACE(face)->driver ); \
- FT_Pointer* Pptr = (FT_Pointer*) &(ptr); \
/* the strange cast is to allow C++ compilation */ \
+ FT_Pointer* Pptr = (FT_Pointer*) &(ptr); \
+ \
+ \
*Pptr = NULL; \
if ( module->clazz->get_interface ) \
*Pptr = module->clazz->get_interface( module, FT_SERVICE_ID_ ## id ); \
@@ -68,14 +70,38 @@
FT_END_STMNT
-#define FT_FACE_FIND_GLOBAL_SERVICE( face, ptr, id ) \
- FT_BEGIN_STMNT \
- FT_Module module = FT_MODULE( FT_FACE(face)->driver ); \
- FT_Pointer* Pptr = (FT_Pointer*) &(ptr); \
- \
- /* the strange cast is to allow C++ compilation */ \
- *Pptr = ft_module_get_service( module, FT_SERVICE_ID_ ## id ); \
+ /*
+ * @macro:
+ * FT_FACE_FIND_GLOBAL_SERVICE
+ *
+ * @description:
+ * This macro is used to look up a service from all modules.
+ *
+ * @input:
+ * face ::
+ * The source face handle.
+ *
+ * id ::
+ * A string describing the service as defined in the service's
+ * header files (e.g. FT_SERVICE_ID_MULTI_MASTERS which expands to
+ * `multi-masters'). It is automatically prefixed with
+ * `FT_SERVICE_ID_'.
+ *
+ * @output:
+ * ptr ::
+ * A variable that receives the service pointer. Will be NULL
+ * if not found.
+ */
+#define FT_FACE_FIND_GLOBAL_SERVICE( face, ptr, id ) \
+ FT_BEGIN_STMNT \
+ FT_Module module = FT_MODULE( FT_FACE(face)->driver ); \
+ /* the strange cast is to allow C++ compilation */ \
+ FT_Pointer* Pptr = (FT_Pointer*) &(ptr); \
+ \
+ \
+ *Pptr = ft_module_get_service( module, FT_SERVICE_ID_ ## id ); \
FT_END_STMNT
+
/*************************************************************************/
/*************************************************************************/
--- a/include/freetype/internal/services/svpsname.h
+++ b/include/freetype/internal/services/svpsname.h
@@ -1,36 +1,61 @@
+/***************************************************************************/
+/* */
+/* svpsname.h */
+/* */
+/* The FreeType glyph PS name services (specification). */
+/* */
+/* Copyright 2003 by */
+/* David Turner, Robert Wilhelm, and Werner Lemberg. */
+/* */
+/* This file is part of the FreeType project, and may only be used, */
+/* modified, and distributed under the terms of the FreeType project */
+/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
+/* this file you indicate that you have read the license and */
+/* understand and accept it fully. */
+/* */
+/***************************************************************************/
+
+
#ifndef __SVPSNAME_H__
#define __SVPSNAME_H__
+
FT_BEGIN_HEADER
-#define FT_SERVICE_ID_POSTSCRIPT_NAMES "postscript-names"
- /* Adobe glyph name to unicode value
- */
+#define FT_SERVICE_ID_POSTSCRIPT_NAMES "postscript-names"
+
+
+ /*
+ * Adobe glyph name to unicode value
+ */
typedef FT_UInt32
(*PS_Unicode_ValueFunc)( const char* glyph_name );
- /* Unicode value to Adobe glyph name index. 0xFFFF if not found
- */
+ /*
+ * Unicode value to Adobe glyph name index. 0xFFFF if not found
+ */
typedef FT_UInt
(*PS_Unicode_Index_Func)( FT_UInt num_glyphs,
const char** glyph_names,
FT_ULong unicode );
- /* Macintosh name id to glyph name, NULL if invalid index
- */
+ /*
+ * Macintosh name id to glyph name, NULL if invalid index
+ */
typedef const char*
(*PS_Macintosh_Name_Func)( FT_UInt name_index );
- /* Adobe standard string id to glyph name, NULL if invalid index
- */
+ /*
+ * Adobe standard string id to glyph name, NULL if invalid index
+ */
typedef const char*
(*PS_Adobe_Std_Strings_Func)( FT_UInt string_index );
-
- /* Simple unicode -> glyph index charmap built from font glyph names
- * table
- */
+ /*
+ * Simple unicode -> glyph index charmap built from font glyph names
+ * table.
+ */
typedef struct PS_UniMap_
{
FT_UInt unicode;
@@ -61,6 +86,7 @@
(*PS_Unicodes_CharNextFunc)( PS_Unicodes* unicodes,
FT_ULong unicode );
+
FT_DEFINE_SERVICE( PsNames )
{
PS_Unicode_ValueFunc unicode_value;
@@ -77,6 +103,8 @@
/* */
+
FT_END_HEADER
+
#endif /* __SVPSNAME_H__ */
--- a/include/freetype/internal/t1types.h
+++ b/include/freetype/internal/t1types.h
@@ -23,8 +23,8 @@
#include <ft2build.h>
#include FT_TYPE1_TABLES_H
-#include FT_INTERNAL_OBJECTS_H
#include FT_INTERNAL_POSTSCRIPT_HINTS_H
+#include FT_INTERNAL_SERVICE_H
#include FT_SERVICE_POSTSCRIPT_NAMES_H
--- a/include/freetype/internal/tttypes.h
+++ b/include/freetype/internal/tttypes.h
@@ -1375,8 +1375,10 @@
/* It must be called after the header was */
/* read, and before the `forget'. */
/* */
- /* sfnt :: A pointer to the SFNT `driver' interface. */
+ /* sfnt :: A pointer to the SFNT service. */
/* */
+ /* psnames :: A pointer to the PostScript names service. */
+ /* */
/* hdmx :: The face's horizontal device metrics */
/* (`hdmx' table). This table is optional in */
/* TrueType/OpenType fonts. */
@@ -1494,13 +1496,14 @@
TT_Loader_ReadGlyphFunc read_simple_glyph;
TT_Loader_ReadGlyphFunc read_composite_glyph;
- /* a typeless pointer to the SFNT_Interface table used to load */
- /* the basic TrueType tables in the face object */
+ /* a typeless pointer to the SFNT_Interface table used to load */
+ /* the basic TrueType tables in the face object */
void* sfnt;
- /* a typeless pointer to the FT_Service_PsNamesRec table used to */
- /* handle glyph names <-> unicode & Mac values */
+ /* a typeless pointer to the FT_Service_PsNamesRec table used to */
+ /* handle glyph names <-> unicode & Mac values */
void* psnames;
+
/***********************************************************************/
/* */
--- a/src/psnames/psmodule.c
+++ b/src/psnames/psmodule.c
@@ -339,10 +339,10 @@
{
#ifdef FT_CONFIG_OPTION_ADOBE_GLYPH_LIST
- (PS_Unicode_ValueFunc) ps_unicode_value,
- (PS_Unicodes_InitFunc) ps_unicodes_init,
- (PS_Unicodes_CharIndexFunc) ps_unicodes_char_index,
- (PS_Unicodes_CharNextFunc) ps_unicodes_char_next,
+ (PS_Unicode_ValueFunc) ps_unicode_value,
+ (PS_Unicodes_InitFunc) ps_unicodes_init,
+ (PS_Unicodes_CharIndexFunc)ps_unicodes_char_index,
+ (PS_Unicodes_CharNextFunc) ps_unicodes_char_next,
#else
@@ -353,8 +353,8 @@
#endif /* FT_CONFIG_OPTION_ADOBE_GLYPH_LIST */
- (PS_Macintosh_Name_Func) ps_get_macintosh_name,
- (PS_Adobe_Std_Strings_Func) ps_get_standard_strings,
+ (PS_Macintosh_Name_Func) ps_get_macintosh_name,
+ (PS_Adobe_Std_Strings_Func)ps_get_standard_strings,
t1_standard_encoding,
t1_expert_encoding
@@ -363,9 +363,10 @@
static const FT_ServiceDescRec psnames_services[] =
{
- { FT_SERVICE_ID_POSTSCRIPT_NAMES, & psnames_interface },
+ { FT_SERVICE_ID_POSTSCRIPT_NAMES, &psnames_interface },
{ NULL, NULL }
};
+
static FT_Pointer
psnames_get_service( FT_Module module,
--- a/src/truetype/ttobjs.c
+++ b/src/truetype/ttobjs.c
@@ -23,7 +23,6 @@
#include FT_TRUETYPE_IDS_H
#include FT_TRUETYPE_TAGS_H
#include FT_INTERNAL_SFNT_H
-#include FT_SERVICE_POSTSCRIPT_NAMES_H
#include "ttgload.h"
#include "ttpload.h"