|
|
|
@ -4,7 +4,7 @@ |
|
|
|
|
/* */ |
|
|
|
|
/* High-level `sfnt' driver interface (specification). */ |
|
|
|
|
/* */ |
|
|
|
|
/* Copyright 1996-2006, 2009, 2012 by */ |
|
|
|
|
/* Copyright 1996-2006, 2009, 2012-2013 by */ |
|
|
|
|
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ |
|
|
|
|
/* */ |
|
|
|
|
/* This file is part of the FreeType project, and may only be used, */ |
|
|
|
@ -125,77 +125,6 @@ FT_BEGIN_HEADER |
|
|
|
|
(*TT_Done_Face_Func)( TT_Face face ); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef FT_CONFIG_OPTION_OLD_INTERNALS |
|
|
|
|
|
|
|
|
|
/*************************************************************************/ |
|
|
|
|
/* */ |
|
|
|
|
/* <FuncType> */ |
|
|
|
|
/* TT_Load_SFNT_HeaderRec_Func */ |
|
|
|
|
/* */ |
|
|
|
|
/* <Description> */ |
|
|
|
|
/* Loads the header of a SFNT font file. Supports collections. */ |
|
|
|
|
/* */ |
|
|
|
|
/* <Input> */ |
|
|
|
|
/* face :: A handle to the target face object. */ |
|
|
|
|
/* */ |
|
|
|
|
/* stream :: The input stream. */ |
|
|
|
|
/* */ |
|
|
|
|
/* face_index :: The index of the TrueType font, if we are opening a */ |
|
|
|
|
/* collection. */ |
|
|
|
|
/* */ |
|
|
|
|
/* <Output> */ |
|
|
|
|
/* sfnt :: The SFNT header. */ |
|
|
|
|
/* */ |
|
|
|
|
/* <Return> */ |
|
|
|
|
/* FreeType error code. 0 means success. */ |
|
|
|
|
/* */ |
|
|
|
|
/* <Note> */ |
|
|
|
|
/* The stream cursor must be at the font file's origin. */ |
|
|
|
|
/* */ |
|
|
|
|
/* This function recognizes fonts embedded in a `TrueType */ |
|
|
|
|
/* collection'. */ |
|
|
|
|
/* */ |
|
|
|
|
/* This function checks that the header is valid by looking at the */ |
|
|
|
|
/* values of `search_range', `entry_selector', and `range_shift'. */ |
|
|
|
|
/* */ |
|
|
|
|
typedef FT_Error |
|
|
|
|
(*TT_Load_SFNT_HeaderRec_Func)( TT_Face face, |
|
|
|
|
FT_Stream stream, |
|
|
|
|
FT_Long face_index, |
|
|
|
|
SFNT_Header sfnt ); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*************************************************************************/ |
|
|
|
|
/* */ |
|
|
|
|
/* <FuncType> */ |
|
|
|
|
/* TT_Load_Directory_Func */ |
|
|
|
|
/* */ |
|
|
|
|
/* <Description> */ |
|
|
|
|
/* Loads the table directory into a face object. */ |
|
|
|
|
/* */ |
|
|
|
|
/* <Input> */ |
|
|
|
|
/* face :: A handle to the target face object. */ |
|
|
|
|
/* */ |
|
|
|
|
/* stream :: The input stream. */ |
|
|
|
|
/* */ |
|
|
|
|
/* sfnt :: The SFNT header. */ |
|
|
|
|
/* */ |
|
|
|
|
/* <Return> */ |
|
|
|
|
/* FreeType error code. 0 means success. */ |
|
|
|
|
/* */ |
|
|
|
|
/* <Note> */ |
|
|
|
|
/* The stream cursor must be on the first byte after the 4-byte font */ |
|
|
|
|
/* format tag. This is the case just after a call to */ |
|
|
|
|
/* TT_Load_Format_Tag(). */ |
|
|
|
|
/* */ |
|
|
|
|
typedef FT_Error |
|
|
|
|
(*TT_Load_Directory_Func)( TT_Face face, |
|
|
|
|
FT_Stream stream, |
|
|
|
|
SFNT_Header sfnt ); |
|
|
|
|
|
|
|
|
|
#endif /* FT_CONFIG_OPTION_OLD_INTERNALS */ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*************************************************************************/ |
|
|
|
|
/* */ |
|
|
|
|
/* <FuncType> */ |
|
|
|
@ -363,88 +292,6 @@ FT_BEGIN_HEADER |
|
|
|
|
TT_SBit_MetricsRec *ametrics ); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef FT_CONFIG_OPTION_OLD_INTERNALS |
|
|
|
|
|
|
|
|
|
/*************************************************************************/ |
|
|
|
|
/* */ |
|
|
|
|
/* <FuncType> */ |
|
|
|
|
/* TT_Set_SBit_Strike_OldFunc */ |
|
|
|
|
/* */ |
|
|
|
|
/* <Description> */ |
|
|
|
|
/* Select an sbit strike for a given size request. */ |
|
|
|
|
/* */ |
|
|
|
|
/* <Input> */ |
|
|
|
|
/* face :: The target face object. */ |
|
|
|
|
/* */ |
|
|
|
|
/* req :: The size request. */ |
|
|
|
|
/* */ |
|
|
|
|
/* <Output> */ |
|
|
|
|
/* astrike_index :: The index of the sbit strike. */ |
|
|
|
|
/* */ |
|
|
|
|
/* <Return> */ |
|
|
|
|
/* FreeType error code. 0 means success. Returns an error if no */ |
|
|
|
|
/* sbit strike exists for the selected ppem values. */ |
|
|
|
|
/* */ |
|
|
|
|
typedef FT_Error |
|
|
|
|
(*TT_Set_SBit_Strike_OldFunc)( TT_Face face, |
|
|
|
|
FT_UInt x_ppem, |
|
|
|
|
FT_UInt y_ppem, |
|
|
|
|
FT_ULong* astrike_index ); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*************************************************************************/ |
|
|
|
|
/* */ |
|
|
|
|
/* <FuncType> */ |
|
|
|
|
/* TT_CharMap_Load_Func */ |
|
|
|
|
/* */ |
|
|
|
|
/* <Description> */ |
|
|
|
|
/* Loads a given TrueType character map into memory. */ |
|
|
|
|
/* */ |
|
|
|
|
/* <Input> */ |
|
|
|
|
/* face :: A handle to the parent face object. */ |
|
|
|
|
/* */ |
|
|
|
|
/* stream :: A handle to the current stream object. */ |
|
|
|
|
/* */ |
|
|
|
|
/* <InOut> */ |
|
|
|
|
/* cmap :: A pointer to a cmap object. */ |
|
|
|
|
/* */ |
|
|
|
|
/* <Return> */ |
|
|
|
|
/* FreeType error code. 0 means success. */ |
|
|
|
|
/* */ |
|
|
|
|
/* <Note> */ |
|
|
|
|
/* The function assumes that the stream is already in use (i.e., */ |
|
|
|
|
/* opened). In case of error, all partially allocated tables are */ |
|
|
|
|
/* released. */ |
|
|
|
|
/* */ |
|
|
|
|
typedef FT_Error |
|
|
|
|
(*TT_CharMap_Load_Func)( TT_Face face, |
|
|
|
|
void* cmap, |
|
|
|
|
FT_Stream input ); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*************************************************************************/ |
|
|
|
|
/* */ |
|
|
|
|
/* <FuncType> */ |
|
|
|
|
/* TT_CharMap_Free_Func */ |
|
|
|
|
/* */ |
|
|
|
|
/* <Description> */ |
|
|
|
|
/* Destroys a character mapping table. */ |
|
|
|
|
/* */ |
|
|
|
|
/* <Input> */ |
|
|
|
|
/* face :: A handle to the parent face object. */ |
|
|
|
|
/* */ |
|
|
|
|
/* cmap :: A handle to a cmap object. */ |
|
|
|
|
/* */ |
|
|
|
|
/* <Return> */ |
|
|
|
|
/* FreeType error code. 0 means success. */ |
|
|
|
|
/* */ |
|
|
|
|
typedef FT_Error |
|
|
|
|
(*TT_CharMap_Free_Func)( TT_Face face, |
|
|
|
|
void* cmap ); |
|
|
|
|
|
|
|
|
|
#endif /* FT_CONFIG_OPTION_OLD_INTERNALS */ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*************************************************************************/ |
|
|
|
|
/* */ |
|
|
|
|
/* <FuncType> */ |
|
|
|
@ -657,11 +504,6 @@ FT_BEGIN_HEADER |
|
|
|
|
|
|
|
|
|
TT_Load_Any_Func load_any; |
|
|
|
|
|
|
|
|
|
#ifdef FT_CONFIG_OPTION_OLD_INTERNALS |
|
|
|
|
TT_Load_SFNT_HeaderRec_Func load_sfnt_header; |
|
|
|
|
TT_Load_Directory_Func load_directory; |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
/* these functions are called by `load_face' but they can also */ |
|
|
|
|
/* be called from external modules, if there is a need to do so */ |
|
|
|
|
TT_Load_Table_Func load_head; |
|
|
|
@ -674,12 +516,6 @@ FT_BEGIN_HEADER |
|
|
|
|
TT_Load_Table_Func load_name; |
|
|
|
|
TT_Free_Table_Func free_name; |
|
|
|
|
|
|
|
|
|
/* optional tables */ |
|
|
|
|
#ifdef FT_CONFIG_OPTION_OLD_INTERNALS |
|
|
|
|
TT_Load_Table_Func load_hdmx_stub; |
|
|
|
|
TT_Free_Table_Func free_hdmx_stub; |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
/* this field was called `load_kerning' up to version 2.1.10 */ |
|
|
|
|
TT_Load_Table_Func load_kern; |
|
|
|
|
|
|
|
|
@ -690,43 +526,12 @@ FT_BEGIN_HEADER |
|
|
|
|
/* version 2.1.10 */ |
|
|
|
|
TT_Load_Table_Func load_bhed; |
|
|
|
|
|
|
|
|
|
#ifdef FT_CONFIG_OPTION_OLD_INTERNALS |
|
|
|
|
|
|
|
|
|
/* see `ttsbit.h' */ |
|
|
|
|
TT_Set_SBit_Strike_OldFunc set_sbit_strike_stub; |
|
|
|
|
TT_Load_Table_Func load_sbits_stub; |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* The following two fields appeared in version 2.1.8, and were placed |
|
|
|
|
* between `load_sbits' and `load_sbit_image'. We support them as a |
|
|
|
|
* special exception since they are used by Xfont library within the |
|
|
|
|
* X.Org xserver, and because the probability that other rogue clients |
|
|
|
|
* use the other version 2.1.7 fields below is _extremely_ low. |
|
|
|
|
* |
|
|
|
|
* Note that this forces us to disable an interesting memory-saving |
|
|
|
|
* optimization though... |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
TT_Find_SBit_Image_Func find_sbit_image; |
|
|
|
|
TT_Load_SBit_Metrics_Func load_sbit_metrics; |
|
|
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
TT_Load_SBit_Image_Func load_sbit_image; |
|
|
|
|
|
|
|
|
|
#ifdef FT_CONFIG_OPTION_OLD_INTERNALS |
|
|
|
|
TT_Free_Table_Func free_sbits_stub; |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
/* see `ttpost.h' */ |
|
|
|
|
TT_Get_PS_Name_Func get_psname; |
|
|
|
|
TT_Free_Table_Func free_psnames; |
|
|
|
|
|
|
|
|
|
#ifdef FT_CONFIG_OPTION_OLD_INTERNALS |
|
|
|
|
TT_CharMap_Load_Func load_charmap_stub; |
|
|
|
|
TT_CharMap_Free_Func free_charmap_stub; |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
/* starting here, the structure differs from version 2.1.7 */ |
|
|
|
|
|
|
|
|
|
/* this field was introduced in version 2.1.8, named `get_psname' */ |
|
|
|
@ -755,213 +560,141 @@ FT_BEGIN_HEADER |
|
|
|
|
|
|
|
|
|
#ifndef FT_CONFIG_OPTION_PIC |
|
|
|
|
|
|
|
|
|
#ifdef FT_CONFIG_OPTION_OLD_INTERNALS |
|
|
|
|
#define FT_DEFINE_DRIVERS_OLD_INTERNAL( a ) \ |
|
|
|
|
a, |
|
|
|
|
#else |
|
|
|
|
#define FT_DEFINE_DRIVERS_OLD_INTERNAL( a ) /* empty */ |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
#define FT_INTERNAL( a ) \ |
|
|
|
|
a, |
|
|
|
|
|
|
|
|
|
#define FT_DEFINE_SFNT_INTERFACE( \ |
|
|
|
|
class_, \
|
|
|
|
|
goto_table_, \
|
|
|
|
|
init_face_, \
|
|
|
|
|
load_face_, \
|
|
|
|
|
done_face_, \
|
|
|
|
|
get_interface_, \
|
|
|
|
|
load_any_, \
|
|
|
|
|
load_sfnt_header_, \
|
|
|
|
|
load_directory_, \
|
|
|
|
|
load_head_, \
|
|
|
|
|
load_hhea_, \
|
|
|
|
|
load_cmap_, \
|
|
|
|
|
load_maxp_, \
|
|
|
|
|
load_os2_, \
|
|
|
|
|
load_post_, \
|
|
|
|
|
load_name_, \
|
|
|
|
|
free_name_, \
|
|
|
|
|
load_hdmx_stub_, \
|
|
|
|
|
free_hdmx_stub_, \
|
|
|
|
|
load_kern_, \
|
|
|
|
|
load_gasp_, \
|
|
|
|
|
load_pclt_, \
|
|
|
|
|
load_bhed_, \
|
|
|
|
|
set_sbit_strike_stub_, \
|
|
|
|
|
load_sbits_stub_, \
|
|
|
|
|
find_sbit_image_, \
|
|
|
|
|
load_sbit_metrics_, \
|
|
|
|
|
load_sbit_image_, \
|
|
|
|
|
free_sbits_stub_, \
|
|
|
|
|
get_psname_, \
|
|
|
|
|
free_psnames_, \
|
|
|
|
|
load_charmap_stub_, \
|
|
|
|
|
free_charmap_stub_, \
|
|
|
|
|
get_kerning_, \
|
|
|
|
|
load_font_dir_, \
|
|
|
|
|
load_hmtx_, \
|
|
|
|
|
load_eblc_, \
|
|
|
|
|
free_eblc_, \
|
|
|
|
|
set_sbit_strike_, \
|
|
|
|
|
load_strike_metrics_, \
|
|
|
|
|
get_metrics_ ) \
|
|
|
|
|
static const SFNT_Interface class_ = \
|
|
|
|
|
{ \
|
|
|
|
|
FT_INTERNAL( goto_table_ ) \
|
|
|
|
|
FT_INTERNAL( init_face_ ) \
|
|
|
|
|
FT_INTERNAL( load_face_ ) \
|
|
|
|
|
FT_INTERNAL( done_face_ ) \
|
|
|
|
|
FT_INTERNAL( get_interface_ ) \
|
|
|
|
|
FT_INTERNAL( load_any_ ) \
|
|
|
|
|
FT_DEFINE_DRIVERS_OLD_INTERNAL( load_sfnt_header_ ) \
|
|
|
|
|
FT_DEFINE_DRIVERS_OLD_INTERNAL( load_directory_ ) \
|
|
|
|
|
FT_INTERNAL( load_head_ ) \
|
|
|
|
|
FT_INTERNAL( load_hhea_ ) \
|
|
|
|
|
FT_INTERNAL( load_cmap_ ) \
|
|
|
|
|
FT_INTERNAL( load_maxp_ ) \
|
|
|
|
|
FT_INTERNAL( load_os2_ ) \
|
|
|
|
|
FT_INTERNAL( load_post_ ) \
|
|
|
|
|
FT_INTERNAL( load_name_ ) \
|
|
|
|
|
FT_INTERNAL( free_name_ ) \
|
|
|
|
|
FT_DEFINE_DRIVERS_OLD_INTERNAL( load_hdmx_stub_ ) \
|
|
|
|
|
FT_DEFINE_DRIVERS_OLD_INTERNAL( free_hdmx_stub_ ) \
|
|
|
|
|
FT_INTERNAL( load_kern_ ) \
|
|
|
|
|
FT_INTERNAL( load_gasp_ ) \
|
|
|
|
|
FT_INTERNAL( load_pclt_ ) \
|
|
|
|
|
FT_INTERNAL( load_bhed_ ) \
|
|
|
|
|
FT_DEFINE_DRIVERS_OLD_INTERNAL( set_sbit_strike_stub_ ) \
|
|
|
|
|
FT_DEFINE_DRIVERS_OLD_INTERNAL( load_sbits_stub_ ) \
|
|
|
|
|
FT_DEFINE_DRIVERS_OLD_INTERNAL( find_sbit_image_ ) \
|
|
|
|
|
FT_DEFINE_DRIVERS_OLD_INTERNAL( load_sbit_metrics_ ) \
|
|
|
|
|
FT_INTERNAL( load_sbit_image_ ) \
|
|
|
|
|
FT_DEFINE_DRIVERS_OLD_INTERNAL( free_sbits_stub_ ) \
|
|
|
|
|
FT_INTERNAL( get_psname_ ) \
|
|
|
|
|
FT_INTERNAL( free_psnames_ ) \
|
|
|
|
|
FT_DEFINE_DRIVERS_OLD_INTERNAL( load_charmap_stub_ ) \
|
|
|
|
|
FT_DEFINE_DRIVERS_OLD_INTERNAL( free_charmap_stub_ ) \
|
|
|
|
|
FT_INTERNAL( get_kerning_ ) \
|
|
|
|
|
FT_INTERNAL( load_font_dir_ ) \
|
|
|
|
|
FT_INTERNAL( load_hmtx_ ) \
|
|
|
|
|
FT_INTERNAL( load_eblc_ ) \
|
|
|
|
|
FT_INTERNAL( free_eblc_ ) \
|
|
|
|
|
FT_INTERNAL( set_sbit_strike_ ) \
|
|
|
|
|
FT_INTERNAL( load_strike_metrics_ ) \
|
|
|
|
|
FT_INTERNAL( get_metrics_ ) \
|
|
|
|
|
#define FT_DEFINE_SFNT_INTERFACE( \ |
|
|
|
|
class_, \
|
|
|
|
|
goto_table_, \
|
|
|
|
|
init_face_, \
|
|
|
|
|
load_face_, \
|
|
|
|
|
done_face_, \
|
|
|
|
|
get_interface_, \
|
|
|
|
|
load_any_, \
|
|
|
|
|
load_head_, \
|
|
|
|
|
load_hhea_, \
|
|
|
|
|
load_cmap_, \
|
|
|
|
|
load_maxp_, \
|
|
|
|
|
load_os2_, \
|
|
|
|
|
load_post_, \
|
|
|
|
|
load_name_, \
|
|
|
|
|
free_name_, \
|
|
|
|
|
load_kern_, \
|
|
|
|
|
load_gasp_, \
|
|
|
|
|
load_pclt_, \
|
|
|
|
|
load_bhed_, \
|
|
|
|
|
load_sbit_image_, \
|
|
|
|
|
get_psname_, \
|
|
|
|
|
free_psnames_, \
|
|
|
|
|
get_kerning_, \
|
|
|
|
|
load_font_dir_, \
|
|
|
|
|
load_hmtx_, \
|
|
|
|
|
load_eblc_, \
|
|
|
|
|
free_eblc_, \
|
|
|
|
|
set_sbit_strike_, \
|
|
|
|
|
load_strike_metrics_, \
|
|
|
|
|
get_metrics_ ) \
|
|
|
|
|
static const SFNT_Interface class_ = \
|
|
|
|
|
{ \
|
|
|
|
|
goto_table_, \
|
|
|
|
|
init_face_, \
|
|
|
|
|
load_face_, \
|
|
|
|
|
done_face_, \
|
|
|
|
|
get_interface_, \
|
|
|
|
|
load_any_, \
|
|
|
|
|
load_head_, \
|
|
|
|
|
load_hhea_, \
|
|
|
|
|
load_cmap_, \
|
|
|
|
|
load_maxp_, \
|
|
|
|
|
load_os2_, \
|
|
|
|
|
load_post_, \
|
|
|
|
|
load_name_, \
|
|
|
|
|
free_name_, \
|
|
|
|
|
load_kern_, \
|
|
|
|
|
load_gasp_, \
|
|
|
|
|
load_pclt_, \
|
|
|
|
|
load_bhed_, \
|
|
|
|
|
load_sbit_image_, \
|
|
|
|
|
get_psname_, \
|
|
|
|
|
free_psnames_, \
|
|
|
|
|
get_kerning_, \
|
|
|
|
|
load_font_dir_, \
|
|
|
|
|
load_hmtx_, \
|
|
|
|
|
load_eblc_, \
|
|
|
|
|
free_eblc_, \
|
|
|
|
|
set_sbit_strike_, \
|
|
|
|
|
load_strike_metrics_, \
|
|
|
|
|
get_metrics_, \
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
#else /* FT_CONFIG_OPTION_PIC */ |
|
|
|
|
|
|
|
|
|
#ifdef FT_CONFIG_OPTION_OLD_INTERNALS |
|
|
|
|
#define FT_DEFINE_DRIVERS_OLD_INTERNAL( a, a_ ) \ |
|
|
|
|
clazz->a = a_; |
|
|
|
|
#else |
|
|
|
|
#define FT_DEFINE_DRIVERS_OLD_INTERNAL( a, a_ ) /* empty */ |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
#define FT_INTERNAL( a, a_ ) \ |
|
|
|
|
clazz->a = a_; |
|
|
|
|
|
|
|
|
|
#define FT_DEFINE_SFNT_INTERFACE( \ |
|
|
|
|
class_, \
|
|
|
|
|
goto_table_, \
|
|
|
|
|
init_face_, \
|
|
|
|
|
load_face_, \
|
|
|
|
|
done_face_, \
|
|
|
|
|
get_interface_, \
|
|
|
|
|
load_any_, \
|
|
|
|
|
load_sfnt_header_, \
|
|
|
|
|
load_directory_, \
|
|
|
|
|
load_head_, \
|
|
|
|
|
load_hhea_, \
|
|
|
|
|
load_cmap_, \
|
|
|
|
|
load_maxp_, \
|
|
|
|
|
load_os2_, \
|
|
|
|
|
load_post_, \
|
|
|
|
|
load_name_, \
|
|
|
|
|
free_name_, \
|
|
|
|
|
load_hdmx_stub_, \
|
|
|
|
|
free_hdmx_stub_, \
|
|
|
|
|
load_kern_, \
|
|
|
|
|
load_gasp_, \
|
|
|
|
|
load_pclt_, \
|
|
|
|
|
load_bhed_, \
|
|
|
|
|
set_sbit_strike_stub_, \
|
|
|
|
|
load_sbits_stub_, \
|
|
|
|
|
find_sbit_image_, \
|
|
|
|
|
load_sbit_metrics_, \
|
|
|
|
|
load_sbit_image_, \
|
|
|
|
|
free_sbits_stub_, \
|
|
|
|
|
get_psname_, \
|
|
|
|
|
free_psnames_, \
|
|
|
|
|
load_charmap_stub_, \
|
|
|
|
|
free_charmap_stub_, \
|
|
|
|
|
get_kerning_, \
|
|
|
|
|
load_font_dir_, \
|
|
|
|
|
load_hmtx_, \
|
|
|
|
|
load_eblc_, \
|
|
|
|
|
free_eblc_, \
|
|
|
|
|
set_sbit_strike_, \
|
|
|
|
|
load_strike_metrics_, \
|
|
|
|
|
get_metrics_ ) \
|
|
|
|
|
void \
|
|
|
|
|
FT_Init_Class_ ## class_( FT_Library library, \
|
|
|
|
|
SFNT_Interface* clazz ) \
|
|
|
|
|
{ \
|
|
|
|
|
FT_UNUSED( library ); \
|
|
|
|
|
\
|
|
|
|
|
FT_INTERNAL( goto_table, goto_table_ ) \
|
|
|
|
|
FT_INTERNAL( init_face, init_face_ ) \
|
|
|
|
|
FT_INTERNAL( load_face, load_face_ ) \
|
|
|
|
|
FT_INTERNAL( done_face, done_face_ ) \
|
|
|
|
|
FT_INTERNAL( get_interface, get_interface_ ) \
|
|
|
|
|
FT_INTERNAL( load_any, load_any_ ) \
|
|
|
|
|
FT_DEFINE_DRIVERS_OLD_INTERNAL( load_sfnt_header, \
|
|
|
|
|
load_sfnt_header_ ) \
|
|
|
|
|
FT_DEFINE_DRIVERS_OLD_INTERNAL( load_directory, \
|
|
|
|
|
load_directory_ ) \
|
|
|
|
|
FT_INTERNAL( load_head, load_head_ ) \
|
|
|
|
|
FT_INTERNAL( load_hhea, load_hhea_ ) \
|
|
|
|
|
FT_INTERNAL( load_cmap, load_cmap_ ) \
|
|
|
|
|
FT_INTERNAL( load_maxp, load_maxp_ ) \
|
|
|
|
|
FT_INTERNAL( load_os2, load_os2_ ) \
|
|
|
|
|
FT_INTERNAL( load_post, load_post_ ) \
|
|
|
|
|
FT_INTERNAL( load_name, load_name_ ) \
|
|
|
|
|
FT_INTERNAL( free_name, free_name_ ) \
|
|
|
|
|
FT_DEFINE_DRIVERS_OLD_INTERNAL( load_hdmx_stub, \
|
|
|
|
|
load_hdmx_stub_ ) \
|
|
|
|
|
FT_DEFINE_DRIVERS_OLD_INTERNAL( free_hdmx_stub, \
|
|
|
|
|
free_hdmx_stub_ ) \
|
|
|
|
|
FT_INTERNAL( load_kern, load_kern_ ) \
|
|
|
|
|
FT_INTERNAL( load_gasp, load_gasp_ ) \
|
|
|
|
|
FT_INTERNAL( load_pclt, load_pclt_ ) \
|
|
|
|
|
FT_INTERNAL( load_bhed, load_bhed_ ) \
|
|
|
|
|
FT_DEFINE_DRIVERS_OLD_INTERNAL( set_sbit_strike_stub, \
|
|
|
|
|
set_sbit_strike_stub_ ) \
|
|
|
|
|
FT_DEFINE_DRIVERS_OLD_INTERNAL( load_sbits_stub, \
|
|
|
|
|
load_sbits_stub_ ) \
|
|
|
|
|
FT_DEFINE_DRIVERS_OLD_INTERNAL( find_sbit_image, \
|
|
|
|
|
find_sbit_image_ ) \
|
|
|
|
|
FT_DEFINE_DRIVERS_OLD_INTERNAL( load_sbit_metrics, \
|
|
|
|
|
load_sbit_metrics_ ) \
|
|
|
|
|
FT_INTERNAL( load_sbit_image, load_sbit_image_ ) \
|
|
|
|
|
FT_DEFINE_DRIVERS_OLD_INTERNAL( free_sbits_stub, \
|
|
|
|
|
free_sbits_stub_ ) \
|
|
|
|
|
FT_INTERNAL( get_psname, get_psname_ ) \
|
|
|
|
|
FT_INTERNAL( free_psnames, free_psnames_ ) \
|
|
|
|
|
FT_DEFINE_DRIVERS_OLD_INTERNAL( load_charmap_stub, \
|
|
|
|
|
load_charmap_stub_ ) \
|
|
|
|
|
FT_DEFINE_DRIVERS_OLD_INTERNAL( free_charmap_stub, \
|
|
|
|
|
free_charmap_stub_ ) \
|
|
|
|
|
FT_INTERNAL( get_kerning, get_kerning_ ) \
|
|
|
|
|
FT_INTERNAL( load_font_dir, load_font_dir_ ) \
|
|
|
|
|
FT_INTERNAL( load_hmtx, load_hmtx_ ) \
|
|
|
|
|
FT_INTERNAL( load_eblc, load_eblc_ ) \
|
|
|
|
|
FT_INTERNAL( free_eblc, free_eblc_ ) \
|
|
|
|
|
FT_INTERNAL( set_sbit_strike, set_sbit_strike_ ) \
|
|
|
|
|
FT_INTERNAL( load_strike_metrics, load_strike_metrics_ ) \
|
|
|
|
|
FT_INTERNAL( get_metrics, get_metrics_ ) \
|
|
|
|
|
#define FT_DEFINE_SFNT_INTERFACE( \ |
|
|
|
|
class_, \
|
|
|
|
|
goto_table_, \
|
|
|
|
|
init_face_, \
|
|
|
|
|
load_face_, \
|
|
|
|
|
done_face_, \
|
|
|
|
|
get_interface_, \
|
|
|
|
|
load_any_, \
|
|
|
|
|
load_head_, \
|
|
|
|
|
load_hhea_, \
|
|
|
|
|
load_cmap_, \
|
|
|
|
|
load_maxp_, \
|
|
|
|
|
load_os2_, \
|
|
|
|
|
load_post_, \
|
|
|
|
|
load_name_, \
|
|
|
|
|
free_name_, \
|
|
|
|
|
load_kern_, \
|
|
|
|
|
load_gasp_, \
|
|
|
|
|
load_pclt_, \
|
|
|
|
|
load_bhed_, \
|
|
|
|
|
load_sbit_image_, \
|
|
|
|
|
get_psname_, \
|
|
|
|
|
free_psnames_, \
|
|
|
|
|
get_kerning_, \
|
|
|
|
|
load_font_dir_, \
|
|
|
|
|
load_hmtx_, \
|
|
|
|
|
load_eblc_, \
|
|
|
|
|
free_eblc_, \
|
|
|
|
|
set_sbit_strike_, \
|
|
|
|
|
load_strike_metrics_, \
|
|
|
|
|
get_metrics_ ) \
|
|
|
|
|
void \
|
|
|
|
|
FT_Init_Class_ ## class_( FT_Library library, \
|
|
|
|
|
SFNT_Interface* clazz ) \
|
|
|
|
|
{ \
|
|
|
|
|
FT_UNUSED( library ); \
|
|
|
|
|
\
|
|
|
|
|
clazz->goto_table = goto_table_; \
|
|
|
|
|
clazz->init_face = init_face_; \
|
|
|
|
|
clazz->load_face = load_face_; \
|
|
|
|
|
clazz->done_face = done_face_; \
|
|
|
|
|
clazz->get_interface = get_interface_; \
|
|
|
|
|
clazz->load_any = load_any_; \
|
|
|
|
|
clazz->load_head = load_head_; \
|
|
|
|
|
clazz->load_hhea = load_hhea_; \
|
|
|
|
|
clazz->load_cmap = load_cmap_; \
|
|
|
|
|
clazz->load_maxp = load_maxp_; \
|
|
|
|
|
clazz->load_os2 = load_os2_; \
|
|
|
|
|
clazz->load_post = load_post_; \
|
|
|
|
|
clazz->load_name = load_name_; \
|
|
|
|
|
clazz->free_name = free_name_; \
|
|
|
|
|
clazz->load_kern = load_kern_; \
|
|
|
|
|
clazz->load_gasp = load_gasp_; \
|
|
|
|
|
clazz->load_pclt = load_pclt_; \
|
|
|
|
|
clazz->load_bhed = load_bhed_; \
|
|
|
|
|
clazz->load_sbit_image = load_sbit_image_; \
|
|
|
|
|
clazz->get_psname = get_psname_; \
|
|
|
|
|
clazz->free_psnames = free_psnames_; \
|
|
|
|
|
clazz->get_kerning = get_kerning_; \
|
|
|
|
|
clazz->load_font_dir = load_font_dir_; \
|
|
|
|
|
clazz->load_hmtx = load_hmtx_; \
|
|
|
|
|
clazz->load_eblc = load_eblc_; \
|
|
|
|
|
clazz->free_eblc = free_eblc_; \
|
|
|
|
|
clazz->set_sbit_strike = set_sbit_strike_; \
|
|
|
|
|
clazz->load_strike_metrics = load_strike_metrics_; \
|
|
|
|
|
clazz->get_metrics = get_metrics_; \
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#endif /* FT_CONFIG_OPTION_PIC */ |
|
|
|
|