summaryrefslogtreecommitdiff
path: root/src/freetype2/freetype/internal
diff options
context:
space:
mode:
authorscuri <scuri>2009-10-20 17:20:18 +0000
committerscuri <scuri>2009-10-20 17:20:18 +0000
commit27a4f9c4ac45ff65f941964f7351b64b1e6a9f35 (patch)
tree2f68c5d9ce5bf6cbc320ac17aef0a65a3ceb99a1 /src/freetype2/freetype/internal
parent2b70507615b2611fce4294c65bec7264644e2665 (diff)
*** empty log message ***
Diffstat (limited to 'src/freetype2/freetype/internal')
-rw-r--r--src/freetype2/freetype/internal/autohint.h26
-rw-r--r--src/freetype2/freetype/internal/ftcalc.h28
-rw-r--r--src/freetype2/freetype/internal/ftdebug.h34
-rw-r--r--src/freetype2/freetype/internal/ftdriver.h194
-rw-r--r--src/freetype2/freetype/internal/ftgloadr.h24
-rw-r--r--src/freetype2/freetype/internal/ftmemory.h4
-rw-r--r--src/freetype2/freetype/internal/ftobjs.h583
-rw-r--r--src/freetype2/freetype/internal/ftpic.h67
-rw-r--r--src/freetype2/freetype/internal/ftrfork.h16
-rw-r--r--src/freetype2/freetype/internal/ftserv.h293
-rw-r--r--src/freetype2/freetype/internal/fttrace.h8
-rw-r--r--src/freetype2/freetype/internal/internal.h1
-rw-r--r--src/freetype2/freetype/internal/psaux.h30
-rw-r--r--src/freetype2/freetype/internal/pshints.h47
-rw-r--r--src/freetype2/freetype/internal/services/svbdf.h20
-rw-r--r--src/freetype2/freetype/internal/services/svcid.h83
-rw-r--r--src/freetype2/freetype/internal/services/svgldict.h22
-rw-r--r--src/freetype2/freetype/internal/services/svmm.h25
-rw-r--r--src/freetype2/freetype/internal/services/svpostnm.h21
-rw-r--r--src/freetype2/freetype/internal/services/svpscmap.h37
-rw-r--r--src/freetype2/freetype/internal/services/svpsinfo.h34
-rw-r--r--src/freetype2/freetype/internal/services/svsfnt.h22
-rw-r--r--src/freetype2/freetype/internal/services/svttcmap.h32
-rw-r--r--src/freetype2/freetype/internal/services/svttglyf.h19
-rw-r--r--src/freetype2/freetype/internal/sfnt.h135
-rw-r--r--src/freetype2/freetype/internal/t1types.h30
-rw-r--r--src/freetype2/freetype/internal/tttypes.h8
27 files changed, 1755 insertions, 88 deletions
diff --git a/src/freetype2/freetype/internal/autohint.h b/src/freetype2/freetype/internal/autohint.h
index ee00402..7e3a08a 100644
--- a/src/freetype2/freetype/internal/autohint.h
+++ b/src/freetype2/freetype/internal/autohint.h
@@ -196,6 +196,32 @@ FT_BEGIN_HEADER
} FT_AutoHinter_ServiceRec, *FT_AutoHinter_Service;
+#ifndef FT_CONFIG_OPTION_PIC
+
+#define FT_DEFINE_AUTOHINTER_SERVICE(class_, reset_face_, get_global_hints_, \
+ done_global_hints_, load_glyph_) \
+ FT_CALLBACK_TABLE_DEF \
+ const FT_AutoHinter_ServiceRec class_ = \
+ { \
+ reset_face_, get_global_hints_, done_global_hints_, load_glyph_ \
+ };
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#define FT_DEFINE_AUTOHINTER_SERVICE(class_, reset_face_, get_global_hints_, \
+ done_global_hints_, load_glyph_) \
+ void \
+ FT_Init_Class_##class_( FT_Library library, \
+ FT_AutoHinter_ServiceRec* clazz) \
+ { \
+ FT_UNUSED(library); \
+ clazz->reset_face = reset_face_; \
+ clazz->get_global_hints = get_global_hints_; \
+ clazz->done_global_hints = done_global_hints_; \
+ clazz->load_glyph = load_glyph_; \
+ }
+
+#endif /* FT_CONFIG_OPTION_PIC */
FT_END_HEADER
diff --git a/src/freetype2/freetype/internal/ftcalc.h b/src/freetype2/freetype/internal/ftcalc.h
index c7e9901..f8b4324 100644
--- a/src/freetype2/freetype/internal/ftcalc.h
+++ b/src/freetype2/freetype/internal/ftcalc.h
@@ -4,7 +4,7 @@
/* */
/* Arithmetic computations (specification). */
/* */
-/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006 by */
+/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2008, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -112,6 +112,31 @@ FT_BEGIN_HEADER
/*
+ * A variant of FT_Matrix_Multiply which scales its result afterwards.
+ * The idea is that both `a' and `b' are scaled by factors of 10 so that
+ * the values are as precise as possible to get a correct result during
+ * the 64bit multiplication. Let `sa' and `sb' be the scaling factors of
+ * `a' and `b', respectively, then the scaling factor of the result is
+ * `sa*sb'.
+ */
+ FT_BASE( void )
+ FT_Matrix_Multiply_Scaled( const FT_Matrix* a,
+ FT_Matrix *b,
+ FT_Long scaling );
+
+
+ /*
+ * A variant of FT_Vector_Transform. See comments for
+ * FT_Matrix_Multiply_Scaled.
+ */
+
+ FT_BASE( void )
+ FT_Vector_Transform_Scaled( FT_Vector* vector,
+ const FT_Matrix* matrix,
+ FT_Long scaling );
+
+
+ /*
* Return -1, 0, or +1, depending on the orientation of a given corner.
* We use the Cartesian coordinate system, with positive vertical values
* going upwards. The function returns +1 if the corner turns to the
@@ -140,6 +165,7 @@ FT_BEGIN_HEADER
#define INT_TO_FIXED( x ) ( (FT_Long)(x) << 16 )
#define F2DOT14_TO_FIXED( x ) ( (FT_Long)(x) << 2 )
#define FLOAT_TO_FIXED( x ) ( (FT_Long)( x * 65536.0 ) )
+#define FIXED_TO_INT( x ) ( FT_RoundFix( x ) >> 16 )
#define ROUND_F26DOT6( x ) ( x >= 0 ? ( ( (x) + 32 ) & -64 ) \
: ( -( ( 32 - (x) ) & -64 ) ) )
diff --git a/src/freetype2/freetype/internal/ftdebug.h b/src/freetype2/freetype/internal/ftdebug.h
index 1562714..7baae35 100644
--- a/src/freetype2/freetype/internal/ftdebug.h
+++ b/src/freetype2/freetype/internal/ftdebug.h
@@ -4,7 +4,7 @@
/* */
/* Debugging and logging component (specification). */
/* */
-/* Copyright 1996-2001, 2002, 2004, 2006, 2007 by */
+/* Copyright 1996-2001, 2002, 2004, 2006, 2007, 2008, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -54,7 +54,7 @@ FT_BEGIN_HEADER
#define FT_TRACE_DEF( x ) trace_ ## x ,
/* defining the enumeration */
- typedef enum
+ typedef enum FT_Trace_
{
#include FT_INTERNAL_TRACE_H
trace_count
@@ -92,7 +92,7 @@ FT_BEGIN_HEADER
#else /* !FT_DEBUG_LEVEL_TRACE */
-#define FT_TRACE( level, varformat ) do ; while ( 0 ) /* nothing */
+#define FT_TRACE( level, varformat ) do { } while ( 0 ) /* nothing */
#endif /* !FT_DEBUG_LEVEL_TRACE */
@@ -146,10 +146,12 @@ FT_BEGIN_HEADER
/*************************************************************************/
/* */
- /* You need two opening resp. closing parentheses! */
+ /* You need two opening and closing parentheses! */
/* */
/* Example: FT_TRACE0(( "Value is %i", foo )) */
/* */
+ /* Output of the FT_TRACEX macros is sent to stderr. */
+ /* */
/*************************************************************************/
#define FT_TRACE0( varformat ) FT_TRACE( 0, varformat )
@@ -164,7 +166,9 @@ FT_BEGIN_HEADER
/*************************************************************************/
/* */
- /* Define the FT_ERROR macro */
+ /* Define the FT_ERROR macro. */
+ /* */
+ /* Output of this macro is sent to stderr. */
/* */
/*************************************************************************/
@@ -174,14 +178,14 @@ FT_BEGIN_HEADER
#else /* !FT_DEBUG_LEVEL_ERROR */
-#define FT_ERROR( varformat ) do ; while ( 0 ) /* nothing */
+#define FT_ERROR( varformat ) do { } while ( 0 ) /* nothing */
#endif /* !FT_DEBUG_LEVEL_ERROR */
/*************************************************************************/
/* */
- /* Define the FT_ASSERT macro */
+ /* Define the FT_ASSERT macro. */
/* */
/*************************************************************************/
@@ -197,28 +201,30 @@ FT_BEGIN_HEADER
#else /* !FT_DEBUG_LEVEL_ERROR */
-#define FT_ASSERT( condition ) do ; while ( 0 )
+#define FT_ASSERT( condition ) do { } while ( 0 )
#endif /* !FT_DEBUG_LEVEL_ERROR */
/*************************************************************************/
/* */
- /* Define `FT_Message' and `FT_Panic' when needed */
+ /* Define `FT_Message' and `FT_Panic' when needed. */
/* */
/*************************************************************************/
#ifdef FT_DEBUG_LEVEL_ERROR
-#include "stdio.h" /* for vprintf() */
+#include "stdio.h" /* for vfprintf() */
/* print a message */
FT_BASE( void )
- FT_Message( const char* fmt, ... );
+ FT_Message( const char* fmt,
+ ... );
/* print a message and exit */
FT_BASE( void )
- FT_Panic( const char* fmt, ... );
+ FT_Panic( const char* fmt,
+ ... );
#endif /* FT_DEBUG_LEVEL_ERROR */
@@ -229,8 +235,8 @@ FT_BEGIN_HEADER
#if defined( _MSC_VER ) /* Visual C++ (and Intel C++) */
- /* we disable the warning `conditional expression is constant' here */
- /* in order to compile cleanly with the maximum level of warnings */
+ /* We disable the warning `conditional expression is constant' here */
+ /* in order to compile cleanly with the maximum level of warnings. */
#pragma warning( disable : 4127 )
#endif /* _MSC_VER */
diff --git a/src/freetype2/freetype/internal/ftdriver.h b/src/freetype2/freetype/internal/ftdriver.h
index 97f3fd0..1d06997 100644
--- a/src/freetype2/freetype/internal/ftdriver.h
+++ b/src/freetype2/freetype/internal/ftdriver.h
@@ -4,7 +4,7 @@
/* */
/* FreeType font driver interface (specification). */
/* */
-/* Copyright 1996-2001, 2002, 2003, 2006 by */
+/* Copyright 1996-2001, 2002, 2003, 2006, 2008 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -91,6 +91,7 @@ FT_BEGIN_HEADER
(*FT_CharMap_CharNextFunc)( FT_CharMap charmap,
FT_Long charcode );
+
typedef FT_Error
(*FT_Face_GetKerningFunc)( FT_Face face,
FT_UInt left_glyph,
@@ -104,11 +105,11 @@ FT_BEGIN_HEADER
typedef FT_Error
- (*FT_Face_GetAdvancesFunc)( FT_Face face,
- FT_UInt first,
- FT_UInt count,
- FT_Bool vertical,
- FT_UShort* advances );
+ (*FT_Face_GetAdvancesFunc)( FT_Face face,
+ FT_UInt first,
+ FT_UInt count,
+ FT_Int32 flags,
+ FT_Fixed* advances );
/*************************************************************************/
@@ -145,10 +146,6 @@ FT_BEGIN_HEADER
/* load_glyph :: A function handle to load a glyph to a slot. */
/* This field is mandatory! */
/* */
- /* get_char_index :: A function handle to return the glyph index of */
- /* a given character for a given charmap. This */
- /* field is mandatory! */
- /* */
/* get_kerning :: A function handle to return the unscaled */
/* kerning for a given pair of glyphs. Can be */
/* set to 0 if the format doesn't support */
@@ -180,8 +177,8 @@ FT_BEGIN_HEADER
/* to 0 if the scaling done in the base layer */
/* suffices. */
/* <Note> */
- /* Most function pointers, with the exception of `load_glyph' and */
- /* `get_char_index' can be set to 0 to indicate a default behaviour. */
+ /* Most function pointers, with the exception of `load_glyph', can be */
+ /* set to 0 to indicate a default behaviour. */
/* */
typedef struct FT_Driver_ClassRec_
{
@@ -243,6 +240,179 @@ FT_BEGIN_HEADER
#endif /* FT_CONFIG_OPTION_OLD_INTERNALS */
+ /*************************************************************************/
+ /* */
+ /* <Macro> */
+ /* FT_DECLARE_DRIVER */
+ /* */
+ /* <Description> */
+ /* Used to create a forward declaration of a */
+ /* FT_Driver_ClassRec stract instance. */
+ /* */
+ /* <Macro> */
+ /* FT_DEFINE_DRIVER */
+ /* */
+ /* <Description> */
+ /* Used to initialize an instance of FT_Driver_ClassRec struct. */
+ /* */
+ /* When FT_CONFIG_OPTION_PIC is defined a Create funtion will need */
+ /* to called with a pointer where the allocated stracture is returned.*/
+ /* And when it is no longer needed a Destroy function needs */
+ /* to be called to release that allocation. */
+ /* fcinit.c (ft_create_default_module_classes) already contains */
+ /* a mechanism to call these functions for the default modules */
+ /* described in ftmodule.h */
+ /* */
+ /* Notice that the created Create and Destroy functions call */
+ /* pic_init and pic_free function to allow you to manually allocate */
+ /* and initialize any additional global data, like module specific */
+ /* interface, and put them in the global pic container defined in */
+ /* ftpic.h. if you don't need them just implement the functions as */
+ /* empty to resolve the link error. */
+ /* */
+ /* When FT_CONFIG_OPTION_PIC is not defined the struct will be */
+ /* allocated in the global scope (or the scope where the macro */
+ /* is used). */
+ /* */
+#ifndef FT_CONFIG_OPTION_PIC
+
+#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
+#define FT_DEFINE_DRIVERS_OLD_INTERNALS(a_,b_) \
+ a_, b_,
+#else
+ #define FT_DEFINE_DRIVERS_OLD_INTERNALS(a_,b_)
+#endif
+
+#define FT_DECLARE_DRIVER(class_) \
+ FT_CALLBACK_TABLE \
+ const FT_Driver_ClassRec class_;
+
+#define FT_DEFINE_DRIVER(class_, \
+ flags_, size_, name_, version_, requires_, \
+ interface_, init_, done_, get_interface_, \
+ face_object_size_, size_object_size_, \
+ slot_object_size_, init_face_, done_face_, \
+ init_size_, done_size_, init_slot_, done_slot_, \
+ old_set_char_sizes_, old_set_pixel_sizes_, \
+ load_glyph_, get_kerning_, attach_file_, \
+ get_advances_, request_size_, select_size_ ) \
+ FT_CALLBACK_TABLE_DEF \
+ const FT_Driver_ClassRec class_ = \
+ { \
+ FT_DEFINE_ROOT_MODULE(flags_,size_,name_,version_,requires_,interface_, \
+ init_,done_,get_interface_) \
+ \
+ face_object_size_, \
+ size_object_size_, \
+ slot_object_size_, \
+ \
+ init_face_, \
+ done_face_, \
+ \
+ init_size_, \
+ done_size_, \
+ \
+ init_slot_, \
+ done_slot_, \
+ \
+ FT_DEFINE_DRIVERS_OLD_INTERNALS(old_set_char_sizes_, old_set_pixel_sizes_) \
+ \
+ load_glyph_, \
+ \
+ get_kerning_, \
+ attach_file_, \
+ get_advances_, \
+ \
+ request_size_, \
+ select_size_ \
+ };
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
+#define FT_DEFINE_DRIVERS_OLD_INTERNALS(a_,b_) \
+ clazz->set_char_sizes = a_; \
+ clazz->set_pixel_sizes = b_;
+#else
+ #define FT_DEFINE_DRIVERS_OLD_INTERNALS(a_,b_)
+#endif
+
+#define FT_DECLARE_DRIVER(class_) FT_DECLARE_MODULE(class_)
+
+#define FT_DEFINE_DRIVER(class_, \
+ flags_, size_, name_, version_, requires_, \
+ interface_, init_, done_, get_interface_, \
+ face_object_size_, size_object_size_, \
+ slot_object_size_, init_face_, done_face_, \
+ init_size_, done_size_, init_slot_, done_slot_, \
+ old_set_char_sizes_, old_set_pixel_sizes_, \
+ load_glyph_, get_kerning_, attach_file_, \
+ get_advances_, request_size_, select_size_ ) \
+ void class_##_pic_free( FT_Library library ); \
+ FT_Error class_##_pic_init( FT_Library library ); \
+ \
+ void \
+ FT_Destroy_Class_##class_( FT_Library library, \
+ FT_Module_Class* clazz ) \
+ { \
+ FT_Memory memory = library->memory; \
+ FT_Driver_Class dclazz = (FT_Driver_Class)clazz; \
+ class_##_pic_free( library ); \
+ if ( dclazz ) \
+ FT_FREE( dclazz ); \
+ } \
+ \
+ FT_Error \
+ FT_Create_Class_##class_( FT_Library library, \
+ FT_Module_Class** output_class ) \
+ { \
+ FT_Driver_Class clazz; \
+ FT_Error error; \
+ FT_Memory memory = library->memory; \
+ \
+ if ( FT_ALLOC( clazz, sizeof(*clazz) ) ) \
+ return error; \
+ \
+ error = class_##_pic_init( library ); \
+ if(error) \
+ { \
+ FT_FREE( clazz ); \
+ return error; \
+ } \
+ \
+ FT_DEFINE_ROOT_MODULE(flags_,size_,name_,version_,requires_,interface_, \
+ init_,done_,get_interface_) \
+ \
+ clazz->face_object_size = face_object_size_; \
+ clazz->size_object_size = size_object_size_; \
+ clazz->slot_object_size = slot_object_size_; \
+ \
+ clazz->init_face = init_face_; \
+ clazz->done_face = done_face_; \
+ \
+ clazz->init_size = init_size_; \
+ clazz->done_size = done_size_; \
+ \
+ clazz->init_slot = init_slot_; \
+ clazz->done_slot = done_slot_; \
+ \
+ FT_DEFINE_DRIVERS_OLD_INTERNALS(old_set_char_sizes_, old_set_pixel_sizes_) \
+ \
+ clazz->load_glyph = load_glyph_; \
+ \
+ clazz->get_kerning = get_kerning_; \
+ clazz->attach_file = attach_file_; \
+ clazz->get_advances = get_advances_; \
+ \
+ clazz->request_size = request_size_; \
+ clazz->select_size = select_size_; \
+ \
+ *output_class = (FT_Module_Class*)clazz; \
+ return FT_Err_Ok; \
+ }
+
+
+#endif /* FT_CONFIG_OPTION_PIC */
FT_END_HEADER
diff --git a/src/freetype2/freetype/internal/ftgloadr.h b/src/freetype2/freetype/internal/ftgloadr.h
index 9f47c0b..ce4dc6c 100644
--- a/src/freetype2/freetype/internal/ftgloadr.h
+++ b/src/freetype2/freetype/internal/ftgloadr.h
@@ -67,11 +67,11 @@ FT_BEGIN_HEADER
typedef struct FT_GlyphLoadRec_
{
- FT_Outline outline; /* outline */
- FT_Vector* extra_points; /* extra points table */
+ FT_Outline outline; /* outline */
+ FT_Vector* extra_points; /* extra points table */
FT_Vector* extra_points2; /* second extra points table */
- FT_UInt num_subglyphs; /* number of subglyphs */
- FT_SubGlyph subglyphs; /* subglyphs */
+ FT_UInt num_subglyphs; /* number of subglyphs */
+ FT_SubGlyph subglyphs; /* subglyphs */
} FT_GlyphLoadRec, *FT_GlyphLoad;
@@ -121,15 +121,15 @@ FT_BEGIN_HEADER
FT_UInt n_contours );
-#define FT_GLYPHLOADER_CHECK_P( _loader, _count ) \
- ( (_count) == 0 || (int)((_loader)->base.outline.n_points + \
- (_loader)->current.outline.n_points + \
- (_count)) <= (int)(_loader)->max_points )
+#define FT_GLYPHLOADER_CHECK_P( _loader, _count ) \
+ ( (_count) == 0 || ((_loader)->base.outline.n_points + \
+ (_loader)->current.outline.n_points + \
+ (unsigned long)(_count)) <= (_loader)->max_points )
-#define FT_GLYPHLOADER_CHECK_C( _loader, _count ) \
- ( (_count) == 0 || (int)((_loader)->base.outline.n_contours + \
- (_loader)->current.outline.n_contours + \
- (_count)) <= (int)(_loader)->max_contours )
+#define FT_GLYPHLOADER_CHECK_C( _loader, _count ) \
+ ( (_count) == 0 || ((_loader)->base.outline.n_contours + \
+ (_loader)->current.outline.n_contours + \
+ (unsigned long)(_count)) <= (_loader)->max_contours )
#define FT_GLYPHLOADER_CHECK_POINTS( _loader, _points,_contours ) \
( ( FT_GLYPHLOADER_CHECK_P( _loader, _points ) && \
diff --git a/src/freetype2/freetype/internal/ftmemory.h b/src/freetype2/freetype/internal/ftmemory.h
index c6ddc42..2010ca9 100644
--- a/src/freetype2/freetype/internal/ftmemory.h
+++ b/src/freetype2/freetype/internal/ftmemory.h
@@ -333,8 +333,8 @@ FT_BEGIN_HEADER
FT_ULong size,
FT_Error *p_error );
-#define FT_MEM_STRDUP( dst, str ) \
- (dst) = ft_mem_strdup( memory, (const char*)(str), &error )
+#define FT_MEM_STRDUP( dst, str ) \
+ (dst) = (char*)ft_mem_strdup( memory, (const char*)(str), &error )
#define FT_STRDUP( dst, str ) \
FT_MEM_SET_ERROR( FT_MEM_STRDUP( dst, str ) )
diff --git a/src/freetype2/freetype/internal/ftobjs.h b/src/freetype2/freetype/internal/ftobjs.h
index 15b68d6..574cf58 100644
--- a/src/freetype2/freetype/internal/ftobjs.h
+++ b/src/freetype2/freetype/internal/ftobjs.h
@@ -4,7 +4,7 @@
/* */
/* The FreeType private base classes (specification). */
/* */
-/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006 by */
+/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2008 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -35,6 +35,7 @@
#include FT_INTERNAL_DRIVER_H
#include FT_INTERNAL_AUTOHINT_H
#include FT_INTERNAL_SERVICE_H
+#include FT_INTERNAL_PIC_H
#ifdef FT_CONFIG_OPTION_INCREMENTAL
#include FT_INCREMENTAL_H
@@ -160,6 +161,31 @@ FT_BEGIN_HEADER
(*FT_CMap_CharNextFunc)( FT_CMap cmap,
FT_UInt32 *achar_code );
+ typedef FT_UInt
+ (*FT_CMap_CharVarIndexFunc)( FT_CMap cmap,
+ FT_CMap unicode_cmap,
+ FT_UInt32 char_code,
+ FT_UInt32 variant_selector );
+
+ typedef FT_Bool
+ (*FT_CMap_CharVarIsDefaultFunc)( FT_CMap cmap,
+ FT_UInt32 char_code,
+ FT_UInt32 variant_selector );
+
+ typedef FT_UInt32 *
+ (*FT_CMap_VariantListFunc)( FT_CMap cmap,
+ FT_Memory mem );
+
+ typedef FT_UInt32 *
+ (*FT_CMap_CharVariantListFunc)( FT_CMap cmap,
+ FT_Memory mem,
+ FT_UInt32 char_code );
+
+ typedef FT_UInt32 *
+ (*FT_CMap_VariantCharListFunc)( FT_CMap cmap,
+ FT_Memory mem,
+ FT_UInt32 variant_selector );
+
typedef struct FT_CMap_ClassRec_
{
@@ -169,8 +195,56 @@ FT_BEGIN_HEADER
FT_CMap_CharIndexFunc char_index;
FT_CMap_CharNextFunc char_next;
+ /* Subsequent entries are special ones for format 14 -- the variant */
+ /* selector subtable which behaves like no other */
+
+ FT_CMap_CharVarIndexFunc char_var_index;
+ FT_CMap_CharVarIsDefaultFunc char_var_default;
+ FT_CMap_VariantListFunc variant_list;
+ FT_CMap_CharVariantListFunc charvariant_list;
+ FT_CMap_VariantCharListFunc variantchar_list;
+
} FT_CMap_ClassRec;
+#ifndef FT_CONFIG_OPTION_PIC
+
+#define FT_DECLARE_CMAP_CLASS(class_) \
+ FT_CALLBACK_TABLE const FT_CMap_ClassRec class_;
+
+#define FT_DEFINE_CMAP_CLASS(class_, size_, init_, done_, char_index_, \
+ char_next_, char_var_index_, char_var_default_, variant_list_, \
+ charvariant_list_, variantchar_list_) \
+ FT_CALLBACK_TABLE_DEF \
+ const FT_CMap_ClassRec class_ = \
+ { \
+ size_, init_, done_, char_index_, char_next_, char_var_index_, \
+ char_var_default_, variant_list_, charvariant_list_, variantchar_list_ \
+ };
+#else /* FT_CONFIG_OPTION_PIC */
+
+#define FT_DECLARE_CMAP_CLASS(class_) \
+ void FT_Init_Class_##class_( FT_Library library, FT_CMap_ClassRec* clazz);
+
+#define FT_DEFINE_CMAP_CLASS(class_, size_, init_, done_, char_index_, \
+ char_next_, char_var_index_, char_var_default_, variant_list_, \
+ charvariant_list_, variantchar_list_) \
+ void \
+ FT_Init_Class_##class_( FT_Library library, \
+ FT_CMap_ClassRec* clazz) \
+ { \
+ FT_UNUSED(library); \
+ clazz->size = size_; \
+ clazz->init = init_; \
+ clazz->done = done_; \
+ clazz->char_index = char_index_; \
+ clazz->char_next = char_next_; \
+ clazz->char_var_index = char_var_index_; \
+ clazz->char_var_default = char_var_default_; \
+ clazz->variant_list = variant_list_; \
+ clazz->charvariant_list = charvariant_list_; \
+ clazz->variantchar_list = variantchar_list_; \
+ }
+#endif /* FT_CONFIG_OPTION_PIC */
/* create a new charmap and add it to charmap->face */
FT_BASE( FT_Error )
@@ -306,7 +380,28 @@ FT_BEGIN_HEADER
} FT_GlyphSlot_InternalRec;
+#if 0
+
+ /*************************************************************************/
+ /* */
+ /* <Struct> */
+ /* FT_Size_InternalRec */
+ /* */
+ /* <Description> */
+ /* This structure contains the internal fields of each FT_Size */
+ /* object. Currently, it's empty. */
+ /* */
/*************************************************************************/
+
+ typedef struct FT_Size_InternalRec_
+ {
+ /* empty */
+
+ } FT_Size_InternalRec;
+
+#endif
+
+
/*************************************************************************/
/*************************************************************************/
/**** ****/
@@ -710,6 +805,10 @@ FT_BEGIN_HEADER
/* */
/* debug_hooks :: XXX */
/* */
+ /* pic_container :: Contains global structs and tables, instead */
+ /* of defining them globallly. */
+ /* */
+
typedef struct FT_LibraryRec_
{
FT_Memory memory; /* library's memory manager */
@@ -740,6 +839,10 @@ FT_BEGIN_HEADER
FT_Bitmap_LcdFilterFunc lcd_filter_func; /* filtering callback */
#endif
+#ifdef FT_CONFIG_OPTION_PIC
+ FT_PIC_Container pic_container;
+#endif
+
} FT_LibraryRec;
@@ -811,6 +914,484 @@ FT_BEGIN_HEADER
FT_EXPORT_VAR( FT_Raster_Funcs ) ft_default_raster;
#endif
+ /*************************************************************************/
+ /*************************************************************************/
+ /*************************************************************************/
+ /**** ****/
+ /**** ****/
+ /**** PIC-Support Macros for ftimage.h ****/
+ /**** ****/
+ /**** ****/
+ /*************************************************************************/
+ /*************************************************************************/
+ /*************************************************************************/
+
+
+ /*************************************************************************/
+ /* */
+ /* <Macro> */
+ /* FT_DEFINE_OUTLINE_FUNCS */
+ /* */
+ /* <Description> */
+ /* Used to initialize an instance of FT_Outline_Funcs struct. */
+ /* When FT_CONFIG_OPTION_PIC is defined an init funtion will need to */
+ /* called with a pre-allocated stracture to be filled. */
+ /* When FT_CONFIG_OPTION_PIC is not defined the struct will be */
+ /* allocated in the global scope (or the scope where the macro */
+ /* is used). */
+ /* */
+#ifndef FT_CONFIG_OPTION_PIC
+
+#define FT_DEFINE_OUTLINE_FUNCS(class_, move_to_, line_to_, conic_to_, \
+ cubic_to_, shift_, delta_) \
+ static const FT_Outline_Funcs class_ = \
+ { \
+ move_to_, line_to_, conic_to_, cubic_to_, shift_, delta_ \
+ };
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#define FT_DEFINE_OUTLINE_FUNCS(class_, move_to_, line_to_, conic_to_, \
+ cubic_to_, shift_, delta_) \
+ static FT_Error \
+ Init_Class_##class_( FT_Outline_Funcs* clazz ) \
+ { \
+ clazz->move_to = move_to_; \
+ clazz->line_to = line_to_; \
+ clazz->conic_to = conic_to_; \
+ clazz->cubic_to = cubic_to_; \
+ clazz->shift = shift_; \
+ clazz->delta = delta_; \
+ return FT_Err_Ok; \
+ }
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
+ /*************************************************************************/
+ /* */
+ /* <Macro> */
+ /* FT_DEFINE_RASTER_FUNCS */
+ /* */
+ /* <Description> */
+ /* Used to initialize an instance of FT_Raster_Funcs struct. */
+ /* When FT_CONFIG_OPTION_PIC is defined an init funtion will need to */
+ /* called with a pre-allocated stracture to be filled. */
+ /* When FT_CONFIG_OPTION_PIC is not defined the struct will be */
+ /* allocated in the global scope (or the scope where the macro */
+ /* is used). */
+ /* */
+#ifndef FT_CONFIG_OPTION_PIC
+
+#define FT_DEFINE_RASTER_FUNCS(class_, glyph_format_, raster_new_, \
+ raster_reset_, raster_set_mode_, \
+ raster_render_, raster_done_) \
+ const FT_Raster_Funcs class_ = \
+ { \
+ glyph_format_, raster_new_, raster_reset_, \
+ raster_set_mode_, raster_render_, raster_done_ \
+ };
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#define FT_DEFINE_RASTER_FUNCS(class_, glyph_format_, raster_new_, \
+ raster_reset_, raster_set_mode_, raster_render_, raster_done_) \
+ void \
+ FT_Init_Class_##class_( FT_Raster_Funcs* clazz ) \
+ { \
+ clazz->glyph_format = glyph_format_; \
+ clazz->raster_new = raster_new_; \
+ clazz->raster_reset = raster_reset_; \
+ clazz->raster_set_mode = raster_set_mode_; \
+ clazz->raster_render = raster_render_; \
+ clazz->raster_done = raster_done_; \
+ }
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
+ /*************************************************************************/
+ /*************************************************************************/
+ /*************************************************************************/
+ /**** ****/
+ /**** ****/
+ /**** PIC-Support Macros for ftrender.h ****/
+ /**** ****/
+ /**** ****/
+ /*************************************************************************/
+ /*************************************************************************/
+ /*************************************************************************/
+
+
+
+ /*************************************************************************/
+ /* */
+ /* <Macro> */
+ /* FT_DEFINE_GLYPH */
+ /* */
+ /* <Description> */
+ /* Used to initialize an instance of FT_Glyph_Class struct. */
+ /* When FT_CONFIG_OPTION_PIC is defined an init funtion will need to */
+ /* called with a pre-allocated stracture to be filled. */
+ /* When FT_CONFIG_OPTION_PIC is not defined the struct will be */
+ /* allocated in the global scope (or the scope where the macro */
+ /* is used). */
+ /* */
+#ifndef FT_CONFIG_OPTION_PIC
+
+#define FT_DEFINE_GLYPH(class_, size_, format_, init_, done_, copy_, \
+ transform_, bbox_, prepare_) \
+ FT_CALLBACK_TABLE_DEF \
+ const FT_Glyph_Class class_ = \
+ { \
+ size_, format_, init_, done_, copy_, transform_, bbox_, prepare_ \
+ };
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#define FT_DEFINE_GLYPH(class_, size_, format_, init_, done_, copy_, \
+ transform_, bbox_, prepare_) \
+ void \
+ FT_Init_Class_##class_( FT_Glyph_Class* clazz ) \
+ { \
+ clazz->glyph_size = size_; \
+ clazz->glyph_format = format_; \
+ clazz->glyph_init = init_; \
+ clazz->glyph_done = done_; \
+ clazz->glyph_copy = copy_; \
+ clazz->glyph_transform = transform_; \
+ clazz->glyph_bbox = bbox_; \
+ clazz->glyph_prepare = prepare_; \
+ }
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
+ /*************************************************************************/
+ /* */
+ /* <Macro> */
+ /* FT_DECLARE_RENDERER */
+ /* */
+ /* <Description> */
+ /* Used to create a forward declaration of a */
+ /* FT_Renderer_Class stract instance. */
+ /* */
+ /* <Macro> */
+ /* FT_DEFINE_RENDERER */
+ /* */
+ /* <Description> */
+ /* Used to initialize an instance of FT_Renderer_Class struct. */
+ /* */
+ /* When FT_CONFIG_OPTION_PIC is defined a Create funtion will need */
+ /* to called with a pointer where the allocated stracture is returned.*/
+ /* And when it is no longer needed a Destroy function needs */
+ /* to be called to release that allocation. */
+ /* fcinit.c (ft_create_default_module_classes) already contains */
+ /* a mechanism to call these functions for the default modules */
+ /* described in ftmodule.h */
+ /* */
+ /* Notice that the created Create and Destroy functions call */
+ /* pic_init and pic_free function to allow you to manually allocate */
+ /* and initialize any additional global data, like module specific */
+ /* interface, and put them in the global pic container defined in */
+ /* ftpic.h. if you don't need them just implement the functions as */
+ /* empty to resolve the link error. */
+ /* */
+ /* When FT_CONFIG_OPTION_PIC is not defined the struct will be */
+ /* allocated in the global scope (or the scope where the macro */
+ /* is used). */
+ /* */
+#ifndef FT_CONFIG_OPTION_PIC
+
+#define FT_DECLARE_RENDERER(class_) \
+ FT_EXPORT_VAR( const FT_Renderer_Class ) class_;
+
+#define FT_DEFINE_RENDERER(class_, \
+ flags_, size_, name_, version_, requires_, \
+ interface_, init_, done_, get_interface_, \
+ glyph_format_, render_glyph_, transform_glyph_, \
+ get_glyph_cbox_, set_mode_, raster_class_ ) \
+ FT_CALLBACK_TABLE_DEF \
+ const FT_Renderer_Class class_ = \
+ { \
+ FT_DEFINE_ROOT_MODULE(flags_,size_,name_,version_,requires_, \
+ interface_,init_,done_,get_interface_) \
+ glyph_format_, \
+ \
+ render_glyph_, \
+ transform_glyph_, \
+ get_glyph_cbox_, \
+ set_mode_, \
+ \
+ raster_class_ \
+ };
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#define FT_DECLARE_RENDERER(class_) FT_DECLARE_MODULE(class_)
+
+#define FT_DEFINE_RENDERER(class_, \
+ flags_, size_, name_, version_, requires_, \
+ interface_, init_, done_, get_interface_, \
+ glyph_format_, render_glyph_, transform_glyph_, \
+ get_glyph_cbox_, set_mode_, raster_class_ ) \
+ void class_##_pic_free( FT_Library library ); \
+ FT_Error class_##_pic_init( FT_Library library ); \
+ \
+ void \
+ FT_Destroy_Class_##class_( FT_Library library, \
+ FT_Module_Class* clazz ) \
+ { \
+ FT_Renderer_Class* rclazz = (FT_Renderer_Class*)clazz; \
+ FT_Memory memory = library->memory; \
+ class_##_pic_free( library ); \
+ if ( rclazz ) \
+ FT_FREE( rclazz ); \
+ } \
+ \
+ FT_Error \
+ FT_Create_Class_##class_( FT_Library library, \
+ FT_Module_Class** output_class ) \
+ { \
+ FT_Renderer_Class* clazz; \
+ FT_Error error; \
+ FT_Memory memory = library->memory; \
+ \
+ if ( FT_ALLOC( clazz, sizeof(*clazz) ) ) \
+ return error; \
+ \
+ error = class_##_pic_init( library ); \
+ if(error) \
+ { \
+ FT_FREE( clazz ); \
+ return error; \
+ } \
+ \
+ FT_DEFINE_ROOT_MODULE(flags_,size_,name_,version_,requires_, \
+ interface_,init_,done_,get_interface_) \
+ \
+ clazz->glyph_format = glyph_format_; \
+ \
+ clazz->render_glyph = render_glyph_; \
+ clazz->transform_glyph = transform_glyph_; \
+ clazz->get_glyph_cbox = get_glyph_cbox_; \
+ clazz->set_mode = set_mode_; \
+ \
+ clazz->raster_class = raster_class_; \
+ \
+ *output_class = (FT_Module_Class*)clazz; \
+ return FT_Err_Ok; \
+ }
+
+
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
+ /*************************************************************************/
+ /*************************************************************************/
+ /*************************************************************************/
+ /**** ****/
+ /**** ****/
+ /**** PIC-Support Macros for ftmodapi.h ****/
+ /**** ****/
+ /**** ****/
+ /*************************************************************************/
+ /*************************************************************************/
+ /*************************************************************************/
+
+
+#ifdef FT_CONFIG_OPTION_PIC
+
+ /*************************************************************************/
+ /* */
+ /* <FuncType> */
+ /* FT_Module_Creator */
+ /* */
+ /* <Description> */
+ /* A function used to create (allocate) a new module class object. */
+ /* The object's members are initialized, but the module itself is */
+ /* not. */
+ /* */
+ /* <Input> */
+ /* memory :: A handle to the memory manager. */
+ /* output_class :: Initialized with the newly allocated class. */
+ /* */
+ typedef FT_Error
+ (*FT_Module_Creator)( FT_Memory memory,
+ FT_Module_Class** output_class );
+
+ /*************************************************************************/
+ /* */
+ /* <FuncType> */
+ /* FT_Module_Destroyer */
+ /* */
+ /* <Description> */
+ /* A function used to destroy (deallocate) a module class object. */
+ /* */
+ /* <Input> */
+ /* memory :: A handle to the memory manager. */
+ /* clazz :: Module class to destroy. */
+ /* */
+ typedef void
+ (*FT_Module_Destroyer)( FT_Memory memory,
+ FT_Module_Class* clazz );
+
+#endif
+
+ /*************************************************************************/
+ /* */
+ /* <Macro> */
+ /* FT_DECLARE_MODULE */
+ /* */
+ /* <Description> */
+ /* Used to create a forward declaration of a */
+ /* FT_Module_Class stract instance. */
+ /* */
+ /* <Macro> */
+ /* FT_DEFINE_MODULE */
+ /* */
+ /* <Description> */
+ /* Used to initialize an instance of FT_Module_Class struct. */
+ /* */
+ /* When FT_CONFIG_OPTION_PIC is defined a Create funtion will need */
+ /* to called with a pointer where the allocated stracture is returned.*/
+ /* And when it is no longer needed a Destroy function needs */
+ /* to be called to release that allocation. */
+ /* fcinit.c (ft_create_default_module_classes) already contains */
+ /* a mechanism to call these functions for the default modules */
+ /* described in ftmodule.h */
+ /* */
+ /* Notice that the created Create and Destroy functions call */
+ /* pic_init and pic_free function to allow you to manually allocate */
+ /* and initialize any additional global data, like module specific */
+ /* interface, and put them in the global pic container defined in */
+ /* ftpic.h. if you don't need them just implement the functions as */
+ /* empty to resolve the link error. */
+ /* */
+ /* When FT_CONFIG_OPTION_PIC is not defined the struct will be */
+ /* allocated in the global scope (or the scope where the macro */
+ /* is used). */
+ /* */
+ /* <Macro> */
+ /* FT_DEFINE_ROOT_MODULE */
+ /* */
+ /* <Description> */
+ /* Used to initialize an instance of FT_Module_Class struct inside */
+ /* another stract that contains it or in a function that initializes */
+ /* that containing stract */
+ /* */
+#ifndef FT_CONFIG_OPTION_PIC
+
+#define FT_DECLARE_MODULE(class_) \
+ FT_CALLBACK_TABLE \
+ const FT_Module_Class class_; \
+
+#define FT_DEFINE_ROOT_MODULE(flags_, size_, name_, version_, requires_, \
+ interface_, init_, done_, get_interface_) \
+ { \
+ flags_, \
+ size_, \
+ \
+ name_, \
+ version_, \
+ requires_, \
+ \
+ interface_, \
+ \
+ init_, \
+ done_, \
+ get_interface_, \
+ },
+
+#define FT_DEFINE_MODULE(class_, flags_, size_, name_, version_, requires_, \
+ interface_, init_, done_, get_interface_) \
+ FT_CALLBACK_TABLE_DEF \
+ const FT_Module_Class class_ = \
+ { \
+ flags_, \
+ size_, \
+ \
+ name_, \
+ version_, \
+ requires_, \
+ \
+ interface_, \
+ \
+ init_, \
+ done_, \
+ get_interface_, \
+ };
+
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#define FT_DECLARE_MODULE(class_) \
+ FT_Error FT_Create_Class_##class_( FT_Library library, \
+ FT_Module_Class** output_class ); \
+ void FT_Destroy_Class_##class_( FT_Library library, \
+ FT_Module_Class* clazz );
+
+#define FT_DEFINE_ROOT_MODULE(flags_, size_, name_, version_, requires_, \
+ interface_, init_, done_, get_interface_) \
+ clazz->root.module_flags = flags_; \
+ clazz->root.module_size = size_; \
+ clazz->root.module_name = name_; \
+ clazz->root.module_version = version_; \
+ clazz->root.module_requires = requires_; \
+ \
+ clazz->root.module_interface = interface_; \
+ \
+ clazz->root.module_init = init_; \
+ clazz->root.module_done = done_; \
+ clazz->root.get_interface = get_interface_;
+
+#define FT_DEFINE_MODULE(class_, flags_, size_, name_, version_, requires_, \
+ interface_, init_, done_, get_interface_) \
+ void class_##_pic_free( FT_Library library ); \
+ FT_Error class_##_pic_init( FT_Library library ); \
+ \
+ void \
+ FT_Destroy_Class_##class_( FT_Library library, \
+ FT_Module_Class* clazz ) \
+ { \
+ FT_Memory memory = library->memory; \
+ class_##_pic_free( library ); \
+ if ( clazz ) \
+ FT_FREE( clazz ); \
+ } \
+ \
+ FT_Error \
+ FT_Create_Class_##class_( FT_Library library, \
+ FT_Module_Class** output_class ) \
+ { \
+ FT_Memory memory = library->memory; \
+ FT_Module_Class* clazz; \
+ FT_Error error; \
+ \
+ if ( FT_ALLOC( clazz, sizeof(*clazz) ) ) \
+ return error; \
+ error = class_##_pic_init( library ); \
+ if(error) \
+ { \
+ FT_FREE( clazz ); \
+ return error; \
+ } \
+ \
+ clazz->module_flags = flags_; \
+ clazz->module_size = size_; \
+ clazz->module_name = name_; \
+ clazz->module_version = version_; \
+ clazz->module_requires = requires_; \
+ \
+ clazz->module_interface = interface_; \
+ \
+ clazz->module_init = init_; \
+ clazz->module_done = done_; \
+ clazz->get_interface = get_interface_; \
+ \
+ *output_class = clazz; \
+ return FT_Err_Ok; \
+ }
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
FT_END_HEADER
diff --git a/src/freetype2/freetype/internal/ftpic.h b/src/freetype2/freetype/internal/ftpic.h
new file mode 100644
index 0000000..1b31957
--- /dev/null
+++ b/src/freetype2/freetype/internal/ftpic.h
@@ -0,0 +1,67 @@
+/***************************************************************************/
+/* */
+/* ftpic.h */
+/* */
+/* The FreeType position independent code services (declaration). */
+/* */
+/* Copyright 2009 by */
+/* Oran Agra and Mickey Gabel. */
+/* */
+/* 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. */
+/* */
+/***************************************************************************/
+
+ /*************************************************************************/
+ /* */
+ /* Modules that ordinarily have const global data that need address */
+ /* can instead define pointers here. */
+ /* */
+ /*************************************************************************/
+
+
+#ifndef __FTPIC_H__
+#define __FTPIC_H__
+
+
+FT_BEGIN_HEADER
+
+#ifdef FT_CONFIG_OPTION_PIC
+
+ typedef struct FT_PIC_Container_
+ {
+ /* pic containers for base */
+ void* base;
+ /* pic containers for modules */
+ void* autofit;
+ void* cff;
+ void* pshinter;
+ void* psnames;
+ void* raster;
+ void* sfnt;
+ void* smooth;
+ void* truetype;
+ } FT_PIC_Container;
+
+ /* Initialize the various function tables, structs, etc. stored in the container. */
+ FT_BASE( FT_Error )
+ ft_pic_container_init( FT_Library library );
+
+
+ /* Destroy the contents of the container. */
+ FT_BASE( void )
+ ft_pic_container_destroy( FT_Library library );
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
+ /* */
+
+FT_END_HEADER
+
+#endif /* __FTPIC_H__ */
+
+
+/* END */
diff --git a/src/freetype2/freetype/internal/ftrfork.h b/src/freetype2/freetype/internal/ftrfork.h
index 94402bc..aa573c8 100644
--- a/src/freetype2/freetype/internal/ftrfork.h
+++ b/src/freetype2/freetype/internal/ftrfork.h
@@ -4,7 +4,7 @@
/* */
/* Embedded resource forks accessor (specification). */
/* */
-/* Copyright 2004, 2006 by */
+/* Copyright 2004, 2006, 2007 by */
/* Masatake YAMATO and Redhat K.K. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -34,7 +34,19 @@ FT_BEGIN_HEADER
/* Number of guessing rules supported in `FT_Raccess_Guess'. */
/* Don't forget to increment the number if you add a new guessing rule. */
-#define FT_RACCESS_N_RULES 8
+#define FT_RACCESS_N_RULES 9
+
+
+ /* A structure to describe a reference in a resource by its resource ID */
+ /* and internal offset. The `POST' resource expects to be concatenated */
+ /* by the order of resource IDs instead of its appearance in the file. */
+
+ typedef struct FT_RFork_Ref_
+ {
+ FT_UShort res_id;
+ FT_ULong offset;
+
+ } FT_RFork_Ref;
/*************************************************************************/
diff --git a/src/freetype2/freetype/internal/ftserv.h b/src/freetype2/freetype/internal/ftserv.h
index 45d2fa9..569b9f7 100644
--- a/src/freetype2/freetype/internal/ftserv.h
+++ b/src/freetype2/freetype/internal/ftserv.h
@@ -163,6 +163,298 @@ FT_BEGIN_HEADER
typedef const FT_ServiceDescRec* FT_ServiceDesc;
+ /*************************************************************************/
+ /* */
+ /* <Macro> */
+ /* FT_DEFINE_SERVICEDESCREC1 .. FT_DEFINE_SERVICEDESCREC6 */
+ /* */
+ /* <Description> */
+ /* Used to initialize an array of FT_ServiceDescRec structs. */
+ /* */
+ /* When FT_CONFIG_OPTION_PIC is defined a Create funtion will need */
+ /* to called with a pointer where the allocated array is returned. */
+ /* And when it is no longer needed a Destroy function needs */
+ /* to be called to release that allocation. */
+ /* */
+ /* These functions should be manyally called from the pic_init and */
+ /* pic_free functions of your module (see FT_DEFINE_MODULE) */
+ /* */
+ /* When FT_CONFIG_OPTION_PIC is not defined the array will be */
+ /* allocated in the global scope (or the scope where the macro */
+ /* is used). */
+ /* */
+#ifndef FT_CONFIG_OPTION_PIC
+
+#define FT_DEFINE_SERVICEDESCREC1(class_, serv_id_1, serv_data_1) \
+ static const FT_ServiceDescRec class_[] = \
+ { \
+ {serv_id_1, serv_data_1}, \
+ {NULL, NULL} \
+ };
+#define FT_DEFINE_SERVICEDESCREC2(class_, serv_id_1, serv_data_1, \
+ serv_id_2, serv_data_2) \
+ static const FT_ServiceDescRec class_[] = \
+ { \
+ {serv_id_1, serv_data_1}, \
+ {serv_id_2, serv_data_2}, \
+ {NULL, NULL} \
+ };
+#define FT_DEFINE_SERVICEDESCREC3(class_, serv_id_1, serv_data_1, \
+ serv_id_2, serv_data_2, serv_id_3, serv_data_3) \
+ static const FT_ServiceDescRec class_[] = \
+ { \
+ {serv_id_1, serv_data_1}, \
+ {serv_id_2, serv_data_2}, \
+ {serv_id_3, serv_data_3}, \
+ {NULL, NULL} \
+ };
+#define FT_DEFINE_SERVICEDESCREC4(class_, serv_id_1, serv_data_1, \
+ serv_id_2, serv_data_2, serv_id_3, serv_data_3, \
+ serv_id_4, serv_data_4) \
+ static const FT_ServiceDescRec class_[] = \
+ { \
+ {serv_id_1, serv_data_1}, \
+ {serv_id_2, serv_data_2}, \
+ {serv_id_3, serv_data_3}, \
+ {serv_id_4, serv_data_4}, \
+ {NULL, NULL} \
+ };
+#define FT_DEFINE_SERVICEDESCREC5(class_, serv_id_1, serv_data_1, \
+ serv_id_2, serv_data_2, serv_id_3, serv_data_3, \
+ serv_id_4, serv_data_4, serv_id_5, serv_data_5) \
+ static const FT_ServiceDescRec class_[] = \
+ { \
+ {serv_id_1, serv_data_1}, \
+ {serv_id_2, serv_data_2}, \
+ {serv_id_3, serv_data_3}, \
+ {serv_id_4, serv_data_4}, \
+ {serv_id_5, serv_data_5}, \
+ {NULL, NULL} \
+ };
+#define FT_DEFINE_SERVICEDESCREC6(class_, serv_id_1, serv_data_1, \
+ serv_id_2, serv_data_2, serv_id_3, serv_data_3, \
+ serv_id_4, serv_data_4, serv_id_5, serv_data_5, \
+ serv_id_6, serv_data_6) \
+ static const FT_ServiceDescRec class_[] = \
+ { \
+ {serv_id_1, serv_data_1}, \
+ {serv_id_2, serv_data_2}, \
+ {serv_id_3, serv_data_3}, \
+ {serv_id_4, serv_data_4}, \
+ {serv_id_5, serv_data_5}, \
+ {serv_id_6, serv_data_6}, \
+ {NULL, NULL} \
+ };
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#define FT_DEFINE_SERVICEDESCREC1(class_, serv_id_1, serv_data_1) \
+ void \
+ FT_Destroy_Class_##class_( FT_Library library, \
+ FT_ServiceDescRec* clazz ) \
+ { \
+ FT_Memory memory = library->memory; \
+ if ( clazz ) \
+ FT_FREE( clazz ); \
+ } \
+ \
+ FT_Error \
+ FT_Create_Class_##class_( FT_Library library, \
+ FT_ServiceDescRec** output_class) \
+ { \
+ FT_ServiceDescRec* clazz; \
+ FT_Error error; \
+ FT_Memory memory = library->memory; \
+ \
+ if ( FT_ALLOC( clazz, sizeof(*clazz)*2 ) ) \
+ return error; \
+ clazz[0].serv_id = serv_id_1; \
+ clazz[0].serv_data = serv_data_1; \
+ clazz[1].serv_id = NULL; \
+ clazz[1].serv_data = NULL; \
+ *output_class = clazz; \
+ return FT_Err_Ok; \
+ }
+
+#define FT_DEFINE_SERVICEDESCREC2(class_, serv_id_1, serv_data_1, \
+ serv_id_2, serv_data_2) \
+ void \
+ FT_Destroy_Class_##class_( FT_Library library, \
+ FT_ServiceDescRec* clazz ) \
+ { \
+ FT_Memory memory = library->memory; \
+ if ( clazz ) \
+ FT_FREE( clazz ); \
+ } \
+ \
+ FT_Error \
+ FT_Create_Class_##class_( FT_Library library, \
+ FT_ServiceDescRec** output_class) \
+ { \
+ FT_ServiceDescRec* clazz; \
+ FT_Error error; \
+ FT_Memory memory = library->memory; \
+ \
+ if ( FT_ALLOC( clazz, sizeof(*clazz)*3 ) ) \
+ return error; \
+ clazz[0].serv_id = serv_id_1; \
+ clazz[0].serv_data = serv_data_1; \
+ clazz[1].serv_id = serv_id_2; \
+ clazz[1].serv_data = serv_data_2; \
+ clazz[2].serv_id = NULL; \
+ clazz[2].serv_data = NULL; \
+ *output_class = clazz; \
+ return FT_Err_Ok; \
+ }
+
+#define FT_DEFINE_SERVICEDESCREC3(class_, serv_id_1, serv_data_1, \
+ serv_id_2, serv_data_2, serv_id_3, serv_data_3) \
+ void \
+ FT_Destroy_Class_##class_( FT_Library library, \
+ FT_ServiceDescRec* clazz ) \
+ { \
+ FT_Memory memory = library->memory; \
+ if ( clazz ) \
+ FT_FREE( clazz ); \
+ } \
+ \
+ FT_Error \
+ FT_Create_Class_##class_( FT_Library library, \
+ FT_ServiceDescRec** output_class) \
+ { \
+ FT_ServiceDescRec* clazz; \
+ FT_Error error; \
+ FT_Memory memory = library->memory; \
+ \
+ if ( FT_ALLOC( clazz, sizeof(*clazz)*4 ) ) \
+ return error; \
+ clazz[0].serv_id = serv_id_1; \
+ clazz[0].serv_data = serv_data_1; \
+ clazz[1].serv_id = serv_id_2; \
+ clazz[1].serv_data = serv_data_2; \
+ clazz[2].serv_id = serv_id_3; \
+ clazz[2].serv_data = serv_data_3; \
+ clazz[3].serv_id = NULL; \
+ clazz[3].serv_data = NULL; \
+ *output_class = clazz; \
+ return FT_Err_Ok; \
+ }
+
+#define FT_DEFINE_SERVICEDESCREC4(class_, serv_id_1, serv_data_1, \
+ serv_id_2, serv_data_2, serv_id_3, serv_data_3, \
+ serv_id_4, serv_data_4) \
+ void \
+ FT_Destroy_Class_##class_( FT_Library library, \
+ FT_ServiceDescRec* clazz ) \
+ { \
+ FT_Memory memory = library->memory; \
+ if ( clazz ) \
+ FT_FREE( clazz ); \
+ } \
+ \
+ FT_Error \
+ FT_Create_Class_##class_( FT_Library library, \
+ FT_ServiceDescRec** output_class) \
+ { \
+ FT_ServiceDescRec* clazz; \
+ FT_Error error; \
+ FT_Memory memory = library->memory; \
+ \
+ if ( FT_ALLOC( clazz, sizeof(*clazz)*5 ) ) \
+ return error; \
+ clazz[0].serv_id = serv_id_1; \
+ clazz[0].serv_data = serv_data_1; \
+ clazz[1].serv_id = serv_id_2; \
+ clazz[1].serv_data = serv_data_2; \
+ clazz[2].serv_id = serv_id_3; \
+ clazz[2].serv_data = serv_data_3; \
+ clazz[3].serv_id = serv_id_4; \
+ clazz[3].serv_data = serv_data_4; \
+ clazz[4].serv_id = NULL; \
+ clazz[4].serv_data = NULL; \
+ *output_class = clazz; \
+ return FT_Err_Ok; \
+ }
+
+#define FT_DEFINE_SERVICEDESCREC5(class_, serv_id_1, serv_data_1, \
+ serv_id_2, serv_data_2, serv_id_3, serv_data_3, serv_id_4, \
+ serv_data_4, serv_id_5, serv_data_5) \
+ void \
+ FT_Destroy_Class_##class_( FT_Library library, \
+ FT_ServiceDescRec* clazz ) \
+ { \
+ FT_Memory memory = library->memory; \
+ if ( clazz ) \
+ FT_FREE( clazz ); \
+ } \
+ \
+ FT_Error \
+ FT_Create_Class_##class_( FT_Library library, \
+ FT_ServiceDescRec** output_class) \
+ { \
+ FT_ServiceDescRec* clazz; \
+ FT_Error error; \
+ FT_Memory memory = library->memory; \
+ \
+ if ( FT_ALLOC( clazz, sizeof(*clazz)*6 ) ) \
+ return error; \
+ clazz[0].serv_id = serv_id_1; \
+ clazz[0].serv_data = serv_data_1; \
+ clazz[1].serv_id = serv_id_2; \
+ clazz[1].serv_data = serv_data_2; \
+ clazz[2].serv_id = serv_id_3; \
+ clazz[2].serv_data = serv_data_3; \
+ clazz[3].serv_id = serv_id_4; \
+ clazz[3].serv_data = serv_data_4; \
+ clazz[4].serv_id = serv_id_5; \
+ clazz[4].serv_data = serv_data_5; \
+ clazz[5].serv_id = NULL; \
+ clazz[5].serv_data = NULL; \
+ *output_class = clazz; \
+ return FT_Err_Ok; \
+ }
+
+#define FT_DEFINE_SERVICEDESCREC6(class_, serv_id_1, serv_data_1, \
+ serv_id_2, serv_data_2, serv_id_3, serv_data_3, \
+ serv_id_4, serv_data_4, serv_id_5, serv_data_5, \
+ serv_id_6, serv_data_6) \
+ void \
+ FT_Destroy_Class_##class_( FT_Library library, \
+ FT_ServiceDescRec* clazz ) \
+ { \
+ FT_Memory memory = library->memory; \
+ if ( clazz ) \
+ FT_FREE( clazz ); \
+ } \
+ \
+ FT_Error \
+ FT_Create_Class_##class_( FT_Library library, \
+ FT_ServiceDescRec** output_class) \
+ { \
+ FT_ServiceDescRec* clazz; \
+ FT_Error error; \
+ FT_Memory memory = library->memory; \
+ \
+ if ( FT_ALLOC( clazz, sizeof(*clazz)*7 ) ) \
+ return error; \
+ clazz[0].serv_id = serv_id_1; \
+ clazz[0].serv_data = serv_data_1; \
+ clazz[1].serv_id = serv_id_2; \
+ clazz[1].serv_data = serv_data_2; \
+ clazz[2].serv_id = serv_id_3; \
+ clazz[2].serv_data = serv_data_3; \
+ clazz[3].serv_id = serv_id_4; \
+ clazz[3].serv_data = serv_data_4; \
+ clazz[4].serv_id = serv_id_5; \
+ clazz[4].serv_data = serv_data_5; \
+ clazz[5].serv_id = serv_id_6; \
+ clazz[5].serv_data = serv_data_6; \
+ clazz[6].serv_id = NULL; \
+ clazz[6].serv_data = NULL; \
+ *output_class = clazz; \
+ return FT_Err_Ok; \
+ }
+#endif /* FT_CONFIG_OPTION_PIC */
/*
* Parse a list of FT_ServiceDescRec descriptors and look for
@@ -301,6 +593,7 @@ FT_BEGIN_HEADER
*/
#define FT_SERVICE_BDF_H <freetype/internal/services/svbdf.h>
+#define FT_SERVICE_CID_H <freetype/internal/services/svcid.h>
#define FT_SERVICE_GLYPH_DICT_H <freetype/internal/services/svgldict.h>
#define FT_SERVICE_GX_VALIDATE_H <freetype/internal/services/svgxval.h>
#define FT_SERVICE_KERNING_H <freetype/internal/services/svkern.h>
diff --git a/src/freetype2/freetype/internal/fttrace.h b/src/freetype2/freetype/internal/fttrace.h
index 81916fc..e9b383a 100644
--- a/src/freetype2/freetype/internal/fttrace.h
+++ b/src/freetype2/freetype/internal/fttrace.h
@@ -4,7 +4,7 @@
/* */
/* Tracing handling (specification only). */
/* */
-/* Copyright 2002, 2004, 2005, 2006 by */
+/* Copyright 2002, 2004, 2005, 2006, 2007 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -31,16 +31,19 @@ FT_TRACE_DEF( init ) /* initialization (ftinit.c) */
FT_TRACE_DEF( objs ) /* base objects (ftobjs.c) */
FT_TRACE_DEF( outline ) /* outline management (ftoutln.c) */
FT_TRACE_DEF( glyph ) /* glyph management (ftglyph.c) */
+FT_TRACE_DEF( gloader ) /* glyph loader (ftgloadr.c) */
FT_TRACE_DEF( raster ) /* monochrome rasterizer (ftraster.c) */
FT_TRACE_DEF( smooth ) /* anti-aliasing raster (ftgrays.c) */
FT_TRACE_DEF( mm ) /* MM interface (ftmm.c) */
FT_TRACE_DEF( raccess ) /* resource fork accessor (ftrfork.c) */
+FT_TRACE_DEF( synth ) /* bold/slant synthesizer (ftsynth.c) */
/* Cache sub-system */
FT_TRACE_DEF( cache ) /* cache sub-system (ftcache.c, etc.) */
/* SFNT driver components */
+FT_TRACE_DEF( sfdriver ) /* SFNT font driver (sfdriver.c) */
FT_TRACE_DEF( sfobjs ) /* SFNT object handler (sfobjs.c) */
FT_TRACE_DEF( ttcmap ) /* charmap handler (ttcmap.c) */
FT_TRACE_DEF( ttkern ) /* kerning handler (ttkern.c) */
@@ -48,6 +51,7 @@ FT_TRACE_DEF( ttload ) /* basic TrueType tables (ttload.c) */
FT_TRACE_DEF( ttmtx ) /* metrics-related tables (ttmtx.c) */
FT_TRACE_DEF( ttpost ) /* PS table processing (ttpost.c) */
FT_TRACE_DEF( ttsbit ) /* TrueType sbit handling (ttsbit.c) */
+FT_TRACE_DEF( ttbdf ) /* TrueType embedded BDF (ttbdf.c) */
/* TrueType driver components */
FT_TRACE_DEF( ttdriver ) /* TT font driver (ttdriver.c) */
@@ -58,6 +62,7 @@ FT_TRACE_DEF( ttpload ) /* TT data/program loader (ttpload.c) */
FT_TRACE_DEF( ttgxvar ) /* TrueType GX var handler (ttgxvar.c) */
/* Type 1 driver components */
+FT_TRACE_DEF( t1afm )
FT_TRACE_DEF( t1driver )
FT_TRACE_DEF( t1gload )
FT_TRACE_DEF( t1hint )
@@ -114,6 +119,7 @@ FT_TRACE_DEF( otvgdef )
FT_TRACE_DEF( otvgpos )
FT_TRACE_DEF( otvgsub )
FT_TRACE_DEF( otvjstf )
+FT_TRACE_DEF( otvmath )
/* TrueTypeGX/AAT validation components */
FT_TRACE_DEF( gxvmodule )
diff --git a/src/freetype2/freetype/internal/internal.h b/src/freetype2/freetype/internal/internal.h
index 27d5dc5..f500a65 100644
--- a/src/freetype2/freetype/internal/internal.h
+++ b/src/freetype2/freetype/internal/internal.h
@@ -25,6 +25,7 @@
#define FT_INTERNAL_OBJECTS_H <freetype/internal/ftobjs.h>
+#define FT_INTERNAL_PIC_H <freetype/internal/ftpic.h>
#define FT_INTERNAL_STREAM_H <freetype/internal/ftstream.h>
#define FT_INTERNAL_MEMORY_H <freetype/internal/ftmemory.h>
#define FT_INTERNAL_DEBUG_H <freetype/internal/ftdebug.h>
diff --git a/src/freetype2/freetype/internal/psaux.h b/src/freetype2/freetype/internal/psaux.h
index 4baf7a0..a96e0df 100644
--- a/src/freetype2/freetype/internal/psaux.h
+++ b/src/freetype2/freetype/internal/psaux.h
@@ -5,7 +5,7 @@
/* Auxiliary functions and data structures related to PostScript fonts */
/* (specification). */
/* */
-/* Copyright 1996-2001, 2002, 2003, 2004, 2006 by */
+/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2008, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -197,6 +197,7 @@ FT_BEGIN_HEADER
{
T1_FIELD_LOCATION_CID_INFO,
T1_FIELD_LOCATION_FONT_DICT,
+ T1_FIELD_LOCATION_FONT_EXTRA,
T1_FIELD_LOCATION_FONT_INFO,
T1_FIELD_LOCATION_PRIVATE,
T1_FIELD_LOCATION_BBOX,
@@ -227,7 +228,11 @@ FT_BEGIN_HEADER
FT_UInt array_max; /* maximal number of elements for */
/* array */
FT_UInt count_offset; /* offset of element count for */
- /* arrays */
+ /* arrays; must not be zero if in */
+ /* use -- in other words, a */
+ /* `num_FOO' element must not */
+ /* start the used structure if we */
+ /* parse a `FOO' array */
FT_UInt dict; /* where we expect it */
} T1_FieldRec;
@@ -355,7 +360,7 @@ FT_BEGIN_HEADER
FT_Error
(*to_bytes)( PS_Parser parser,
FT_Byte* bytes,
- FT_Long max_bytes,
+ FT_Offset max_bytes,
FT_Long* pnum_bytes,
FT_Bool delimiters );
@@ -528,13 +533,6 @@ FT_BEGIN_HEADER
/* */
/* max_contours :: Maximal number of contours in builder outline. */
/* */
- /* last :: The last point position. */
- /* */
- /* scale_x :: The horizontal scaling value (FUnits to */
- /* sub-pixels). */
- /* */
- /* scale_y :: The vertical scaling value (FUnits to sub-pixels). */
- /* */
/* pos_x :: The horizontal translation (if composite glyph). */
/* */
/* pos_y :: The vertical translation (if composite glyph). */
@@ -567,11 +565,6 @@ FT_BEGIN_HEADER
FT_Outline* base;
FT_Outline* current;
- FT_Vector last;
-
- FT_Fixed scale_x;
- FT_Fixed scale_y;
-
FT_Pos pos_x;
FT_Pos pos_y;
@@ -582,7 +575,6 @@ FT_BEGIN_HEADER
T1_ParseState parse_state;
FT_Bool load_points;
FT_Bool no_recurse;
- FT_Bool shift;
FT_Bool metrics_only;
@@ -697,9 +689,11 @@ FT_BEGIN_HEADER
T1_Decoder_Callback parse_callback;
T1_Decoder_FuncsRec funcs;
- FT_Int* buildchar;
+ FT_Long* buildchar;
FT_UInt len_buildchar;
+ FT_Bool seac;
+
} T1_DecoderRec;
@@ -761,7 +755,7 @@ FT_BEGIN_HEADER
FT_Int
(*get_index)( const char* name,
- FT_UInt len,
+ FT_Offset len,
void* user_data );
void* user_data;
diff --git a/src/freetype2/freetype/internal/pshints.h b/src/freetype2/freetype/internal/pshints.h
index 48452c0..0c35765 100644
--- a/src/freetype2/freetype/internal/pshints.h
+++ b/src/freetype2/freetype/internal/pshints.h
@@ -6,7 +6,7 @@
/* recorders (specification only). These are used to support native */
/* T1/T2 hints in the `type1', `cid', and `cff' font drivers. */
/* */
-/* Copyright 2001, 2002, 2003, 2005, 2006, 2007 by */
+/* Copyright 2001, 2002, 2003, 2005, 2006, 2007, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -157,7 +157,8 @@ FT_BEGIN_HEADER
* 0 for horizontal stems (hstem), 1 for vertical ones (vstem).
*
* coords ::
- * Array of 2 integers, used as (position,length) stem descriptor.
+ * Array of 2 coordinates in 16.16 format, used as (position,length)
+ * stem descriptor.
*
* @note:
* Use vertical coordinates (y) for horizontal stems (dim=0). Use
@@ -175,9 +176,9 @@ FT_BEGIN_HEADER
*
*/
typedef void
- (*T1_Hints_SetStemFunc)( T1_Hints hints,
- FT_UInt dimension,
- FT_Long* coords );
+ (*T1_Hints_SetStemFunc)( T1_Hints hints,
+ FT_UInt dimension,
+ FT_Fixed* coords );
/*************************************************************************
@@ -197,8 +198,8 @@ FT_BEGIN_HEADER
* 0 for horizontal stems, 1 for vertical ones.
*
* coords ::
- * An array of 6 integers, holding 3 (position,length) pairs for the
- * counter-controlled stems.
+ * An array of 6 values in 16.16 format, holding 3 (position,length)
+ * pairs for the counter-controlled stems.
*
* @note:
* Use vertical coordinates (y) for horizontal stems (dim=0). Use
@@ -209,9 +210,9 @@ FT_BEGIN_HEADER
*
*/
typedef void
- (*T1_Hints_SetStem3Func)( T1_Hints hints,
- FT_UInt dimension,
- FT_Long* coords );
+ (*T1_Hints_SetStem3Func)( T1_Hints hints,
+ FT_UInt dimension,
+ FT_Fixed* coords );
/*************************************************************************
@@ -446,7 +447,7 @@ FT_BEGIN_HEADER
* The number of stems.
*
* coords ::
- * An array of `count' (position,length) pairs.
+ * An array of `count' (position,length) pairs in 16.16 format.
*
* @note:
* Use vertical coordinates (y) for horizontal stems (dim=0). Use
@@ -678,6 +679,30 @@ FT_BEGIN_HEADER
typedef PSHinter_Interface* PSHinter_Service;
+#ifndef FT_CONFIG_OPTION_PIC
+
+#define FT_DEFINE_PSHINTER_INTERFACE(class_, get_globals_funcs_, \
+ get_t1_funcs_, get_t2_funcs_) \
+ static const PSHinter_Interface class_ = \
+ { \
+ get_globals_funcs_, get_t1_funcs_, get_t2_funcs_ \
+ };
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#define FT_DEFINE_PSHINTER_INTERFACE(class_, get_globals_funcs_, \
+ get_t1_funcs_, get_t2_funcs_) \
+ void \
+ FT_Init_Class_##class_( FT_Library library, \
+ PSHinter_Interface* clazz) \
+ { \
+ FT_UNUSED(library); \
+ clazz->get_globals_funcs = get_globals_funcs_; \
+ clazz->get_t1_funcs = get_t1_funcs_; \
+ clazz->get_t2_funcs = get_t2_funcs_; \
+ }
+
+#endif /* FT_CONFIG_OPTION_PIC */
FT_END_HEADER
diff --git a/src/freetype2/freetype/internal/services/svbdf.h b/src/freetype2/freetype/internal/services/svbdf.h
index 0f7fc61..9264239 100644
--- a/src/freetype2/freetype/internal/services/svbdf.h
+++ b/src/freetype2/freetype/internal/services/svbdf.h
@@ -45,6 +45,26 @@ FT_BEGIN_HEADER
FT_BDF_GetPropertyFunc get_property;
};
+#ifndef FT_CONFIG_OPTION_PIC
+
+#define FT_DEFINE_SERVICE_BDFRec(class_, get_charset_id_, get_property_) \
+ static const FT_Service_BDFRec class_ = \
+ { \
+ get_charset_id_, get_property_ \
+ };
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#define FT_DEFINE_SERVICE_BDFRec(class_, get_charset_id_, get_property_) \
+ void \
+ FT_Init_Class_##class_( FT_Service_BDFRec* clazz ) \
+ { \
+ clazz->get_charset_id = get_charset_id_; \
+ clazz->get_property = get_property_; \
+ }
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
/* */
diff --git a/src/freetype2/freetype/internal/services/svcid.h b/src/freetype2/freetype/internal/services/svcid.h
new file mode 100644
index 0000000..9b874b5
--- /dev/null
+++ b/src/freetype2/freetype/internal/services/svcid.h
@@ -0,0 +1,83 @@
+/***************************************************************************/
+/* */
+/* svcid.h */
+/* */
+/* The FreeType CID font services (specification). */
+/* */
+/* Copyright 2007, 2009 by Derek Clegg, Michael Toftdal. */
+/* */
+/* 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 __SVCID_H__
+#define __SVCID_H__
+
+#include FT_INTERNAL_SERVICE_H
+
+
+FT_BEGIN_HEADER
+
+
+#define FT_SERVICE_ID_CID "CID"
+
+ typedef FT_Error
+ (*FT_CID_GetRegistryOrderingSupplementFunc)( FT_Face face,
+ const char* *registry,
+ const char* *ordering,
+ FT_Int *supplement );
+ typedef FT_Error
+ (*FT_CID_GetIsInternallyCIDKeyedFunc)( FT_Face face,
+ FT_Bool *is_cid );
+ typedef FT_Error
+ (*FT_CID_GetCIDFromGlyphIndexFunc)( FT_Face face,
+ FT_UInt glyph_index,
+ FT_UInt *cid );
+
+ FT_DEFINE_SERVICE( CID )
+ {
+ FT_CID_GetRegistryOrderingSupplementFunc get_ros;
+ FT_CID_GetIsInternallyCIDKeyedFunc get_is_cid;
+ FT_CID_GetCIDFromGlyphIndexFunc get_cid_from_glyph_index;
+ };
+
+#ifndef FT_CONFIG_OPTION_PIC
+
+#define FT_DEFINE_SERVICE_CIDREC(class_, get_ros_, \
+ get_is_cid_, get_cid_from_glyph_index_ ) \
+ static const FT_Service_CIDRec class_ = \
+ { \
+ get_ros_, get_is_cid_, get_cid_from_glyph_index_ \
+ };
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#define FT_DEFINE_SERVICE_CIDREC(class_, get_ros_, \
+ get_is_cid_, get_cid_from_glyph_index_ ) \
+ void \
+ FT_Init_Class_##class_( FT_Library library, \
+ FT_Service_CIDRec* clazz) \
+ { \
+ FT_UNUSED(library); \
+ clazz->get_ros = get_ros_; \
+ clazz->get_is_cid = get_is_cid_; \
+ clazz->get_cid_from_glyph_index = get_cid_from_glyph_index_; \
+ }
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
+ /* */
+
+
+FT_END_HEADER
+
+
+#endif /* __SVCID_H__ */
+
+
+/* END */
diff --git a/src/freetype2/freetype/internal/services/svgldict.h b/src/freetype2/freetype/internal/services/svgldict.h
index e5e56b2..d66a41d 100644
--- a/src/freetype2/freetype/internal/services/svgldict.h
+++ b/src/freetype2/freetype/internal/services/svgldict.h
@@ -51,6 +51,28 @@ FT_BEGIN_HEADER
FT_GlyphDict_NameIndexFunc name_index; /* optional */
};
+#ifndef FT_CONFIG_OPTION_PIC
+
+#define FT_DEFINE_SERVICE_GLYPHDICTREC(class_, get_name_, name_index_) \
+ static const FT_Service_GlyphDictRec class_ = \
+ { \
+ get_name_, name_index_ \
+ };
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#define FT_DEFINE_SERVICE_GLYPHDICTREC(class_, get_name_, name_index_) \
+ void \
+ FT_Init_Class_##class_( FT_Library library, \
+ FT_Service_GlyphDictRec* clazz) \
+ { \
+ FT_UNUSED(library); \
+ clazz->get_name = get_name_; \
+ clazz->name_index = name_index_; \
+ }
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
/* */
diff --git a/src/freetype2/freetype/internal/services/svmm.h b/src/freetype2/freetype/internal/services/svmm.h
index 8a99ec4..66e1da2 100644
--- a/src/freetype2/freetype/internal/services/svmm.h
+++ b/src/freetype2/freetype/internal/services/svmm.h
@@ -68,6 +68,31 @@ FT_BEGIN_HEADER
FT_Set_Var_Design_Func set_var_design;
};
+#ifndef FT_CONFIG_OPTION_PIC
+
+#define FT_DEFINE_SERVICE_MULTIMASTERSREC(class_, get_mm_, set_mm_design_, \
+ set_mm_blend_, get_mm_var_, set_var_design_) \
+ static const FT_Service_MultiMastersRec class_ = \
+ { \
+ get_mm_, set_mm_design_, set_mm_blend_, get_mm_var_, set_var_design_ \
+ };
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#define FT_DEFINE_SERVICE_MULTIMASTERSREC(class_, get_mm_, set_mm_design_, \
+ set_mm_blend_, get_mm_var_, set_var_design_) \
+ void \
+ FT_Init_Class_##class_( FT_Service_MultiMastersRec* clazz ) \
+ { \
+ clazz->get_mm = get_mm_; \
+ clazz->set_mm_design = set_mm_design_; \
+ clazz->set_mm_blend = set_mm_blend_; \
+ clazz->get_mm_var = get_mm_var_; \
+ clazz->set_var_design = set_var_design_; \
+ }
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
/* */
diff --git a/src/freetype2/freetype/internal/services/svpostnm.h b/src/freetype2/freetype/internal/services/svpostnm.h
index 282da68..106c54f 100644
--- a/src/freetype2/freetype/internal/services/svpostnm.h
+++ b/src/freetype2/freetype/internal/services/svpostnm.h
@@ -46,6 +46,27 @@ FT_BEGIN_HEADER
FT_PsName_GetFunc get_ps_font_name;
};
+#ifndef FT_CONFIG_OPTION_PIC
+
+#define FT_DEFINE_SERVICE_PSFONTNAMEREC(class_, get_ps_font_name_) \
+ static const FT_Service_PsFontNameRec class_ = \
+ { \
+ get_ps_font_name_ \
+ };
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#define FT_DEFINE_SERVICE_PSFONTNAMEREC(class_, get_ps_font_name_) \
+ void \
+ FT_Init_Class_##class_( FT_Library library, \
+ FT_Service_PsFontNameRec* clazz) \
+ { \
+ FT_UNUSED(library); \
+ clazz->get_ps_font_name = get_ps_font_name_; \
+ }
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
/* */
diff --git a/src/freetype2/freetype/internal/services/svpscmap.h b/src/freetype2/freetype/internal/services/svpscmap.h
index c4e25ed..961030c 100644
--- a/src/freetype2/freetype/internal/services/svpscmap.h
+++ b/src/freetype2/freetype/internal/services/svpscmap.h
@@ -98,7 +98,7 @@ FT_BEGIN_HEADER
(*PS_Unicodes_CharIndexFunc)( PS_Unicodes unicodes,
FT_UInt32 unicode );
- typedef FT_ULong
+ typedef FT_UInt32
(*PS_Unicodes_CharNextFunc)( PS_Unicodes unicodes,
FT_UInt32 *unicode );
@@ -117,6 +117,41 @@ FT_BEGIN_HEADER
const unsigned short* adobe_expert_encoding;
};
+
+#ifndef FT_CONFIG_OPTION_PIC
+
+#define FT_DEFINE_SERVICE_PSCMAPSREC(class_, unicode_value_, unicodes_init_, \
+ unicodes_char_index_, unicodes_char_next_, macintosh_name_, \
+ adobe_std_strings_, adobe_std_encoding_, adobe_expert_encoding_) \
+ static const FT_Service_PsCMapsRec class_ = \
+ { \
+ unicode_value_, unicodes_init_, \
+ unicodes_char_index_, unicodes_char_next_, macintosh_name_, \
+ adobe_std_strings_, adobe_std_encoding_, adobe_expert_encoding_ \
+ };
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#define FT_DEFINE_SERVICE_PSCMAPSREC(class_, unicode_value_, unicodes_init_, \
+ unicodes_char_index_, unicodes_char_next_, macintosh_name_, \
+ adobe_std_strings_, adobe_std_encoding_, adobe_expert_encoding_) \
+ void \
+ FT_Init_Class_##class_( FT_Library library, \
+ FT_Service_PsCMapsRec* clazz) \
+ { \
+ FT_UNUSED(library); \
+ clazz->unicode_value = unicode_value_; \
+ clazz->unicodes_init = unicodes_init_; \
+ clazz->unicodes_char_index = unicodes_char_index_; \
+ clazz->unicodes_char_next = unicodes_char_next_; \
+ clazz->macintosh_name = macintosh_name_; \
+ clazz->adobe_std_strings = adobe_std_strings_; \
+ clazz->adobe_std_encoding = adobe_std_encoding_; \
+ clazz->adobe_expert_encoding = adobe_expert_encoding_; \
+ }
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
/* */
diff --git a/src/freetype2/freetype/internal/services/svpsinfo.h b/src/freetype2/freetype/internal/services/svpsinfo.h
index 63f5db9..91ba91e 100644
--- a/src/freetype2/freetype/internal/services/svpsinfo.h
+++ b/src/freetype2/freetype/internal/services/svpsinfo.h
@@ -4,7 +4,7 @@
/* */
/* The FreeType PostScript info service (specification). */
/* */
-/* Copyright 2003, 2004 by */
+/* Copyright 2003, 2004, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -33,6 +33,10 @@ FT_BEGIN_HEADER
(*PS_GetFontInfoFunc)( FT_Face face,
PS_FontInfoRec* afont_info );
+ typedef FT_Error
+ (*PS_GetFontExtraFunc)( FT_Face face,
+ PS_FontExtraRec* afont_extra );
+
typedef FT_Int
(*PS_HasGlyphNamesFunc)( FT_Face face );
@@ -44,10 +48,38 @@ FT_BEGIN_HEADER
FT_DEFINE_SERVICE( PsInfo )
{
PS_GetFontInfoFunc ps_get_font_info;
+ PS_GetFontExtraFunc ps_get_font_extra;
PS_HasGlyphNamesFunc ps_has_glyph_names;
PS_GetFontPrivateFunc ps_get_font_private;
};
+#ifndef FT_CONFIG_OPTION_PIC
+
+#define FT_DEFINE_SERVICE_PSINFOREC(class_, get_font_info_, \
+ ps_get_font_extra_, has_glyph_names_, get_font_private_) \
+ static const FT_Service_PsInfoRec class_ = \
+ { \
+ get_font_info_, ps_get_font_extra_, has_glyph_names_, \
+ get_font_private_ \
+ };
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#define FT_DEFINE_SERVICE_PSINFOREC(class_, get_font_info_, \
+ ps_get_font_extra_, has_glyph_names_, get_font_private_) \
+ void \
+ FT_Init_Class_##class_( FT_Library library, \
+ FT_Service_PsInfoRec* clazz) \
+ { \
+ FT_UNUSED(library); \
+ clazz->ps_get_font_info = get_font_info_; \
+ clazz->ps_get_font_extra = ps_get_font_extra_; \
+ clazz->ps_has_glyph_names = has_glyph_names_; \
+ clazz->ps_get_font_private = get_font_private_; \
+ }
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
/* */
diff --git a/src/freetype2/freetype/internal/services/svsfnt.h b/src/freetype2/freetype/internal/services/svsfnt.h
index b4a85d9..30bb162 100644
--- a/src/freetype2/freetype/internal/services/svsfnt.h
+++ b/src/freetype2/freetype/internal/services/svsfnt.h
@@ -58,6 +58,7 @@ FT_BEGIN_HEADER
(*FT_SFNT_TableInfoFunc)( FT_Face face,
FT_UInt idx,
FT_ULong *tag,
+ FT_ULong *offset,
FT_ULong *length );
@@ -68,6 +69,27 @@ FT_BEGIN_HEADER
FT_SFNT_TableInfoFunc table_info;
};
+#ifndef FT_CONFIG_OPTION_PIC
+
+#define FT_DEFINE_SERVICE_SFNT_TABLEREC(class_, load_, get_, info_) \
+ static const FT_Service_SFNT_TableRec class_ = \
+ { \
+ load_, get_, info_ \
+ };
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#define FT_DEFINE_SERVICE_SFNT_TABLEREC(class_, load_, get_, info_) \
+ void \
+ FT_Init_Class_##class_( FT_Service_SFNT_TableRec* clazz ) \
+ { \
+ clazz->load_table = load_; \
+ clazz->get_table = get_; \
+ clazz->table_info = info_; \
+ }
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
/* */
diff --git a/src/freetype2/freetype/internal/services/svttcmap.h b/src/freetype2/freetype/internal/services/svttcmap.h
index 1e02d15..8af0035 100644
--- a/src/freetype2/freetype/internal/services/svttcmap.h
+++ b/src/freetype2/freetype/internal/services/svttcmap.h
@@ -1,13 +1,13 @@
/***************************************************************************/
/* */
-/* svsttcmap.h */
+/* svttcmap.h */
/* */
/* The FreeType TrueType/sfnt cmap extra information service. */
/* */
/* Copyright 2003 by */
/* Masatake YAMATO, Redhat K.K. */
/* */
-/* Copyright 2003 by */
+/* Copyright 2003, 2008 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -49,6 +49,13 @@ FT_BEGIN_HEADER
/* The language ID used in Mac fonts. Definitions of values are in */
/* freetype/ttnameid.h. */
/* */
+ /* format :: */
+ /* The cmap format. OpenType 1.5 defines the formats 0 (byte */
+ /* encoding table), 2~(high-byte mapping through table), 4~(segment */
+ /* mapping to delta values), 6~(trimmed table mapping), 8~(mixed */
+ /* 16-bit and 32-bit coverage), 10~(trimmed array), 12~(segmented */
+ /* coverage), and 14 (Unicode Variation Sequences). */
+ /* */
typedef struct TT_CMapInfo_
{
FT_ULong language;
@@ -67,6 +74,27 @@ FT_BEGIN_HEADER
TT_CMap_Info_GetFunc get_cmap_info;
};
+#ifndef FT_CONFIG_OPTION_PIC
+
+#define FT_DEFINE_SERVICE_TTCMAPSREC(class_, get_cmap_info_) \
+ static const FT_Service_TTCMapsRec class_ = \
+ { \
+ get_cmap_info_ \
+ };
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#define FT_DEFINE_SERVICE_TTCMAPSREC(class_, get_cmap_info_) \
+ void \
+ FT_Init_Class_##class_( FT_Library library, \
+ FT_Service_TTCMapsRec* clazz) \
+ { \
+ FT_UNUSED(library); \
+ clazz->get_cmap_info = get_cmap_info_; \
+ }
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
/* */
diff --git a/src/freetype2/freetype/internal/services/svttglyf.h b/src/freetype2/freetype/internal/services/svttglyf.h
index e57d484..ab2dc9a 100644
--- a/src/freetype2/freetype/internal/services/svttglyf.h
+++ b/src/freetype2/freetype/internal/services/svttglyf.h
@@ -37,6 +37,25 @@ FT_BEGIN_HEADER
TT_Glyf_GetLocationFunc get_location;
};
+#ifndef FT_CONFIG_OPTION_PIC
+
+#define FT_DEFINE_SERVICE_TTGLYFREC(class_, get_location_ ) \
+ static const FT_Service_TTGlyfRec class_ = \
+ { \
+ get_location_ \
+ };
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#define FT_DEFINE_SERVICE_TTGLYFREC(class_, get_location_ ) \
+ void \
+ FT_Init_Class_##class_( FT_Service_TTGlyfRec* clazz ) \
+ { \
+ clazz->get_location = get_location_; \
+ }
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
/* */
diff --git a/src/freetype2/freetype/internal/sfnt.h b/src/freetype2/freetype/internal/sfnt.h
index 7e8f684..6326deb 100644
--- a/src/freetype2/freetype/internal/sfnt.h
+++ b/src/freetype2/freetype/internal/sfnt.h
@@ -753,6 +753,141 @@ FT_BEGIN_HEADER
/* transitional */
typedef SFNT_Interface* SFNT_Service;
+#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)
+#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_) \
+ };
+
+#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_)
+#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_) \
+ }
+
+#endif /* FT_CONFIG_OPTION_PIC */
FT_END_HEADER
diff --git a/src/freetype2/freetype/internal/t1types.h b/src/freetype2/freetype/internal/t1types.h
index 047c6d5..5f73063 100644
--- a/src/freetype2/freetype/internal/t1types.h
+++ b/src/freetype2/freetype/internal/t1types.h
@@ -5,7 +5,7 @@
/* Basic Type1/Type2 type definitions and interface (specification */
/* only). */
/* */
-/* Copyright 1996-2001, 2002, 2003, 2004, 2006 by */
+/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2008, 2009 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -58,7 +58,9 @@ FT_BEGIN_HEADER
/* */
/* code_first :: The lowest valid character code in the encoding. */
/* */
- /* code_last :: The highest valid character code in the encoding. */
+ /* code_last :: The highest valid character code in the encoding */
+ /* + 1. When equal to code_first there are no valid */
+ /* character codes. */
/* */
/* char_index :: An array of corresponding glyph indices. */
/* */
@@ -87,11 +89,24 @@ FT_BEGIN_HEADER
} T1_EncodingType;
+ /* used to hold extra data of PS_FontInfoRec that
+ * cannot be stored in the publicly defined structure.
+ *
+ * Note these can't be blended with multiple-masters.
+ */
+ typedef struct PS_FontExtraRec_
+ {
+ FT_UShort fs_type;
+
+ } PS_FontExtraRec;
+
+
typedef struct T1_FontRec_
{
- PS_FontInfoRec font_info; /* font info dictionary */
- PS_PrivateRec private_dict; /* private dictionary */
- FT_String* font_name; /* top-level dictionary */
+ PS_FontInfoRec font_info; /* font info dictionary */
+ PS_FontExtraRec font_extra; /* font info extra fields */
+ PS_PrivateRec private_dict; /* private dictionary */
+ FT_String* font_name; /* top-level dictionary */
T1_EncodingType encoding_type;
T1_EncodingRec encoding;
@@ -217,7 +232,7 @@ FT_BEGIN_HEADER
/* undocumented, optional: has the same meaning as len_buildchar */
/* for Type 2 fonts; manipulated by othersubrs 19, 24, and 25 */
FT_UInt len_buildchar;
- FT_Int* buildchar;
+ FT_Long* buildchar;
/* since version 2.1 - interface to PostScript hinter */
const void* pshinter;
@@ -231,7 +246,10 @@ FT_BEGIN_HEADER
void* psnames;
void* psaux;
CID_FaceInfoRec cid;
+ PS_FontExtraRec font_extra;
+#if 0
void* afm_data;
+#endif
CID_Subrs subrs;
/* since version 2.1 - interface to PostScript hinter */
diff --git a/src/freetype2/freetype/internal/tttypes.h b/src/freetype2/freetype/internal/tttypes.h
index dfbb6a1..acbb863 100644
--- a/src/freetype2/freetype/internal/tttypes.h
+++ b/src/freetype2/freetype/internal/tttypes.h
@@ -5,7 +5,7 @@
/* Basic SFNT/TrueType type definitions and interface (specification */
/* only). */
/* */
-/* Copyright 1996-2001, 2002, 2004, 2005, 2006, 2007 by */
+/* Copyright 1996-2001, 2002, 2004, 2005, 2006, 2007, 2008 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -586,7 +586,7 @@ FT_BEGIN_HEADER
/* table_offset :: The offset of the index table in the `EBLC' */
/* table. Only used during strike loading. */
/* */
- typedef struct TT_SBit_RangeRec
+ typedef struct TT_SBit_RangeRec_
{
FT_UShort first_glyph;
FT_UShort last_glyph;
@@ -902,7 +902,7 @@ FT_BEGIN_HEADER
FT_Byte* table;
FT_Byte* table_end;
FT_Byte* strings;
- FT_UInt32 strings_size;
+ FT_ULong strings_size;
FT_UInt num_strikes;
FT_Bool loaded;
@@ -1401,7 +1401,7 @@ FT_BEGIN_HEADER
FT_Byte* vert_metrics;
FT_ULong vert_metrics_size;
- FT_UInt num_locations;
+ FT_ULong num_locations; /* in broken TTF, gid > 0xFFFF */
FT_Byte* glyph_locations;
FT_Byte* hdmx_table;