aboutsummaryrefslogtreecommitdiff
path: root/freetype/include/freetype/internal/sfnt.h
diff options
context:
space:
mode:
Diffstat (limited to 'freetype/include/freetype/internal/sfnt.h')
-rw-r--r--freetype/include/freetype/internal/sfnt.h525
1 files changed, 129 insertions, 396 deletions
diff --git a/freetype/include/freetype/internal/sfnt.h b/freetype/include/freetype/internal/sfnt.h
index c593ed73c..b94b4dd3e 100644
--- a/freetype/include/freetype/internal/sfnt.h
+++ b/freetype/include/freetype/internal/sfnt.h
@@ -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 */