updated freetype to 2.3.11
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33650 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* User-selectable configuration macros (specification only). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 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, */
|
||||
@@ -92,9 +92,7 @@ FT_BEGIN_HEADER
|
||||
/* This is done to allow FreeType clients to run unmodified, forcing */
|
||||
/* them to display normal gray-level anti-aliased glyphs. */
|
||||
/* */
|
||||
#if HAIKU_INCLUDE_PATENTED_CODE
|
||||
# define FT_CONFIG_OPTION_SUBPIXEL_RENDERING
|
||||
#endif
|
||||
/* #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
@@ -398,6 +396,20 @@ FT_BEGIN_HEADER
|
||||
#undef FT_CONFIG_OPTION_USE_MODULE_ERRORS
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* Position Independent Code */
|
||||
/* */
|
||||
/* If this macro is set (which is _not_ the default), FreeType2 will */
|
||||
/* avoid creating constants that require address fixups. Instead the */
|
||||
/* constants will be moved into a struct and additional intialization */
|
||||
/* code will be used. */
|
||||
/* */
|
||||
/* Setting this macro is needed for systems that prohibit address */
|
||||
/* fixups, such as BREW. */
|
||||
/* */
|
||||
/* #define FT_CONFIG_OPTION_PIC */
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
@@ -441,7 +453,7 @@ FT_BEGIN_HEADER
|
||||
/* does not contain any glyph name though. */
|
||||
/* */
|
||||
/* Accessing SFNT names is done through the functions declared in */
|
||||
/* `freetype/ftnames.h'. */
|
||||
/* `freetype/ftsnames.h'. */
|
||||
/* */
|
||||
#define TT_CONFIG_OPTION_SFNT_NAMES
|
||||
|
||||
@@ -459,6 +471,7 @@ FT_BEGIN_HEADER
|
||||
#define TT_CONFIG_CMAP_FORMAT_8
|
||||
#define TT_CONFIG_CMAP_FORMAT_10
|
||||
#define TT_CONFIG_CMAP_FORMAT_12
|
||||
#define TT_CONFIG_CMAP_FORMAT_13
|
||||
#define TT_CONFIG_CMAP_FORMAT_14
|
||||
|
||||
|
||||
@@ -482,9 +495,7 @@ FT_BEGIN_HEADER
|
||||
/* Do not #undef this macro here, since the build system might */
|
||||
/* define it for certain configurations only. */
|
||||
/* */
|
||||
#if HAIKU_INCLUDE_PATENTED_CODE
|
||||
# define TT_CONFIG_OPTION_BYTECODE_INTERPRETER
|
||||
#endif
|
||||
/* #define TT_CONFIG_OPTION_BYTECODE_INTERPRETER */
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
@@ -61,6 +61,7 @@
|
||||
|
||||
#define FT_CHAR_BIT CHAR_BIT
|
||||
#define FT_INT_MAX INT_MAX
|
||||
#define FT_INT_MIN INT_MIN
|
||||
#define FT_UINT_MAX UINT_MAX
|
||||
#define FT_ULONG_MAX ULONG_MAX
|
||||
|
||||
|
||||
@@ -519,10 +519,7 @@ FT_BEGIN_HEADER
|
||||
/* <Note> */
|
||||
/* Despite the name, this enumeration lists specific character */
|
||||
/* repertories (i.e., charsets), and not text encoding methods (e.g., */
|
||||
/* UTF-8, UTF-16, GB2312_EUC, etc.). */
|
||||
/* */
|
||||
/* Because of 32-bit charcodes defined in Unicode (i.e., surrogates), */
|
||||
/* all character codes must be expressed as FT_Longs. */
|
||||
/* UTF-8, UTF-16, etc.). */
|
||||
/* */
|
||||
/* Other encodings might be defined in the future. */
|
||||
/* */
|
||||
@@ -536,6 +533,10 @@ FT_BEGIN_HEADER
|
||||
/* Latin-1. Most fonts include a Unicode charmap, but not all */
|
||||
/* of them. */
|
||||
/* */
|
||||
/* For example, if you want to access Unicode value U+1F028 (and */
|
||||
/* the font contains it), use value 0x1F028 as the input value for */
|
||||
/* @FT_Get_Char_Index. */
|
||||
/* */
|
||||
/* FT_ENCODING_MS_SYMBOL :: */
|
||||
/* Corresponds to the Microsoft Symbol encoding, used to encode */
|
||||
/* mathematical symbols in the 32..255 character code range. For */
|
||||
@@ -1651,6 +1652,11 @@ FT_BEGIN_HEADER
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* In case you want to provide your own memory allocating routines, */
|
||||
/* use @FT_New_Library instead, followed by a call to */
|
||||
/* @FT_Add_Default_Modules (or a series of calls to @FT_Add_Module). */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Init_FreeType( FT_Library *alibrary );
|
||||
|
||||
@@ -3757,7 +3763,7 @@ FT_BEGIN_HEADER
|
||||
*/
|
||||
#define FREETYPE_MAJOR 2
|
||||
#define FREETYPE_MINOR 3
|
||||
#define FREETYPE_PATCH 9
|
||||
#define FREETYPE_PATCH 11
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
/* FreeType glyph image formats and default raster interface */
|
||||
/* (specification). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 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, */
|
||||
@@ -318,14 +318,23 @@ FT_BEGIN_HEADER
|
||||
/* elements, giving the outline's point coordinates. */
|
||||
/* */
|
||||
/* tags :: A pointer to an array of `n_points' chars, giving */
|
||||
/* each outline point's type. If bit~0 is unset, the */
|
||||
/* point is `off' the curve, i.e., a Bézier control */
|
||||
/* point, while it is `on' when set. */
|
||||
/* each outline point's type. */
|
||||
/* */
|
||||
/* If bit~0 is unset, the point is `off' the curve, */
|
||||
/* i.e., a Bézier control point, while it is `on' if */
|
||||
/* set. */
|
||||
/* */
|
||||
/* Bit~1 is meaningful for `off' points only. If set, */
|
||||
/* it indicates a third-order Bézier arc control point; */
|
||||
/* and a second-order control point if unset. */
|
||||
/* */
|
||||
/* If bit~2 is set, bits 5-7 contain the drop-out mode */
|
||||
/* (as defined in the OpenType specification; the value */
|
||||
/* is the same as the argument to the SCANMODE */
|
||||
/* instruction). */
|
||||
/* */
|
||||
/* Bits 3 and~4 are reserved for internal purposes. */
|
||||
/* */
|
||||
/* contours :: An array of `n_contours' shorts, giving the end */
|
||||
/* point of each contour within the outline. For */
|
||||
/* example, the first contour is defined by the points */
|
||||
@@ -336,6 +345,12 @@ FT_BEGIN_HEADER
|
||||
/* and give hints to the scan-converter and hinter on */
|
||||
/* how to convert/grid-fit it. See @FT_OUTLINE_FLAGS. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* The B/W rasterizer only checks bit~2 in the `tags' array for the */
|
||||
/* first point of each contour. The drop-out mode as given with */
|
||||
/* @FT_OUTLINE_IGNORE_DROPOUTS, @FT_OUTLINE_SMART_DROPOUTS, and */
|
||||
/* @FT_OUTLINE_INCLUDE_STUBS in `flags' is then overridden. */
|
||||
/* */
|
||||
typedef struct FT_Outline_
|
||||
{
|
||||
short n_contours; /* number of contours in glyph */
|
||||
@@ -349,6 +364,11 @@ FT_BEGIN_HEADER
|
||||
|
||||
} FT_Outline;
|
||||
|
||||
/* Following limits must be consistent with */
|
||||
/* FT_Outline.{n_contours,n_points} */
|
||||
#define FT_OUTLINE_CONTOURS_MAX SHRT_MAX
|
||||
#define FT_OUTLINE_POINTS_MAX SHRT_MAX
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
@@ -371,7 +391,7 @@ FT_BEGIN_HEADER
|
||||
/* FT_OUTLINE_EVEN_ODD_FILL :: */
|
||||
/* By default, outlines are filled using the non-zero winding rule. */
|
||||
/* If set to 1, the outline will be filled using the even-odd fill */
|
||||
/* rule (only works with the smooth raster). */
|
||||
/* rule (only works with the smooth rasterizer). */
|
||||
/* */
|
||||
/* FT_OUTLINE_REVERSE_FILL :: */
|
||||
/* By default, outside contours of an outline are oriented in */
|
||||
@@ -384,15 +404,17 @@ FT_BEGIN_HEADER
|
||||
/* By default, the scan converter will try to detect drop-outs in */
|
||||
/* an outline and correct the glyph bitmap to ensure consistent */
|
||||
/* shape continuity. If set, this flag hints the scan-line */
|
||||
/* converter to ignore such cases. */
|
||||
/* converter to ignore such cases. See below for more information. */
|
||||
/* */
|
||||
/* FT_OUTLINE_SMART_DROPOUTS :: */
|
||||
/* Select smart dropout control. If unset, use simple dropout */
|
||||
/* control. Ignored if @FT_OUTLINE_IGNORE_DROPOUTS is set. */
|
||||
/* control. Ignored if @FT_OUTLINE_IGNORE_DROPOUTS is set. See */
|
||||
/* below for more information. */
|
||||
/* */
|
||||
/* FT_OUTLINE_INCLUDE_STUBS :: */
|
||||
/* If set, turn pixels on for `stubs', otherwise exclude them. */
|
||||
/* Ignored if @FT_OUTLINE_IGNORE_DROPOUTS is set. */
|
||||
/* Ignored if @FT_OUTLINE_IGNORE_DROPOUTS is set. See below for */
|
||||
/* more information. */
|
||||
/* */
|
||||
/* FT_OUTLINE_HIGH_PRECISION :: */
|
||||
/* This flag indicates that the scan-line converter should try to */
|
||||
@@ -409,6 +431,13 @@ FT_BEGIN_HEADER
|
||||
/* scan-converter. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* The flags @FT_OUTLINE_IGNORE_DROPOUTS, @FT_OUTLINE_SMART_DROPOUTS, */
|
||||
/* and @FT_OUTLINE_INCLUDE_STUBS are ignored by the smooth */
|
||||
/* rasterizer. */
|
||||
/* */
|
||||
/* There exists a second mechanism to pass the drop-out mode to the */
|
||||
/* B/W rasterizer; see the `tags' field in @FT_Outline. */
|
||||
/* */
|
||||
/* Please refer to the description of the `SCANTYPE' instruction in */
|
||||
/* the OpenType specification (in file `ttinst1.doc') how simple */
|
||||
/* drop-outs, smart drop-outs, and stubs are defined. */
|
||||
@@ -455,15 +484,17 @@ FT_BEGIN_HEADER
|
||||
|
||||
#define FT_CURVE_TAG( flag ) ( flag & 3 )
|
||||
|
||||
#define FT_CURVE_TAG_ON 1
|
||||
#define FT_CURVE_TAG_CONIC 0
|
||||
#define FT_CURVE_TAG_CUBIC 2
|
||||
#define FT_CURVE_TAG_ON 1
|
||||
#define FT_CURVE_TAG_CONIC 0
|
||||
#define FT_CURVE_TAG_CUBIC 2
|
||||
|
||||
#define FT_CURVE_TAG_TOUCH_X 8 /* reserved for the TrueType hinter */
|
||||
#define FT_CURVE_TAG_TOUCH_Y 16 /* reserved for the TrueType hinter */
|
||||
#define FT_CURVE_TAG_HAS_SCANMODE 4
|
||||
|
||||
#define FT_CURVE_TAG_TOUCH_BOTH ( FT_CURVE_TAG_TOUCH_X | \
|
||||
FT_CURVE_TAG_TOUCH_Y )
|
||||
#define FT_CURVE_TAG_TOUCH_X 8 /* reserved for the TrueType hinter */
|
||||
#define FT_CURVE_TAG_TOUCH_Y 16 /* reserved for the TrueType hinter */
|
||||
|
||||
#define FT_CURVE_TAG_TOUCH_BOTH ( FT_CURVE_TAG_TOUCH_X | \
|
||||
FT_CURVE_TAG_TOUCH_Y )
|
||||
|
||||
#define FT_Curve_Tag_On FT_CURVE_TAG_ON
|
||||
#define FT_Curve_Tag_Conic FT_CURVE_TAG_CONIC
|
||||
@@ -1011,7 +1042,7 @@ FT_BEGIN_HEADER
|
||||
/* */
|
||||
/* gray_spans :: The gray span drawing callback. */
|
||||
/* */
|
||||
/* black_spans :: The black span drawing callback. */
|
||||
/* black_spans :: The black span drawing callback. UNIMPLEMENTED! */
|
||||
/* */
|
||||
/* bit_test :: The bit test callback. UNIMPLEMENTED! */
|
||||
/* */
|
||||
@@ -1048,7 +1079,7 @@ FT_BEGIN_HEADER
|
||||
const void* source;
|
||||
int flags;
|
||||
FT_SpanFunc gray_spans;
|
||||
FT_SpanFunc black_spans;
|
||||
FT_SpanFunc black_spans; /* doesn't work! */
|
||||
FT_Raster_BitTest_Func bit_test; /* doesn't work! */
|
||||
FT_Raster_BitSet_Func bit_set; /* doesn't work! */
|
||||
void* user;
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* FreeType modules public interface (specification). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2006, 2008 by */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2006, 2008, 2009 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@@ -259,6 +259,10 @@ FT_BEGIN_HEADER
|
||||
/* from a given memory object. It is thus possible to use libraries */
|
||||
/* with distinct memory allocators within the same program. */
|
||||
/* */
|
||||
/* Normally, you would call this function (followed by a call to */
|
||||
/* @FT_Add_Default_Modules or a series of calls to @FT_Add_Module) */
|
||||
/* instead of @FT_Init_FreeType to initialize the FreeType library. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* memory :: A handle to the original memory object. */
|
||||
/* */
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
/* */
|
||||
/* This is _not_ used to retrieve glyph names! */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2006 by */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2006, 2009 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@@ -147,7 +147,8 @@ FT_BEGIN_HEADER
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* The `string' array returned in the `aname' structure is not */
|
||||
/* null-terminated. */
|
||||
/* null-terminated. The application should deallocate it if it is no */
|
||||
/* longer in use. */
|
||||
/* */
|
||||
/* Use @FT_Get_Sfnt_Name_Count to get the total number of available */
|
||||
/* `name' table entries, then do a loop until you get the right */
|
||||
|
||||
@@ -598,7 +598,7 @@ FT_BEGIN_HEADER
|
||||
*
|
||||
* @description:
|
||||
* Call this function after @FT_Stroker_GetBorderCounts to
|
||||
* export the all borders to your own @FT_Outline structure.
|
||||
* export all borders to your own @FT_Outline structure.
|
||||
*
|
||||
* Note that this function appends the border points and
|
||||
* contours to your outline, but does not try to resize its
|
||||
|
||||
@@ -167,7 +167,7 @@ FT_BEGIN_HEADER
|
||||
/* FT_Tag */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A typedef for 32-bit tags (as used in the SFNT format). */
|
||||
/* A typedef for 32-bit tags (as used in the SFNT format). */
|
||||
/* */
|
||||
typedef FT_UInt32 FT_Tag;
|
||||
|
||||
@@ -474,6 +474,7 @@ FT_BEGIN_HEADER
|
||||
/* this macro. */
|
||||
/* */
|
||||
#define FT_MAKE_TAG( _x1, _x2, _x3, _x4 ) \
|
||||
(FT_Tag) \
|
||||
( ( (FT_ULong)_x1 << 24 ) | \
|
||||
( (FT_ULong)_x2 << 16 ) | \
|
||||
( (FT_ULong)_x3 << 8 ) | \
|
||||
|
||||
@@ -49,6 +49,9 @@ FT_BEGIN_HEADER
|
||||
/* however, there are special cases (like in PDF devices) where it is */
|
||||
/* important to differentiate, in spite of FreeType's uniform API. */
|
||||
/* */
|
||||
/* This function is in the X11/xf86 namespace for historical reasons */
|
||||
/* and in no way depends on that windowing system. */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* Arithmetic computations (specification). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2008 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, */
|
||||
@@ -165,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 ) ) )
|
||||
|
||||
@@ -240,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
|
||||
|
||||
|
||||
@@ -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 ) && \
|
||||
|
||||
@@ -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
|
||||
@@ -205,6 +206,45 @@ FT_BEGIN_HEADER
|
||||
|
||||
} 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 )
|
||||
@@ -765,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 */
|
||||
@@ -795,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;
|
||||
|
||||
|
||||
@@ -866,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
|
||||
|
||||
|
||||
@@ -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 */
|
||||
@@ -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
|
||||
|
||||
@@ -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 )
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -360,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 );
|
||||
|
||||
@@ -533,8 +533,6 @@ FT_BEGIN_HEADER
|
||||
/* */
|
||||
/* max_contours :: Maximal number of contours in builder outline. */
|
||||
/* */
|
||||
/* last :: The last point position. */
|
||||
/* */
|
||||
/* pos_x :: The horizontal translation (if composite glyph). */
|
||||
/* */
|
||||
/* pos_y :: The vertical translation (if composite glyph). */
|
||||
@@ -567,8 +565,6 @@ FT_BEGIN_HEADER
|
||||
FT_Outline* base;
|
||||
FT_Outline* current;
|
||||
|
||||
FT_Vector last;
|
||||
|
||||
FT_Pos pos_x;
|
||||
FT_Pos pos_y;
|
||||
|
||||
@@ -579,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;
|
||||
|
||||
@@ -694,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;
|
||||
|
||||
|
||||
@@ -758,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;
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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 */
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
|
||||
@@ -46,6 +46,31 @@ FT_BEGIN_HEADER
|
||||
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 */
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
|
||||
@@ -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 */
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
|
||||
@@ -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 */
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
|
||||
@@ -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 */
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
|
||||
@@ -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 */
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
|
||||
@@ -53,6 +53,33 @@ FT_BEGIN_HEADER
|
||||
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 */
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
|
||||
@@ -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 */
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* svsttcmap.h */
|
||||
/* svttcmap.h */
|
||||
/* */
|
||||
/* The FreeType TrueType/sfnt cmap extra information service. */
|
||||
/* */
|
||||
@@ -74,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 */
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
|
||||
@@ -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 */
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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. */
|
||||
/* */
|
||||
@@ -230,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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user