update to freetype-2.1.10
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14097 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
+49
-2
@@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* FreeType internal cache interface (specification). */
|
||||
/* */
|
||||
/* Copyright 2000-2001, 2002, 2003, 2004 by */
|
||||
/* Copyright 2000-2001, 2002, 2003, 2004, 2005 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@@ -248,7 +248,8 @@ FT_BEGIN_HEADER
|
||||
error = FTC_Cache_NewNode( _cache, _hash, query, &_node ); \
|
||||
\
|
||||
_Ok: \
|
||||
*(FTC_Node*)&(node) = _node; \
|
||||
_pnode = (FTC_Node*)(void*)&(node); \
|
||||
*_pnode = _node; \
|
||||
FT_END_STMNT
|
||||
|
||||
#else /* !FTC_INLINE */
|
||||
@@ -261,6 +262,52 @@ FT_BEGIN_HEADER
|
||||
|
||||
#endif /* !FTC_INLINE */
|
||||
|
||||
|
||||
/*
|
||||
* This macro, together with FTC_CACHE_TRYLOOP_END, defines a retry
|
||||
* loop to flush the cache repeatedly in case of memory overflows.
|
||||
*
|
||||
* It is used when creating a new cache node, or within a lookup
|
||||
* that needs to allocate data (e.g., the sbit cache lookup).
|
||||
*
|
||||
* Example:
|
||||
*
|
||||
* {
|
||||
* FTC_CACHE_TRYLOOP( cache )
|
||||
* error = load_data( ... );
|
||||
* FTC_CACHE_TRYLOOP_END()
|
||||
* }
|
||||
*
|
||||
*/
|
||||
#define FTC_CACHE_TRYLOOP( cache ) \
|
||||
{ \
|
||||
FTC_Manager _try_manager = FTC_CACHE( cache )->manager; \
|
||||
FT_UInt _try_count = 4; \
|
||||
\
|
||||
\
|
||||
for (;;) \
|
||||
{ \
|
||||
FT_UInt _try_done;
|
||||
|
||||
|
||||
#define FTC_CACHE_TRYLOOP_END() \
|
||||
if ( !error || error != FT_Err_Out_Of_Memory ) \
|
||||
break; \
|
||||
\
|
||||
_try_done = FTC_Manager_FlushN( _try_manager, _try_count ); \
|
||||
if ( _try_done == 0 ) \
|
||||
break; \
|
||||
\
|
||||
if ( _try_done == _try_count ) \
|
||||
{ \
|
||||
_try_count *= 2; \
|
||||
if ( _try_count < _try_done || \
|
||||
_try_count > _try_manager->num_nodes ) \
|
||||
_try_count = _try_manager->num_nodes; \
|
||||
} \
|
||||
} \
|
||||
}
|
||||
|
||||
/* */
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
+19
-1
@@ -238,7 +238,7 @@ FT_BEGIN_HEADER
|
||||
#define FTC_CACHE__GCACHE_CLASS( x ) \
|
||||
FTC_GCACHE_CLASS( FTC_CACHE(x)->org_class )
|
||||
#define FTC_CACHE__FAMILY_CLASS( x ) \
|
||||
((FTC_MruListClass) FTC_CACHE__GCACHE_CLASS(x)->family_class)
|
||||
( (FTC_MruListClass)FTC_CACHE__GCACHE_CLASS( x )->family_class )
|
||||
|
||||
|
||||
/* convenience function; use it instead of FTC_Manager_Register_Cache */
|
||||
@@ -255,6 +255,14 @@ FT_BEGIN_HEADER
|
||||
FTC_Node *anode );
|
||||
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
#define FTC_FAMILY_FREE( family, cache ) \
|
||||
FTC_MruList_Remove( &FTC_GCACHE((cache))->families, \
|
||||
(FTC_MruNode)(family) )
|
||||
|
||||
|
||||
#ifdef FTC_INLINE
|
||||
|
||||
#define FTC_GCACHE_LOOKUP_CMP( cache, famcmp, nodecmp, hash, \
|
||||
@@ -270,7 +278,17 @@ FT_BEGIN_HEADER
|
||||
FTC_MRULIST_LOOKUP_CMP( &_gcache->families, _gquery, _fcompare, \
|
||||
_gquery->family, error ); \
|
||||
if ( !error ) \
|
||||
{ \
|
||||
FTC_Family _gqfamily = _gquery->family; \
|
||||
\
|
||||
\
|
||||
_gqfamily->num_nodes++; \
|
||||
\
|
||||
FTC_CACHE_LOOKUP_CMP( cache, nodecmp, hash, query, node, error ); \
|
||||
\
|
||||
if ( --_gqfamily->num_nodes == 0 ) \
|
||||
FTC_FAMILY_FREE( _gqfamily, _gcache ); \
|
||||
} \
|
||||
FT_END_STMNT
|
||||
/* */
|
||||
|
||||
|
||||
+33
-32
@@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* Simple MRU list-cache (specification). */
|
||||
/* */
|
||||
/* Copyright 2000-2001, 2003, 2004 by */
|
||||
/* Copyright 2000-2001, 2003, 2004, 2005 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@@ -86,7 +86,7 @@ FT_BEGIN_HEADER
|
||||
typedef struct FTC_MruListClassRec_ const * FTC_MruListClass;
|
||||
|
||||
|
||||
typedef FT_Int
|
||||
typedef FT_Bool
|
||||
(*FTC_MruNode_CompareFunc)( FTC_MruNode node,
|
||||
FT_Pointer key );
|
||||
|
||||
@@ -154,7 +154,7 @@ FT_BEGIN_HEADER
|
||||
FTC_MruList_Lookup( FTC_MruList list,
|
||||
FT_Pointer key,
|
||||
FTC_MruNode *pnode );
|
||||
|
||||
|
||||
|
||||
FT_EXPORT( void )
|
||||
FTC_MruList_Remove( FTC_MruList list,
|
||||
@@ -172,34 +172,35 @@ FT_BEGIN_HEADER
|
||||
FT_BEGIN_STMNT \
|
||||
FTC_MruNode* _pfirst = &(list)->nodes; \
|
||||
FTC_MruNode_CompareFunc _compare = (FTC_MruNode_CompareFunc)(compare); \
|
||||
FTC_MruNode _first, _node; \
|
||||
\
|
||||
\
|
||||
error = 0; \
|
||||
_first = *(_pfirst); \
|
||||
_node = NULL; \
|
||||
\
|
||||
if ( _first ) \
|
||||
{ \
|
||||
_node = _first; \
|
||||
do \
|
||||
{ \
|
||||
if ( _compare( _node, (key) ) ) \
|
||||
{ \
|
||||
if ( _node != _first ) \
|
||||
FTC_MruNode_Up( _pfirst, _node ); \
|
||||
\
|
||||
*(FTC_MruNode*)&(node) = _node; \
|
||||
goto _MruOk; \
|
||||
} \
|
||||
_node = _node->next; \
|
||||
\
|
||||
} while ( _node != _first) ; \
|
||||
} \
|
||||
\
|
||||
error = FTC_MruList_New( (list), (key), (FTC_MruNode*)&(node) ); \
|
||||
_MruOk: \
|
||||
; \
|
||||
FTC_MruNode _first, _node, *_pnode; \
|
||||
\
|
||||
\
|
||||
error = 0; \
|
||||
_first = *(_pfirst); \
|
||||
_node = NULL; \
|
||||
\
|
||||
if ( _first ) \
|
||||
{ \
|
||||
_node = _first; \
|
||||
do \
|
||||
{ \
|
||||
if ( _compare( _node, (key) ) ) \
|
||||
{ \
|
||||
if ( _node != _first ) \
|
||||
FTC_MruNode_Up( _pfirst, _node ); \
|
||||
\
|
||||
_pnode = (FTC_MruNode*)(void*)&(node); \
|
||||
*_pnode = _node; \
|
||||
goto _MruOk; \
|
||||
} \
|
||||
_node = _node->next; \
|
||||
\
|
||||
} while ( _node != _first) ; \
|
||||
} \
|
||||
\
|
||||
error = FTC_MruList_New( (list), (key), (FTC_MruNode*)(void*)&(node) ); \
|
||||
_MruOk: \
|
||||
; \
|
||||
FT_END_STMNT
|
||||
|
||||
#define FTC_MRULIST_LOOKUP( list, key, node, error ) \
|
||||
@@ -208,7 +209,7 @@ FT_BEGIN_HEADER
|
||||
#else /* !FTC_INLINE */
|
||||
|
||||
#define FTC_MRULIST_LOOKUP( list, key, node, error ) \
|
||||
error = FTC_MruList_Lookup( (list), (key), (FTC_MruNode*)&(node) )
|
||||
error = FTC_MruList_Lookup( (list), (key), (FTC_MruNode*)&(node) )
|
||||
|
||||
#endif /* !FTC_INLINE */
|
||||
|
||||
|
||||
@@ -72,20 +72,23 @@ FT_BEGIN_HEADER
|
||||
|
||||
|
||||
/* The size of an `int' type. */
|
||||
#if FT_UINT_MAX == 0xFFFFFFFFUL
|
||||
#define FT_SIZEOF_INT (32 / FT_CHAR_BIT)
|
||||
#elif FT_UINT_MAX == 0xFFFFU
|
||||
#if FT_UINT_MAX == 0xFFFFUL
|
||||
#define FT_SIZEOF_INT (16 / FT_CHAR_BIT)
|
||||
#elif FT_UINT_MAX > 0xFFFFFFFFU && FT_UINT_MAX == 0xFFFFFFFFFFFFFFFFU
|
||||
#elif FT_UINT_MAX == 0xFFFFFFFFUL
|
||||
#define FT_SIZEOF_INT (32 / FT_CHAR_BIT)
|
||||
#elif FT_UINT_MAX > 0xFFFFFFFFUL && FT_UINT_MAX == 0xFFFFFFFFFFFFFFFFUL
|
||||
#define FT_SIZEOF_INT (64 / FT_CHAR_BIT)
|
||||
#else
|
||||
#error "Unsupported size of `int' type!"
|
||||
#endif
|
||||
|
||||
/* The size of a `long' type. */
|
||||
#if FT_ULONG_MAX == 0xFFFFFFFFUL
|
||||
/* The size of a `long' type. A five-byte `long' (as used e.g. on the */
|
||||
/* DM642) is recognized but avoided. */
|
||||
#if FT_ULONG_MAX == 0xFFFFFFFFUL
|
||||
#define FT_SIZEOF_LONG (32 / FT_CHAR_BIT)
|
||||
#elif FT_ULONG_MAX > 0xFFFFFFFFU && FT_ULONG_MAX == 0xFFFFFFFFFFFFFFFFU
|
||||
#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFUL
|
||||
#define FT_SIZEOF_LONG (32 / FT_CHAR_BIT)
|
||||
#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFFFFFFFUL
|
||||
#define FT_SIZEOF_LONG (64 / FT_CHAR_BIT)
|
||||
#else
|
||||
#error "Unsupported size of `long' type!"
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
#ifndef __FT_HEADER_H__
|
||||
#define __FT_HEADER_H__
|
||||
|
||||
|
||||
/*@***********************************************************************/
|
||||
/* */
|
||||
/* <Macro> */
|
||||
@@ -92,6 +93,7 @@
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/* configuration files */
|
||||
|
||||
/*************************************************************************/
|
||||
@@ -362,6 +364,7 @@
|
||||
/* */
|
||||
#define FT_BDF_H <freetype/ftbdf.h>
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* @macro: */
|
||||
@@ -410,6 +413,18 @@
|
||||
#define FT_GLYPH_H <freetype/ftglyph.h>
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* @macro: */
|
||||
/* FT_BITMAP_H */
|
||||
/* */
|
||||
/* @description: */
|
||||
/* A macro used in #include statements to name the file containing */
|
||||
/* the API of the optional bitmap conversion component. */
|
||||
/* */
|
||||
#define FT_BITMAP_H <freetype/ftbitmap.h>
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* @macro: */
|
||||
@@ -529,6 +544,20 @@
|
||||
/* */
|
||||
#define FT_SFNT_NAMES_H <freetype/ftsnames.h>
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* @macro: */
|
||||
/* FT_OPENTYPE_VALIDATE_H */
|
||||
/* */
|
||||
/* @description: */
|
||||
/* A macro used in #include statements to name the file containing */
|
||||
/* the optional FreeType 2 API used to validate OpenType tables */
|
||||
/* (BASE, GDEF, GPOS, GSUB, JSTF). */
|
||||
/* */
|
||||
#define FT_OPENTYPE_VALIDATE_H <freetype/ftotval.h>
|
||||
|
||||
|
||||
/* */
|
||||
|
||||
#define FT_TRIGONOMETRY_H <freetype/fttrigon.h>
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
FT_USE_MODULE(autohint_module_class)
|
||||
FT_USE_MODULE(autofit_module_class)
|
||||
FT_USE_MODULE(tt_driver_class)
|
||||
FT_USE_MODULE(t1_driver_class)
|
||||
FT_USE_MODULE(cff_driver_class)
|
||||
FT_USE_MODULE(t1cid_driver_class)
|
||||
FT_USE_MODULE(pfr_driver_class)
|
||||
FT_USE_MODULE(t42_driver_class)
|
||||
FT_USE_MODULE(winfnt_driver_class)
|
||||
FT_USE_MODULE(pcf_driver_class)
|
||||
FT_USE_MODULE(bdf_driver_class)
|
||||
FT_USE_MODULE(psaux_module_class)
|
||||
FT_USE_MODULE(psnames_module_class)
|
||||
FT_USE_MODULE(pshinter_module_class)
|
||||
@@ -11,9 +15,5 @@ FT_USE_MODULE(sfnt_module_class)
|
||||
FT_USE_MODULE(ft_smooth_renderer_class)
|
||||
FT_USE_MODULE(ft_smooth_lcd_renderer_class)
|
||||
FT_USE_MODULE(ft_smooth_lcdv_renderer_class)
|
||||
FT_USE_MODULE(tt_driver_class)
|
||||
FT_USE_MODULE(t1_driver_class)
|
||||
FT_USE_MODULE(t42_driver_class)
|
||||
FT_USE_MODULE(pfr_driver_class)
|
||||
FT_USE_MODULE(winfnt_driver_class)
|
||||
|
||||
FT_USE_MODULE(otv_module_class)
|
||||
FT_USE_MODULE(bdf_driver_class)
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* User-selectable configuration macros (specification only). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004 by */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@@ -436,7 +436,7 @@ FT_BEGIN_HEADER
|
||||
/* Do not #undef this macro here, since the build system might */
|
||||
/* define it for certain configurations only. */
|
||||
/* */
|
||||
/* #define TT_CONFIG_OPTION_BYTECODE_INTERPRETER */
|
||||
/* #define TT_CONFIG_OPTION_BYTECODE_INTERPRETER */
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
@@ -446,7 +446,7 @@ FT_BEGIN_HEADER
|
||||
/* work-around hinting system. Note that for the moment, the algorithm */
|
||||
/* is only used when selected at runtime through the parameter tag */
|
||||
/* FT_PARAM_TAG_UNPATENTED_HINTING; or when the debug hook */
|
||||
/* FT_DEBUG_HOOK_UNPATENTED_HINTING is globally actived */
|
||||
/* FT_DEBUG_HOOK_UNPATENTED_HINTING is globally activated. */
|
||||
/* */
|
||||
#define TT_CONFIG_OPTION_UNPATENTED_HINTING
|
||||
|
||||
@@ -483,6 +483,16 @@ FT_BEGIN_HEADER
|
||||
#undef TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* Define TT_CONFIG_OPTION_GX_VAR_SUPPORT if you want to include */
|
||||
/* support for Apple's distortable font technology (fvar, gvar, cvar, */
|
||||
/* and avar tables). This has many similarities to Type 1 Multiple */
|
||||
/* Masters support. */
|
||||
/* */
|
||||
#define TT_CONFIG_OPTION_GX_VAR_SUPPORT
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/**** ****/
|
||||
@@ -540,23 +550,11 @@ FT_BEGIN_HEADER
|
||||
/* */
|
||||
|
||||
/*
|
||||
* The FT_CONFIG_OPTION_CHESTER_XXXX macros are used to toggle some recent
|
||||
* improvements to the auto-hinter contributed by David Chester. They will
|
||||
* most likely disappear completely in the next release. For now, you
|
||||
* should always keep them defined.
|
||||
* This temporary macro is used to control various optimizations for
|
||||
* reducing the heap footprint of memory-mapped TrueType files.
|
||||
*
|
||||
*/
|
||||
#define FT_CONFIG_OPTION_CHESTER_HINTS
|
||||
|
||||
#ifdef FT_CONFIG_OPTION_CHESTER_HINTS
|
||||
|
||||
#define FT_CONFIG_CHESTER_SMALL_F
|
||||
#define FT_CONFIG_CHESTER_ASCENDER
|
||||
#define FT_CONFIG_CHESTER_SERIF
|
||||
#define FT_CONFIG_CHESTER_STEM
|
||||
#define FT_CONFIG_CHESTER_BLUE_SCALE
|
||||
|
||||
#endif /* FT_CONFIG_OPTION_CHESTER_HINTS */
|
||||
/* #define FT_OPTIMIZE_MEMORY */
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
|
||||
@@ -33,6 +33,11 @@
|
||||
#define __FTSTDLIB_H__
|
||||
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
#define ft_ptrdiff_t ptrdiff_t
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
/* */
|
||||
/* integer limits */
|
||||
@@ -61,6 +66,7 @@
|
||||
#include <limits.h>
|
||||
|
||||
#define FT_UINT_MAX UINT_MAX
|
||||
#define FT_INT_MAX INT_MAX
|
||||
#define FT_ULONG_MAX ULONG_MAX
|
||||
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* FreeType high-level API and common types (specification only). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004 by */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@@ -44,7 +44,7 @@
|
||||
/* */
|
||||
#define FREETYPE_MAJOR 2
|
||||
#define FREETYPE_MINOR 1
|
||||
#define FREETYPE_PATCH 8
|
||||
#define FREETYPE_PATCH 10
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
@@ -172,6 +172,7 @@ FT_BEGIN_HEADER
|
||||
/* FT_CharMapRec */
|
||||
/* FT_Select_Charmap */
|
||||
/* FT_Set_Charmap */
|
||||
/* FT_Get_Charmap_Index */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
@@ -188,34 +189,42 @@ FT_BEGIN_HEADER
|
||||
/* instead. */
|
||||
/* */
|
||||
/* <Fields> */
|
||||
/* width :: The glyph's width. */
|
||||
/* width :: */
|
||||
/* The glyph's width. */
|
||||
/* */
|
||||
/* height :: The glyph's height. */
|
||||
/* height :: */
|
||||
/* The glyph's height. */
|
||||
/* */
|
||||
/* horiBearingX :: Horizontal left side bearing. */
|
||||
/* horiBearingX :: */
|
||||
/* Left side bearing for horizontal layout. */
|
||||
/* */
|
||||
/* horiBearingY :: Horizontal top side bearing. */
|
||||
/* horiBearingY :: */
|
||||
/* Top side bearing for horizontal layout. */
|
||||
/* */
|
||||
/* horiAdvance :: Horizontal advance width. */
|
||||
/* horiAdvance :: */
|
||||
/* Advance width for horizontal layout. */
|
||||
/* */
|
||||
/* vertBearingX :: Vertical left side bearing. */
|
||||
/* vertBearingX :: */
|
||||
/* Left side bearing for vertical layout. */
|
||||
/* */
|
||||
/* vertBearingY :: Vertical top side bearing. */
|
||||
/* vertBearingY :: */
|
||||
/* Top side bearing for vertical layout. */
|
||||
/* */
|
||||
/* vertAdvance :: Vertical advance height. */
|
||||
/* vertAdvance :: */
|
||||
/* Advance height for vertical layout. */
|
||||
/* */
|
||||
typedef struct FT_Glyph_Metrics_
|
||||
{
|
||||
FT_Pos width; /* glyph width */
|
||||
FT_Pos height; /* glyph height */
|
||||
FT_Pos width;
|
||||
FT_Pos height;
|
||||
|
||||
FT_Pos horiBearingX; /* left side bearing in horizontal layouts */
|
||||
FT_Pos horiBearingY; /* top side bearing in horizontal layouts */
|
||||
FT_Pos horiAdvance; /* advance width for horizontal layout */
|
||||
FT_Pos horiBearingX;
|
||||
FT_Pos horiBearingY;
|
||||
FT_Pos horiAdvance;
|
||||
|
||||
FT_Pos vertBearingX; /* left side bearing in vertical layouts */
|
||||
FT_Pos vertBearingY; /* top side bearing in vertical layouts */
|
||||
FT_Pos vertAdvance; /* advance height for vertical layout */
|
||||
FT_Pos vertBearingX;
|
||||
FT_Pos vertBearingY;
|
||||
FT_Pos vertAdvance;
|
||||
|
||||
} FT_Glyph_Metrics;
|
||||
|
||||
@@ -249,6 +258,7 @@ FT_BEGIN_HEADER
|
||||
/* x_ppem :: The horizontal ppem value (in 26.6 fractional format). */
|
||||
/* */
|
||||
/* y_ppem :: The vertical ppem value (in 26.6 fractional format). */
|
||||
/* Usually, this is the `nominal' pixel height of the font. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* The values in this structure are taken from the bitmap font. If */
|
||||
@@ -262,10 +272,10 @@ FT_BEGIN_HEADER
|
||||
/* where `size' is in points. */
|
||||
/* */
|
||||
/* Windows FNT: */
|
||||
/* The `size', `x_ppem', and `y_ppem' parameters are not reliable: */
|
||||
/* There exist fonts (e.g. app850.fon) which have a wrong size for */
|
||||
/* some subfonts; since FNT files don't contain ppem but dpi values */
|
||||
/* the computed x_ppem and y_ppem numbers are thus wrong also. */
|
||||
/* The `size' parameter is not reliable: There exist fonts (e.g., */
|
||||
/* app850.fon) which have a wrong size for some subfonts; x_ppem */
|
||||
/* and y_ppem are thus set equal to pixel width and height given in */
|
||||
/* in the Windows FNT header. */
|
||||
/* */
|
||||
/* TrueType embedded bitmaps: */
|
||||
/* `size', `width', and `height' values are not contained in the */
|
||||
@@ -1459,6 +1469,14 @@ FT_BEGIN_HEADER
|
||||
/* Note that the app will need to know about the */
|
||||
/* image format. */
|
||||
/* */
|
||||
/* lsb_delta :: The difference between hinted and unhinted */
|
||||
/* left side bearing while autohinting is */
|
||||
/* active. Zero otherwise. */
|
||||
/* */
|
||||
/* rsb_delta :: The difference between hinted and unhinted */
|
||||
/* right side bearing while autohinting is */
|
||||
/* active. Zero otherwise. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* If @FT_Load_Glyph is called with default flags (see */
|
||||
/* @FT_LOAD_DEFAULT) the glyph image is loaded in the glyph slot in */
|
||||
@@ -1478,6 +1496,34 @@ FT_BEGIN_HEADER
|
||||
/* position (e.g. coordinates [0,0] on the baseline). Of course, */
|
||||
/* `slot->format' is also changed to `FT_GLYPH_FORMAT_BITMAP' . */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* Here a small pseudo code fragment which shows how to use */
|
||||
/* `lsb_delta' and `rsb_delta': */
|
||||
/* */
|
||||
/* { */
|
||||
/* FT_Pos origin_x = 0; */
|
||||
/* FT_Pos prev_rsb_delta = 0; */
|
||||
/* */
|
||||
/* */
|
||||
/* for all glyphs do */
|
||||
/* <compute kern between current and previous glyph and add it to */
|
||||
/* `origin_x'> */
|
||||
/* */
|
||||
/* <load glyph with `FT_Load_Glyph'> */
|
||||
/* */
|
||||
/* if ( prev_rsb_delta - face->glyph->lsb_delta >= 32 ) */
|
||||
/* origin_x -= 64; */
|
||||
/* else if ( prev_rsb_delta - face->glyph->lsb_delta < -32 ) */
|
||||
/* origin_x += 64; */
|
||||
/* */
|
||||
/* prev_rsb_delta = face->glyph->rsb_delta; */
|
||||
/* */
|
||||
/* <save glyph image, or render glyph, or ...> */
|
||||
/* */
|
||||
/* origin_x += face->glyph->advance.x; */
|
||||
/* endfor */
|
||||
/* } */
|
||||
/* */
|
||||
typedef struct FT_GlyphSlotRec_
|
||||
{
|
||||
FT_Library library;
|
||||
@@ -1505,6 +1551,9 @@ FT_BEGIN_HEADER
|
||||
void* control_data;
|
||||
long control_len;
|
||||
|
||||
FT_Pos lsb_delta;
|
||||
FT_Pos rsb_delta;
|
||||
|
||||
void* other;
|
||||
|
||||
FT_Slot_Internal internal;
|
||||
@@ -1863,8 +1912,8 @@ FT_BEGIN_HEADER
|
||||
/* @FT_Open_Face can be used to determine and/or check the font */
|
||||
/* format of a given font resource. If the `face_index' field is */
|
||||
/* negative, the function will _not_ return any face handle in */
|
||||
/* `*face'; the return value is 0 if the font format is recognized, */
|
||||
/* or non-zero otherwise. */
|
||||
/* `*aface'; the function's return value is 0 if the font format is */
|
||||
/* recognized, or non-zero otherwise. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Open_Face( FT_Library library,
|
||||
@@ -1992,8 +2041,9 @@ FT_BEGIN_HEADER
|
||||
/* FreeType error code. 0 means success. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* When dealing with fixed-size faces (i.e., non-scalable formats), */
|
||||
/* @FT_Set_Pixel_Sizes provides a more convenient interface. */
|
||||
/* For BDF and PCF formats, this function uses the `PIXEL_SIZE' */
|
||||
/* property of the bitmap font; the `char_width' parameter is */
|
||||
/* ignored. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Set_Char_Size( FT_Face face,
|
||||
@@ -2046,6 +2096,9 @@ FT_BEGIN_HEADER
|
||||
/* which contain a single bitmap strike only (BDF, PCF, FNT) ignore */
|
||||
/* `pixel_width'. */
|
||||
/* */
|
||||
/* For BDF and PCF formats, this function uses the sum of the */
|
||||
/* `FONT_ASCENT' and `FONT_DESCENT' properties of the bitmap font. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Set_Pixel_Sizes( FT_Face face,
|
||||
FT_UInt pixel_width,
|
||||
@@ -2223,9 +2276,11 @@ FT_BEGIN_HEADER
|
||||
*
|
||||
* FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH ::
|
||||
* Indicates that the glyph loader should ignore the global advance
|
||||
* width defined in the font. As far as we know, this is only used by
|
||||
* the X-TrueType font server, in order to deal correctly with the
|
||||
* incorrect metrics contained in DynaLab's TrueType CJK fonts.
|
||||
* width defined in the font. For historical reasons (to support
|
||||
* buggy CJK fonts), FreeType uses the value of the `advanceWidthMax'
|
||||
* field in the `htmx' table for all glyphs if the font is monospaced.
|
||||
* Activating this flags makes FreeType use the metric values given in
|
||||
* the `htmx' table.
|
||||
*
|
||||
* FT_LOAD_NO_RECURSE ::
|
||||
* This flag is only used internally. It merely indicates that the
|
||||
@@ -2315,8 +2370,8 @@ FT_BEGIN_HEADER
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A function used to set the transformation that is applied to glyph */
|
||||
/* images just before they are converted to bitmaps in a glyph slot */
|
||||
/* when @FT_Render_Glyph is called. */
|
||||
/* images when they are loaded into a glyph slot through */
|
||||
/* @FT_Load_Glyph. */
|
||||
/* */
|
||||
/* <InOut> */
|
||||
/* face :: A handle to the source face object. */
|
||||
@@ -2530,9 +2585,9 @@ FT_BEGIN_HEADER
|
||||
/* kerning vector. */
|
||||
/* */
|
||||
/* <Output> */
|
||||
/* akerning :: The kerning vector. This is in font units for */
|
||||
/* scalable formats, and in pixels for fixed-sizes */
|
||||
/* formats. */
|
||||
/* akerning :: The kerning vector. This is either in font units */
|
||||
/* or in pixels (26.6 format) for scalable formats, */
|
||||
/* and in pixels for fixed-sizes formats. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0 means success. */
|
||||
@@ -2601,13 +2656,13 @@ FT_BEGIN_HEADER
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Retrieves the ASCII Postscript name of a given face, if available. */
|
||||
/* This should only work with Postscript and TrueType fonts. */
|
||||
/* This only works with Postscript and TrueType fonts. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* face :: A handle to the source face object. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* A pointer to the face's Postscript name. NULL if un-available. */
|
||||
/* A pointer to the face's Postscript name. NULL if unavailable. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* The returned pointer is owned by the face and will be destroyed */
|
||||
@@ -2672,6 +2727,25 @@ FT_BEGIN_HEADER
|
||||
FT_CharMap charmap );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* @function: */
|
||||
/* FT_Get_Charmap_Index */
|
||||
/* */
|
||||
/* @description: */
|
||||
/* Retrieve index of a given charmap. */
|
||||
/* */
|
||||
/* @input: */
|
||||
/* charmap :: A handle to a charmap. */
|
||||
/* */
|
||||
/* @return: */
|
||||
/* The index into the array of character maps within the face to */
|
||||
/* which `charmap' belongs. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Int )
|
||||
FT_Get_Charmap_Index( FT_CharMap charmap );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
@@ -2815,7 +2889,7 @@ FT_BEGIN_HEADER
|
||||
/* Computations */
|
||||
/* */
|
||||
/* <Abstract> */
|
||||
/* Crunching fixed numbers and vectors */
|
||||
/* Crunching fixed numbers and vectors. */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* This section contains various functions used to perform */
|
||||
@@ -3000,8 +3074,8 @@ FT_BEGIN_HEADER
|
||||
/* The result is undefined if either `vector' or `matrix' is invalid. */
|
||||
/* */
|
||||
FT_EXPORT( void )
|
||||
FT_Vector_Transform( FT_Vector* vec,
|
||||
FT_Matrix* matrix );
|
||||
FT_Vector_Transform( FT_Vector* vec,
|
||||
const FT_Matrix* matrix );
|
||||
|
||||
|
||||
/* */
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* FreeType API for accessing BDF-specific strings (specification). */
|
||||
/* */
|
||||
/* Copyright 2002, 2003 by */
|
||||
/* Copyright 2002, 2003, 2004 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@@ -38,13 +38,13 @@ FT_BEGIN_HEADER
|
||||
/* bdf_fonts */
|
||||
/* */
|
||||
/* <Title> */
|
||||
/* BDF Fonts */
|
||||
/* BDF Files */
|
||||
/* */
|
||||
/* <Abstract> */
|
||||
/* BDF-specific APIs */
|
||||
/* BDF specific API. */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* This section contains the declaration of BDF-specific functions. */
|
||||
/* This section contains the declaration of BDF specific functions. */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
@@ -0,0 +1,206 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftbitmap.h */
|
||||
/* */
|
||||
/* FreeType utility functions for converting 1bpp, 2bpp, 4bpp, and 8bpp */
|
||||
/* bitmaps into 8bpp format (specification). */
|
||||
/* */
|
||||
/* Copyright 2004, 2005 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#ifndef __FTBITMAP_H__
|
||||
#define __FTBITMAP_H__
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
#error "Please fix the directory search order for header files"
|
||||
#error "so that freetype.h of FreeType 2 is found first."
|
||||
#endif
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Section> */
|
||||
/* bitmap_handling */
|
||||
/* */
|
||||
/* <Title> */
|
||||
/* Bitmap Handling */
|
||||
/* */
|
||||
/* <Abstract> */
|
||||
/* Handling FT_Bitmap objects. */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* This section contains functions for converting FT_Bitmap objects. */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Bitmap_New */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Initialize a pointer to an FT_Bitmap structure. */
|
||||
/* */
|
||||
/* <InOut> */
|
||||
/* abitmap :: A pointer to the bitmap structure. */
|
||||
/* */
|
||||
FT_EXPORT( void )
|
||||
FT_Bitmap_New( FT_Bitmap *abitmap );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Bitmap_Copy */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Copies an bitmap into another one. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* library :: A handle to a library object. */
|
||||
/* */
|
||||
/* source :: A handle to the source bitmap. */
|
||||
/* */
|
||||
/* <Output> */
|
||||
/* target :: A handle to the target bitmap. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0 means success. */
|
||||
/* */
|
||||
FT_EXPORT_DEF( FT_Error )
|
||||
FT_Bitmap_Copy( FT_Library library,
|
||||
const FT_Bitmap *source,
|
||||
FT_Bitmap *target);
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Bitmap_Embolden */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Embolden a bitmap. The new bitmap will be about `xStrength' */
|
||||
/* pixels wider and `yStrength' pixels higher. The left and bottom */
|
||||
/* borders are kept unchanged. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* library :: A handle to a library object. */
|
||||
/* */
|
||||
/* xStrength :: How strong the glyph is emboldened horizontally. */
|
||||
/* Expressed in 26.6 pixel format. */
|
||||
/* */
|
||||
/* yStrength :: How strong the glyph is emboldened vertically. */
|
||||
/* Expressed in 26.6 pixel format. */
|
||||
/* */
|
||||
/* <InOut> */
|
||||
/* bitmap :: A handle to the target bitmap. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0 means success. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* The current implementation restricts `xStrength' to be less than */
|
||||
/* or equal to 8 if bitmap is of pixel_mode @FT_PIXEL_MODE_MONO. */
|
||||
/* */
|
||||
/* Don't embolden the bitmap owned by a @FT_GlyphSlot directly! Call */
|
||||
/* @FT_Bitmap_Copy to get a copy and work on the copy instead. */
|
||||
/* */
|
||||
FT_EXPORT_DEF( FT_Error )
|
||||
FT_Bitmap_Embolden( FT_Library library,
|
||||
FT_Bitmap* bitmap,
|
||||
FT_Pos xStrength,
|
||||
FT_Pos yStrength );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Bitmap_Convert */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Convert a bitmap object with depth 1bpp, 2bpp, 4bpp, or 8bpp to a */
|
||||
/* bitmap object with depth 8bpp, making the number of used bytes per */
|
||||
/* line (a.k.a. the `pitch') a multiple of `alignment'. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* library :: A handle to a library object. */
|
||||
/* */
|
||||
/* source :: The source bitmap. */
|
||||
/* */
|
||||
/* alignment :: The pitch of the bitmap is a multiple of this */
|
||||
/* parameter. Common values are 1, 2, or 4. */
|
||||
/* */
|
||||
/* <Output> */
|
||||
/* target :: The target bitmap. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0 means success. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* It is possible to call @FT_Bitmap_Convert multiple times without */
|
||||
/* calling @FT_Bitmap_Done (the memory is simply reallocated). */
|
||||
/* */
|
||||
/* Use @FT_Bitmap_Done to finally remove the bitmap object. */
|
||||
/* */
|
||||
/* The `library' argument is taken to have access to FreeType's */
|
||||
/* memory handling functions. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Bitmap_Convert( FT_Library library,
|
||||
const FT_Bitmap *source,
|
||||
FT_Bitmap *target,
|
||||
FT_Int alignment );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Bitmap_Done */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Destroy a bitmap object created with @FT_Bitmap_New. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* library :: A handle to a library object. */
|
||||
/* */
|
||||
/* bitmap :: The bitmap object to be freed. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0 means success. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* The `library' argument is taken to have access to FreeType's */
|
||||
/* memory handling functions. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Bitmap_Done( FT_Library library,
|
||||
FT_Bitmap *bitmap );
|
||||
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* __FTBITMAP_H__ */
|
||||
|
||||
|
||||
/* END */
|
||||
@@ -55,7 +55,7 @@ FT_BEGIN_HEADER
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* This section describes the FreeType 2 cache sub-system which is */
|
||||
/* stile in beta. */
|
||||
/* still in beta. */
|
||||
/* */
|
||||
/* <Order> */
|
||||
/* FTC_Manager */
|
||||
@@ -63,11 +63,13 @@ FT_BEGIN_HEADER
|
||||
/* FTC_Face_Requester */
|
||||
/* */
|
||||
/* FTC_Manager_New */
|
||||
/* FTC_Manager_Reset */
|
||||
/* FTC_Manager_Done */
|
||||
/* FTC_Manager_LookupFace */
|
||||
/* FTC_Manager_LookupSize */
|
||||
/* FTC_Manager_RemoveFaceID */
|
||||
/* */
|
||||
/* FTC_Node */
|
||||
/* FTC_Node_Ref */
|
||||
/* FTC_Node_Unref */
|
||||
/* */
|
||||
/* FTC_Font */
|
||||
@@ -80,13 +82,9 @@ FT_BEGIN_HEADER
|
||||
/* FTC_SBitCache_New */
|
||||
/* FTC_SBitCache_Lookup */
|
||||
/* */
|
||||
/* */
|
||||
/* FTC_Image_Desc */
|
||||
/* FTC_Image_Cache */
|
||||
/* FTC_Image_Cache_Lookup */
|
||||
/* */
|
||||
/* FTC_SBit_Cache */
|
||||
/* FTC_SBit_Cache_Lookup */
|
||||
/* FTC_CMapCache */
|
||||
/* FTC_CMapCache_New */
|
||||
/* FTC_CMapCache_Lookup */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
@@ -502,11 +500,6 @@ FT_BEGIN_HEADER
|
||||
FTC_CMapCache *acache );
|
||||
|
||||
|
||||
/* retrieve the index of a given charmap */
|
||||
FT_EXPORT( FT_Int )
|
||||
FT_Get_CharMap_Index( FT_CharMap charmap );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* @function: */
|
||||
@@ -519,9 +512,9 @@ FT_BEGIN_HEADER
|
||||
/* @input: */
|
||||
/* cache :: A charmap cache handle. */
|
||||
/* */
|
||||
/* face_id :: source face id */
|
||||
/* face_id :: The source face ID. */
|
||||
/* */
|
||||
/* cmap_index :: index of charmap in source face */
|
||||
/* cmap_index :: The index of the charmap in the source face. */
|
||||
/* */
|
||||
/* char_code :: The character code (in the corresponding charmap). */
|
||||
/* */
|
||||
|
||||
@@ -1,3 +1,11 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* This file defines the structure of the FreeType reference. */
|
||||
/* It is used by the python script which generates the HTML files. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* <Chapter> */
|
||||
@@ -31,6 +39,8 @@
|
||||
/* sfnt_names */
|
||||
/* bdf_fonts */
|
||||
/* pfr_fonts */
|
||||
/* winfnt_fonts */
|
||||
/* ot_validation */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
@@ -61,9 +71,12 @@
|
||||
/* computations */
|
||||
/* list_processing */
|
||||
/* outline_processing */
|
||||
/* bitmap_handling */
|
||||
/* raster */
|
||||
/* glyph_stroker */
|
||||
/* system_interface */
|
||||
/* module_management */
|
||||
/* gzip */
|
||||
/* lzw */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* FreeType error code handling (specification). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002 by */
|
||||
/* Copyright 1996-2001, 2002, 2004 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@@ -25,17 +25,12 @@
|
||||
/* I - Error Formats */
|
||||
/* ----------------- */
|
||||
/* */
|
||||
/* Since release 2.1, the error constants have changed. The lower */
|
||||
/* byte of the error value gives the "generic" error code, while the */
|
||||
/* higher byte indicates in which module the error occurred. */
|
||||
/* */
|
||||
/* You can use the macro FT_ERROR_BASE(x) macro to extract the generic */
|
||||
/* error code from an FT_Error value. */
|
||||
/* */
|
||||
/* The configuration macro FT_CONFIG_OPTION_USE_MODULE_ERRORS can be */
|
||||
/* undefined in ftoption.h in order to make the higher byte always */
|
||||
/* zero, in case you need to be compatible with previous versions of */
|
||||
/* FreeType 2. */
|
||||
/* defined in ftoption.h in order to make the higher byte indicate */
|
||||
/* the module where the error has happened (this is not compatible */
|
||||
/* with standard builds of FreeType 2). You can then use the macro */
|
||||
/* FT_ERROR_BASE macro to extract the generic error code from an */
|
||||
/* FT_Error value. */
|
||||
/* */
|
||||
/* */
|
||||
/* II - Error Message strings */
|
||||
@@ -158,7 +153,7 @@
|
||||
#define FT_ERRORDEF_( e, v, s ) \
|
||||
FT_ERRORDEF( FT_ERR_CAT( FT_ERR_PREFIX, e ), v + FT_ERR_BASE, s )
|
||||
|
||||
/* this is only used for FT_Err_Ok, which must be 0! */
|
||||
/* this is only used for <module>_Err_Ok, which must be 0! */
|
||||
#define FT_NOERRORDEF_( e, v, s ) \
|
||||
FT_ERRORDEF( FT_ERR_CAT( FT_ERR_PREFIX, e ), v, s )
|
||||
|
||||
@@ -168,7 +163,7 @@
|
||||
#endif
|
||||
|
||||
|
||||
/* no include the error codes */
|
||||
/* now include the error codes */
|
||||
#include FT_ERROR_DEFINITIONS_H
|
||||
|
||||
|
||||
@@ -197,9 +192,13 @@
|
||||
#undef FT_NOERRORDEF_
|
||||
|
||||
#undef FT_NEED_EXTERN_C
|
||||
#undef FT_ERR_PREFIX
|
||||
#undef FT_ERR_BASE
|
||||
#undef FT_ERR_CONCAT
|
||||
#undef FT_ERR_BASE
|
||||
|
||||
/* FT_KEEP_ERR_PREFIX is needed for ftvalid.h */
|
||||
#ifndef FT_KEEP_ERR_PREFIX
|
||||
#undef FT_ERR_PREFIX
|
||||
#endif
|
||||
|
||||
#endif /* __FTERRORS_H__ */
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* Gzip-compressed stream support. */
|
||||
/* */
|
||||
/* Copyright 2002, 2003 by */
|
||||
/* Copyright 2002, 2003, 2004 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@@ -40,7 +40,7 @@ FT_BEGIN_HEADER
|
||||
/* GZIP Streams */
|
||||
/* */
|
||||
/* <Abstract> */
|
||||
/* Using gzip-compressed font files */
|
||||
/* Using gzip-compressed font files. */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* This section contains the declaration of Gzip-specific functions. */
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
/* FreeType glyph image formats and default raster interface */
|
||||
/* (specification). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004 by */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@@ -264,25 +264,19 @@ FT_BEGIN_HEADER
|
||||
/* pixel_mode :: The pixel mode, i.e., how pixel bits are stored. */
|
||||
/* See @FT_Pixel_Mode for possible values. */
|
||||
/* */
|
||||
/* palette_mode :: This field is only used with paletted pixel modes; */
|
||||
/* it indicates how the palette is stored. */
|
||||
/* palette_mode :: This field is intended for paletted pixel modes; */
|
||||
/* it indicates how the palette is stored. Not */
|
||||
/* used currently. */
|
||||
/* */
|
||||
/* palette :: A typeless pointer to the bitmap palette; only */
|
||||
/* used for paletted pixel modes. */
|
||||
/* palette :: A typeless pointer to the bitmap palette; this */
|
||||
/* field is intended for paletted pixel modes. Not */
|
||||
/* used currently. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* For now, the only pixel mode supported by FreeType are mono and */
|
||||
/* For now, the only pixel modes supported by FreeType are mono and */
|
||||
/* grays. However, drivers might be added in the future to support */
|
||||
/* more `colorful' options. */
|
||||
/* */
|
||||
/* When using pixel modes pal2, pal4 and pal8 with a void `palette' */
|
||||
/* field, a gray pixmap with respectively 4, 16, and 256 levels of */
|
||||
/* gray is assumed. This, in order to be compatible with some */
|
||||
/* embedded bitmap formats defined in the TrueType specification. */
|
||||
/* */
|
||||
/* Note that no font was found presenting such embedded bitmaps, so */
|
||||
/* this is currently completely unhandled by the library. */
|
||||
/* */
|
||||
typedef struct FT_Bitmap_
|
||||
{
|
||||
int rows;
|
||||
@@ -772,7 +766,7 @@ FT_BEGIN_HEADER
|
||||
/* raster */
|
||||
/* */
|
||||
/* <Title> */
|
||||
/* Scanline converter */
|
||||
/* Scanline Converter */
|
||||
/* */
|
||||
/* <Abstract> */
|
||||
/* How vectorial outlines are converted into bitmaps and pixmaps. */
|
||||
@@ -1036,8 +1030,8 @@ FT_BEGIN_HEADER
|
||||
/* */
|
||||
typedef struct FT_Raster_Params_
|
||||
{
|
||||
FT_Bitmap* target;
|
||||
void* source;
|
||||
const FT_Bitmap* target;
|
||||
const void* source;
|
||||
int flags;
|
||||
FT_SpanFunc gray_spans;
|
||||
FT_SpanFunc black_spans;
|
||||
|
||||
@@ -40,7 +40,7 @@ FT_BEGIN_HEADER
|
||||
/* LZW Streams */
|
||||
/* */
|
||||
/* <Abstract> */
|
||||
/* Using LZW-compressed font files */
|
||||
/* Using LZW-compressed font files. */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* This section contains the declaration of LZW-specific functions. */
|
||||
|
||||
@@ -41,7 +41,7 @@ FT_BEGIN_HEADER
|
||||
/* mac_specific */
|
||||
/* */
|
||||
/* <Title> */
|
||||
/* Mac-Specific Interface */
|
||||
/* Mac Specific Interface */
|
||||
/* */
|
||||
/* <Abstract> */
|
||||
/* Only available on the Macintosh. */
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* FreeType Multiple Master font interface (specification). */
|
||||
/* */
|
||||
/* Copyright 1996-2001 by */
|
||||
/* Copyright 1996-2001, 2003, 2004 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@@ -43,6 +43,12 @@ FT_BEGIN_HEADER
|
||||
/* Master fonts, i.e. the selection of specific design instances by */
|
||||
/* setting design axis coordinates. */
|
||||
/* */
|
||||
/* George Williams has extended this interface to make it work with */
|
||||
/* both Type 1 Multiple Masters fonts, and GX distortable (var) */
|
||||
/* fonts. Some of these routines only work with MM fonts, others */
|
||||
/* will work with both types. They are similar enough that a */
|
||||
/* consistent interface makes sense. */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
@@ -55,6 +61,8 @@ FT_BEGIN_HEADER
|
||||
/* A simple structure used to model a given axis in design space for */
|
||||
/* Multiple Masters fonts. */
|
||||
/* */
|
||||
/* This structure can't be used for GX var fonts. */
|
||||
/* */
|
||||
/* <Fields> */
|
||||
/* name :: The axis's name. */
|
||||
/* */
|
||||
@@ -80,6 +88,8 @@ FT_BEGIN_HEADER
|
||||
/* A structure used to model the axes and space of a Multiple Masters */
|
||||
/* font. */
|
||||
/* */
|
||||
/* This structure can't be used for GX var fonts. */
|
||||
/* */
|
||||
/* <Fields> */
|
||||
/* num_axis :: Number of axes. Cannot exceed 4. */
|
||||
/* */
|
||||
@@ -98,8 +108,119 @@ FT_BEGIN_HEADER
|
||||
|
||||
} FT_Multi_Master;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* FT_Var_Axis */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A simple structure used to model a given axis in design space for */
|
||||
/* Multiple Masters and GX var fonts. */
|
||||
/* */
|
||||
/* <Fields> */
|
||||
/* name :: The axis's name. */
|
||||
/* Not always meaningful for GX. */
|
||||
/* */
|
||||
/* minimum :: The axis's minimum design coordinate. */
|
||||
/* */
|
||||
/* def :: The axis's default design coordinate. */
|
||||
/* FreeType computes meaningful default values for MM; it */
|
||||
/* is then an integer value, not in 16.16 format. */
|
||||
/* */
|
||||
/* maximum :: The axis's maximum design coordinate. */
|
||||
/* */
|
||||
/* tag :: The axis's tag (the GX equivalent to `name'). */
|
||||
/* FreeType provides default values for MM if possible. */
|
||||
/* */
|
||||
/* strid :: The entry in `name' table (another GX version of */
|
||||
/* `name'). */
|
||||
/* Not meaningful for MM. */
|
||||
/* */
|
||||
typedef struct FT_Var_Axis_
|
||||
{
|
||||
FT_String* name;
|
||||
|
||||
FT_Fixed minimum;
|
||||
FT_Fixed def;
|
||||
FT_Fixed maximum;
|
||||
|
||||
FT_ULong tag;
|
||||
FT_UInt strid;
|
||||
|
||||
} FT_Var_Axis;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* FT_Var_Named_Style */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A simple structure used to model a named style in a GX var font. */
|
||||
/* */
|
||||
/* This structure can't be used for MM fonts. */
|
||||
/* */
|
||||
/* <Fields> */
|
||||
/* coords :: The design coordinates for this style. */
|
||||
/* This is an array with one entry for each axis. */
|
||||
/* */
|
||||
/* strid :: The entry in `name' table identifying this style. */
|
||||
/* */
|
||||
typedef struct FT_Var_Named_Style_
|
||||
{
|
||||
FT_Fixed* coords;
|
||||
FT_UInt strid;
|
||||
|
||||
} FT_Var_Named_Style;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* FT_MM_Var */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A structure used to model the axes and space of a Multiple Masters */
|
||||
/* or GX var distortable font. */
|
||||
/* */
|
||||
/* Some fields are specific to one format and not to the other. */
|
||||
/* */
|
||||
/* <Fields> */
|
||||
/* num_axis :: The number of axes. The maximum value is 4 for */
|
||||
/* MM; no limit in GX. */
|
||||
/* */
|
||||
/* num_designs :: The number of designs; should be normally */
|
||||
/* 2^num_axis for MM fonts. Not meaningful for GX */
|
||||
/* (where every glyph could have a different */
|
||||
/* number of designs). */
|
||||
/* */
|
||||
/* num_namedstyles :: The number of named styles; only meaningful for */
|
||||
/* GX which allows certain design coordinates to */
|
||||
/* have a string ID (in the `name' table) */
|
||||
/* associated with them. The font can tell the */
|
||||
/* user that, for example, Weight=1.5 is `Bold'. */
|
||||
/* */
|
||||
/* axis :: A table of axis descriptors. */
|
||||
/* GX fonts contain slightly more data than MM. */
|
||||
/* */
|
||||
/* namedstyles :: A table of named styles. */
|
||||
/* Only meaningful with GX. */
|
||||
/* */
|
||||
typedef struct FT_MM_Var_
|
||||
{
|
||||
FT_UInt num_axis;
|
||||
FT_UInt num_designs;
|
||||
FT_UInt num_namedstyles;
|
||||
FT_Var_Axis* axis;
|
||||
FT_Var_Named_Style* namedstyle;
|
||||
|
||||
} FT_MM_Var;
|
||||
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
@@ -108,6 +229,8 @@ FT_BEGIN_HEADER
|
||||
/* <Description> */
|
||||
/* Retrieves the Multiple Master descriptor of a given font. */
|
||||
/* */
|
||||
/* This function can't be used with GX fonts. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* face :: A handle to the source face. */
|
||||
/* */
|
||||
@@ -122,6 +245,30 @@ FT_BEGIN_HEADER
|
||||
FT_Multi_Master *amaster );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Get_MM_Var */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Retrieves the Multiple Master/GX var descriptor of a given font. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* face :: A handle to the source face. */
|
||||
/* */
|
||||
/* <Output> */
|
||||
/* amaster :: The Multiple Masters descriptor. */
|
||||
/* Allocates a data structure, which the user must free */
|
||||
/* (a single call to FT_FREE will do it). */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0 means success. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Get_MM_Var( FT_Face face,
|
||||
FT_MM_Var* *amaster );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
@@ -131,6 +278,8 @@ FT_BEGIN_HEADER
|
||||
/* For Multiple Masters fonts, choose an interpolated font design */
|
||||
/* through design coordinates. */
|
||||
/* */
|
||||
/* This function can't be used with GX fonts. */
|
||||
/* */
|
||||
/* <InOut> */
|
||||
/* face :: A handle to the source face. */
|
||||
/* */
|
||||
@@ -149,14 +298,41 @@ FT_BEGIN_HEADER
|
||||
FT_Long* coords );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Set_Var_Design_Coordinates */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* For Multiple Master or GX Var fonts, choose an interpolated font */
|
||||
/* design through design coordinates. */
|
||||
/* */
|
||||
/* <InOut> */
|
||||
/* face :: A handle to the source face. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* num_coords :: The number of design coordinates (must be equal to */
|
||||
/* the number of axes in the font). */
|
||||
/* */
|
||||
/* coords :: An array of design coordinates. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0 means success. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Set_Var_Design_Coordinates( FT_Face face,
|
||||
FT_UInt num_coords,
|
||||
FT_Fixed* coords );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Set_MM_Blend_Coordinates */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* For Multiple Masters fonts, choose an interpolated font design */
|
||||
/* through normalized blend coordinates. */
|
||||
/* For Multiple Masters and GX var fonts, choose an interpolated font */
|
||||
/* design through normalized blend coordinates. */
|
||||
/* */
|
||||
/* <InOut> */
|
||||
/* face :: A handle to the source face. */
|
||||
@@ -177,6 +353,20 @@ FT_BEGIN_HEADER
|
||||
FT_Fixed* coords );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Set_Var_Blend_Coordinates */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* This is another name of @FT_Set_MM_Blend_Coordinates. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Set_Var_Blend_Coordinates( FT_Face face,
|
||||
FT_UInt num_coords,
|
||||
FT_Fixed* coords );
|
||||
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* FreeType module error offsets (specification). */
|
||||
/* */
|
||||
/* Copyright 2001, 2002, 2003, 2004 by */
|
||||
/* Copyright 2001, 2002, 2003, 2004, 2005 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@@ -23,8 +23,8 @@
|
||||
/* The lower byte gives the error code, the higher byte gives the */
|
||||
/* module. The base module has error offset 0. For example, the error */
|
||||
/* `FT_Err_Invalid_File_Format' has value 0x003, the error */
|
||||
/* `TT_Err_Invalid_File_Format' has value 0x1003, the error */
|
||||
/* `T1_Err_Invalid_File_Format' has value 0x1103, etc. */
|
||||
/* `TT_Err_Invalid_File_Format' has value 0x1103, the error */
|
||||
/* `T1_Err_Invalid_File_Format' has value 0x1203, etc. */
|
||||
/* */
|
||||
/* Undefine the macro FT_CONFIG_OPTION_USE_MODULE_ERRORS in ftoption.h */
|
||||
/* to make the higher byte always zero (disabling the module error */
|
||||
@@ -103,25 +103,26 @@
|
||||
|
||||
|
||||
FT_MODERRDEF( Base, 0x000, "base module" )
|
||||
FT_MODERRDEF( Autohint, 0x100, "autohinter module" )
|
||||
FT_MODERRDEF( Autofit, 0x100, "autofitter module" )
|
||||
FT_MODERRDEF( BDF, 0x200, "BDF module" )
|
||||
FT_MODERRDEF( Cache, 0x300, "cache module" )
|
||||
FT_MODERRDEF( CFF, 0x400, "CFF module" )
|
||||
FT_MODERRDEF( CID, 0x500, "CID module" )
|
||||
FT_MODERRDEF( Gzip, 0x600, "Gzip module" )
|
||||
FT_MODERRDEF( LZW, 0x700, "LZW module" )
|
||||
FT_MODERRDEF( PCF, 0x800, "PCF module" )
|
||||
FT_MODERRDEF( PFR, 0x900, "PFR module" )
|
||||
FT_MODERRDEF( PSaux, 0xA00, "PS auxiliary module" )
|
||||
FT_MODERRDEF( PShinter, 0xB00, "PS hinter module" )
|
||||
FT_MODERRDEF( PSnames, 0xC00, "PS names module" )
|
||||
FT_MODERRDEF( Raster, 0xD00, "raster module" )
|
||||
FT_MODERRDEF( SFNT, 0xE00, "SFNT module" )
|
||||
FT_MODERRDEF( Smooth, 0xF00, "smooth raster module" )
|
||||
FT_MODERRDEF( TrueType, 0x1000, "TrueType module" )
|
||||
FT_MODERRDEF( Type1, 0x1100, "Type 1 module" )
|
||||
FT_MODERRDEF( Type42, 0x1200, "Type 42 module" )
|
||||
FT_MODERRDEF( Winfonts, 0x1300, "Windows FON/FNT module" )
|
||||
FT_MODERRDEF( OTvalid, 0x800, "OpenType validation module" )
|
||||
FT_MODERRDEF( PCF, 0x900, "PCF module" )
|
||||
FT_MODERRDEF( PFR, 0xA00, "PFR module" )
|
||||
FT_MODERRDEF( PSaux, 0xB00, "PS auxiliary module" )
|
||||
FT_MODERRDEF( PShinter, 0xC00, "PS hinter module" )
|
||||
FT_MODERRDEF( PSnames, 0xD00, "PS names module" )
|
||||
FT_MODERRDEF( Raster, 0xE00, "raster module" )
|
||||
FT_MODERRDEF( SFNT, 0xF00, "SFNT module" )
|
||||
FT_MODERRDEF( Smooth, 0x1000, "smooth raster module" )
|
||||
FT_MODERRDEF( TrueType, 0x1100, "TrueType module" )
|
||||
FT_MODERRDEF( Type1, 0x1200, "Type 1 module" )
|
||||
FT_MODERRDEF( Type42, 0x1300, "Type 42 module" )
|
||||
FT_MODERRDEF( Winfonts, 0x1400, "Windows FON/FNT module" )
|
||||
|
||||
|
||||
#ifdef FT_MODERR_END_LIST
|
||||
|
||||
@@ -0,0 +1,170 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftotval.h */
|
||||
/* */
|
||||
/* FreeType API for validating OpenType tables (specification). */
|
||||
/* */
|
||||
/* Copyright 2004, 2005 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* */
|
||||
/* Warning: This module might be moved to a different library in the */
|
||||
/* future to avoid a tight dependency between FreeType and the */
|
||||
/* OpenType specification. */
|
||||
/* */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#ifndef __FTOTVAL_H__
|
||||
#define __FTOTVAL_H__
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
#error "Please fix the directory search order for header files"
|
||||
#error "so that freetype.h of FreeType 2 is found first."
|
||||
#endif
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Section> */
|
||||
/* ot_validation */
|
||||
/* */
|
||||
/* <Title> */
|
||||
/* OpenType Validation */
|
||||
/* */
|
||||
/* <Abstract> */
|
||||
/* An API to validate OpenType tables. */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* This section contains the declaration of functions to validate */
|
||||
/* some OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF). */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
*
|
||||
* @enum:
|
||||
* FT_VALIDATE_XXX
|
||||
*
|
||||
* @description:
|
||||
* A list of bit-field constants used with @FT_OpenType_Validate to
|
||||
* indicate which OpenType tables should be validated.
|
||||
*
|
||||
* @values:
|
||||
* FT_VALIDATE_BASE ::
|
||||
* Validate BASE table.
|
||||
*
|
||||
* FT_VALIDATE_GDEF ::
|
||||
* Validate GDEF table.
|
||||
*
|
||||
* FT_VALIDATE_GPOS ::
|
||||
* Validate GPOS table.
|
||||
*
|
||||
* FT_VALIDATE_GSUB ::
|
||||
* Validate GSUB table.
|
||||
*
|
||||
* FT_VALIDATE_JSTF ::
|
||||
* Validate JSTF table.
|
||||
*
|
||||
* FT_VALIDATE_OT ::
|
||||
* Validate all OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF).
|
||||
*
|
||||
*/
|
||||
#define FT_VALIDATE_BASE 0x0100
|
||||
#define FT_VALIDATE_GDEF 0x0200
|
||||
#define FT_VALIDATE_GPOS 0x0400
|
||||
#define FT_VALIDATE_GSUB 0x0800
|
||||
#define FT_VALIDATE_JSTF 0x1000
|
||||
|
||||
#define FT_VALIDATE_OT FT_VALIDATE_BASE | \
|
||||
FT_VALIDATE_GDEF | \
|
||||
FT_VALIDATE_GPOS | \
|
||||
FT_VALIDATE_GSUB | \
|
||||
FT_VALIDATE_JSTF
|
||||
|
||||
/* */
|
||||
|
||||
/**********************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_OpenType_Validate
|
||||
*
|
||||
* @description:
|
||||
* Validate various OpenType tables to assure that all offsets and
|
||||
* indices are valid. The idea is that a higher-level library which
|
||||
* actually does the text layout can access those tables without
|
||||
* error checking (which can be quite time consuming).
|
||||
*
|
||||
* @input:
|
||||
* face ::
|
||||
* A handle to the input face.
|
||||
*
|
||||
* validation_flags ::
|
||||
* A bit field which specifies the tables to be validated. See
|
||||
* @FT_VALIDATE_XXX for possible values.
|
||||
*
|
||||
* @output:
|
||||
* BASE_table ::
|
||||
* A pointer to the BASE table.
|
||||
*
|
||||
* GDEF_table ::
|
||||
* A pointer to the GDEF table.
|
||||
*
|
||||
* GPOS_table ::
|
||||
* A pointer to the GPOS table.
|
||||
*
|
||||
* GSUB_table ::
|
||||
* A pointer to the GSUB table.
|
||||
*
|
||||
* JSTF_table ::
|
||||
* A pointer to the JSTF table.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0 means success.
|
||||
*
|
||||
* @note:
|
||||
* This function only works with OpenType fonts, returning an error
|
||||
* otherwise.
|
||||
*
|
||||
* After use, the application should deallocate the five tables with
|
||||
* `free'. A NULL value indicates that the table either doesn't exist
|
||||
* in the font, or the application hasn't asked for validation.
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_OpenType_Validate( FT_Face face,
|
||||
FT_UInt validation_flags,
|
||||
FT_Bytes *BASE_table,
|
||||
FT_Bytes *GDEF_table,
|
||||
FT_Bytes *GPOS_table,
|
||||
FT_Bytes *GSUB_table,
|
||||
FT_Bytes *JSTF_table );
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* __FTOTVAL_H__ */
|
||||
|
||||
|
||||
/* END */
|
||||
@@ -5,7 +5,7 @@
|
||||
/* Support for the FT_Outline type used to store glyph shapes of */
|
||||
/* most scalable font formats (specification). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003 by */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2005 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@@ -58,6 +58,7 @@ FT_BEGIN_HEADER
|
||||
/* FT_Outline_Copy */
|
||||
/* FT_Outline_Translate */
|
||||
/* FT_Outline_Transform */
|
||||
/* FT_Outline_Embolden */
|
||||
/* FT_Outline_Reverse */
|
||||
/* FT_Outline_Check */
|
||||
/* */
|
||||
@@ -229,8 +230,8 @@ FT_BEGIN_HEADER
|
||||
/* acbox :: The outline's control box. */
|
||||
/* */
|
||||
FT_EXPORT( void )
|
||||
FT_Outline_Get_CBox( FT_Outline* outline,
|
||||
FT_BBox *acbox );
|
||||
FT_Outline_Get_CBox( const FT_Outline* outline,
|
||||
FT_BBox *acbox );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
@@ -250,9 +251,9 @@ FT_BEGIN_HEADER
|
||||
/* yOffset :: The vertical offset. */
|
||||
/* */
|
||||
FT_EXPORT( void )
|
||||
FT_Outline_Translate( FT_Outline* outline,
|
||||
FT_Pos xOffset,
|
||||
FT_Pos yOffset );
|
||||
FT_Outline_Translate( const FT_Outline* outline,
|
||||
FT_Pos xOffset,
|
||||
FT_Pos yOffset );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
@@ -275,8 +276,8 @@ FT_BEGIN_HEADER
|
||||
/* FreeType error code. 0 means success. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Outline_Copy( FT_Outline* source,
|
||||
FT_Outline *target );
|
||||
FT_Outline_Copy( const FT_Outline* source,
|
||||
FT_Outline *target );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
@@ -299,8 +300,33 @@ FT_BEGIN_HEADER
|
||||
/* outline's points. */
|
||||
/* */
|
||||
FT_EXPORT( void )
|
||||
FT_Outline_Transform( FT_Outline* outline,
|
||||
FT_Matrix* matrix );
|
||||
FT_Outline_Transform( const FT_Outline* outline,
|
||||
const FT_Matrix* matrix );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Outline_Embolden */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Emboldens an outline. The new outline will be at most 4 times */
|
||||
/* `strength' pixels wider and higher. You may think of the left and */
|
||||
/* bottom borders as unchanged. */
|
||||
/* */
|
||||
/* <InOut> */
|
||||
/* outline :: A handle to the target outline. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* strength :: How strong the glyph is emboldened. Expressed in */
|
||||
/* 26.6 pixel format. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0 means success. */
|
||||
/* */
|
||||
FT_EXPORT_DEF( FT_Error )
|
||||
FT_Outline_Embolden( FT_Outline* outline,
|
||||
FT_Pos strength );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
@@ -353,9 +379,9 @@ FT_BEGIN_HEADER
|
||||
/* It will use the raster correponding to the default glyph format. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Outline_Get_Bitmap( FT_Library library,
|
||||
FT_Outline* outline,
|
||||
FT_Bitmap *abitmap );
|
||||
FT_Outline_Get_Bitmap( FT_Library library,
|
||||
FT_Outline* outline,
|
||||
const FT_Bitmap *abitmap );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* FreeType API for accessing PFR-specific data (specification only). */
|
||||
/* */
|
||||
/* Copyright 2002, 2003 by */
|
||||
/* Copyright 2002, 2003, 2004 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@@ -41,7 +41,7 @@ FT_BEGIN_HEADER
|
||||
/* PFR Fonts */
|
||||
/* */
|
||||
/* <Abstract> */
|
||||
/* PFR/TrueDoc specific APIs */
|
||||
/* PFR/TrueDoc specific API. */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* This section contains the declaration of PFR-specific functions. */
|
||||
@@ -166,7 +166,7 @@ FT_BEGIN_HEADER
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* __FTBDF_H__ */
|
||||
#endif /* __FTPFR_H__ */
|
||||
|
||||
|
||||
/* END */
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* FreeType renderer modules public interface (specification). */
|
||||
/* */
|
||||
/* Copyright 1996-2001 by */
|
||||
/* Copyright 1996-2001, 2005 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* FreeType size objects management (specification). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2003 by */
|
||||
/* Copyright 1996-2001, 2003, 2004 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@@ -48,10 +48,10 @@ FT_BEGIN_HEADER
|
||||
/* sizes_management */
|
||||
/* */
|
||||
/* <Title> */
|
||||
/* Size management */
|
||||
/* Size Management */
|
||||
/* */
|
||||
/* <Abstract> */
|
||||
/* Managing multiple sizes per face */
|
||||
/* Managing multiple sizes per face. */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* When creating a new face object (e.g. with @FT_New_Face), an */
|
||||
|
||||
@@ -23,9 +23,33 @@
|
||||
#include FT_OUTLINE_H
|
||||
#include FT_GLYPH_H
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
/*@*************************************************************
|
||||
|
||||
/************************************************************************
|
||||
*
|
||||
* <Section>
|
||||
* glyph_stroker
|
||||
*
|
||||
* <Title>
|
||||
* Glyph Stroker
|
||||
*
|
||||
* <Abstract>
|
||||
* Generating bordered and stroked glyphs.
|
||||
*
|
||||
* <Description>
|
||||
* This component generates stroked outlines of a given vectorial
|
||||
* glyph. It also allows you to retrieve the `outside' and/or the
|
||||
* `inside' borders of the stroke.
|
||||
*
|
||||
* This can be useful to generate `bordered' glyph, i.e., glyphs
|
||||
* displayed with a coloured (and anti-aliased) border around their
|
||||
* shape.
|
||||
*/
|
||||
|
||||
|
||||
/**************************************************************
|
||||
*
|
||||
* @type:
|
||||
* FT_Stroker
|
||||
@@ -36,7 +60,7 @@ FT_BEGIN_HEADER
|
||||
typedef struct FT_StrokerRec_* FT_Stroker;
|
||||
|
||||
|
||||
/*@*************************************************************
|
||||
/**************************************************************
|
||||
*
|
||||
* @enum:
|
||||
* FT_Stroker_LineJoin
|
||||
@@ -69,7 +93,7 @@ FT_BEGIN_HEADER
|
||||
} FT_Stroker_LineJoin;
|
||||
|
||||
|
||||
/*@*************************************************************
|
||||
/**************************************************************
|
||||
*
|
||||
* @enum:
|
||||
* FT_Stroker_LineCap
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* FreeType simple types definitions (specification only). */
|
||||
/* */
|
||||
/* Copyright 1996-2001 by */
|
||||
/* Copyright 1996-2001, 2002, 2004 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@@ -49,6 +49,7 @@ FT_BEGIN_HEADER
|
||||
/* */
|
||||
/* <Order> */
|
||||
/* FT_Byte */
|
||||
/* FT_Bytes */
|
||||
/* FT_Char */
|
||||
/* FT_Int */
|
||||
/* FT_UInt */
|
||||
@@ -60,6 +61,7 @@ FT_BEGIN_HEADER
|
||||
/* FT_Offset */
|
||||
/* FT_PtrDist */
|
||||
/* FT_String */
|
||||
/* FT_Tag */
|
||||
/* FT_Error */
|
||||
/* FT_Fixed */
|
||||
/* FT_Pointer */
|
||||
@@ -143,6 +145,28 @@ FT_BEGIN_HEADER
|
||||
typedef unsigned char FT_Byte;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Type> */
|
||||
/* FT_Bytes */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A typedef for constant memory areas. */
|
||||
/* */
|
||||
typedef const FT_Byte* FT_Bytes;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Type> */
|
||||
/* FT_Tag */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A typedef for 32bit tags (as used in the SFNT format). */
|
||||
/* */
|
||||
typedef FT_UInt32 FT_Tag;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Type> */
|
||||
@@ -184,7 +208,7 @@ FT_BEGIN_HEADER
|
||||
/* <Description> */
|
||||
/* A typedef for the int type. */
|
||||
/* */
|
||||
typedef int FT_Int;
|
||||
typedef signed int FT_Int;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
@@ -301,7 +325,7 @@ FT_BEGIN_HEADER
|
||||
/* largest _signed_ integer type used to express the distance */
|
||||
/* between two pointers. */
|
||||
/* */
|
||||
typedef size_t FT_PtrDist;
|
||||
typedef ft_ptrdiff_t FT_PtrDist;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* FreeType API for accessing Windows fnt-specific data. */
|
||||
/* */
|
||||
/* Copyright 2003 by */
|
||||
/* Copyright 2003, 2004 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@@ -38,10 +38,10 @@ FT_BEGIN_HEADER
|
||||
/* winfnt_fonts */
|
||||
/* */
|
||||
/* <Title> */
|
||||
/* Window FNT Fonts */
|
||||
/* Window FNT Files */
|
||||
/* */
|
||||
/* <Abstract> */
|
||||
/* Windows FNT specific APIs */
|
||||
/* Windows FNT specific API. */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* This section contains the declaration of Windows FNT specific */
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* Arithmetic computations (specification). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003 by */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@@ -27,6 +27,23 @@
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_FixedSqrt */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Computes the square root of a 16.16 fixed point value. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* x :: The value to compute the root for. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* The result of `sqrt(x)'. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* This function is not very fast. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Int32 )
|
||||
FT_SqrtFixed( FT_Int32 x );
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* The FreeType memory management macros (specification). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2004 by */
|
||||
/* Copyright 1996-2001, 2002, 2004, 2005 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@@ -43,6 +43,7 @@ FT_BEGIN_HEADER
|
||||
( ( error = (expression) ) != 0 )
|
||||
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
@@ -64,6 +65,13 @@ FT_BEGIN_HEADER
|
||||
const char* file_name,
|
||||
FT_Long line_no );
|
||||
|
||||
FT_BASE( FT_Error )
|
||||
FT_QAlloc_Debug( FT_Memory memory,
|
||||
FT_Long size,
|
||||
void* *P,
|
||||
const char* file_name,
|
||||
FT_Long line_no );
|
||||
|
||||
FT_BASE( FT_Error )
|
||||
FT_Realloc_Debug( FT_Memory memory,
|
||||
FT_Long current,
|
||||
@@ -72,6 +80,14 @@ FT_BEGIN_HEADER
|
||||
const char* file_name,
|
||||
FT_Long line_no );
|
||||
|
||||
FT_BASE( FT_Error )
|
||||
FT_QRealloc_Debug( FT_Memory memory,
|
||||
FT_Long current,
|
||||
FT_Long size,
|
||||
void* *P,
|
||||
const char* file_name,
|
||||
FT_Long line_no );
|
||||
|
||||
FT_BASE( void )
|
||||
FT_Free_Debug( FT_Memory memory,
|
||||
FT_Pointer block,
|
||||
@@ -109,6 +125,34 @@ FT_BEGIN_HEADER
|
||||
void* *P );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_QAlloc */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Allocates a new block of memory. The returned area is *not* */
|
||||
/* zero-filled, making allocation quicker. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* memory :: A handle to a given `memory object' which handles */
|
||||
/* allocation. */
|
||||
/* */
|
||||
/* size :: The size in bytes of the block to allocate. */
|
||||
/* */
|
||||
/* <Output> */
|
||||
/* P :: A pointer to the fresh new block. It should be set to */
|
||||
/* NULL if `size' is 0, or in case of error. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0 means success. */
|
||||
/* */
|
||||
FT_BASE( FT_Error )
|
||||
FT_QAlloc( FT_Memory memory,
|
||||
FT_Long size,
|
||||
void* *p );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
@@ -116,7 +160,8 @@ FT_BEGIN_HEADER
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Reallocates a block of memory pointed to by `*P' to `Size' bytes */
|
||||
/* from the heap, possibly changing `*P'. */
|
||||
/* from the heap, possibly changing `*P'. The returned area is */
|
||||
/* zero-filled. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* memory :: A handle to a given `memory object' which handles */
|
||||
@@ -144,6 +189,42 @@ FT_BEGIN_HEADER
|
||||
void* *P );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_QRealloc */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Reallocates a block of memory pointed to by `*P' to `Size' bytes */
|
||||
/* from the heap, possibly changing `*P'. The returned area is *not* */
|
||||
/* zero-filled, making reallocation quicker. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* memory :: A handle to a given `memory object' which handles */
|
||||
/* reallocation. */
|
||||
/* */
|
||||
/* current :: The current block size in bytes. */
|
||||
/* */
|
||||
/* size :: The new block size in bytes. */
|
||||
/* */
|
||||
/* <InOut> */
|
||||
/* P :: A pointer to the fresh new block. It should be set to */
|
||||
/* NULL if `size' is 0, or in case of error. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0 means success. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* All callers of FT_Realloc() _must_ provide the current block size */
|
||||
/* as well as the new one. */
|
||||
/* */
|
||||
FT_BASE( FT_Error )
|
||||
FT_QRealloc( FT_Memory memory,
|
||||
FT_Long current,
|
||||
FT_Long size,
|
||||
void* *p );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
@@ -180,11 +261,24 @@ FT_BEGIN_HEADER
|
||||
|
||||
#define FT_ZERO( p ) FT_MEM_ZERO( p, sizeof ( *(p) ) )
|
||||
|
||||
#define FT_ARRAY_COPY( dest, source, count ) \
|
||||
FT_MEM_COPY( dest, source, (count) * sizeof( *(dest) ) )
|
||||
#define FT_ARRAY_ZERO( dest, count ) \
|
||||
FT_MEM_ZERO( dest, (count) * sizeof ( *(dest) ) )
|
||||
|
||||
#define FT_ARRAY_MOVE( dest, source, count ) \
|
||||
FT_MEM_MOVE( dest, source, (count) * sizeof( *(dest) ) )
|
||||
#define FT_ARRAY_COPY( dest, source, count ) \
|
||||
FT_MEM_COPY( dest, source, (count) * sizeof ( *(dest) ) )
|
||||
|
||||
#define FT_ARRAY_MOVE( dest, source, count ) \
|
||||
FT_MEM_MOVE( dest, source, (count) * sizeof ( *(dest) ) )
|
||||
|
||||
|
||||
/*
|
||||
* Return the maximum number of adressable elements in an array.
|
||||
* We limit ourselves to INT_MAX, rather than UINT_MAX, to avoid
|
||||
* any problems.
|
||||
*/
|
||||
#define FT_ARRAY_MAX( ptr ) ( FT_INT_MAX / sizeof ( *(ptr) ) )
|
||||
|
||||
#define FT_ARRAY_CHECK( ptr, count ) ( (count) <= FT_ARRAY_MAX( ptr ) )
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
@@ -196,30 +290,53 @@ FT_BEGIN_HEADER
|
||||
|
||||
#ifdef FT_DEBUG_MEMORY
|
||||
|
||||
#define FT_MEM_ALLOC( _pointer_, _size_ ) \
|
||||
FT_Alloc_Debug( memory, _size_, \
|
||||
(void**)&(_pointer_), __FILE__, __LINE__ )
|
||||
#define FT_MEM_ALLOC( _pointer_, _size_ ) \
|
||||
FT_Alloc_Debug( memory, _size_, \
|
||||
(void**)(void*)&(_pointer_), \
|
||||
__FILE__, __LINE__ )
|
||||
|
||||
#define FT_MEM_REALLOC( _pointer_, _current_, _size_ ) \
|
||||
FT_Realloc_Debug( memory, _current_, _size_, \
|
||||
(void**)&(_pointer_), __FILE__, __LINE__ )
|
||||
#define FT_MEM_REALLOC( _pointer_, _current_, _size_ ) \
|
||||
FT_Realloc_Debug( memory, _current_, _size_, \
|
||||
(void**)(void*)&(_pointer_), \
|
||||
__FILE__, __LINE__ )
|
||||
|
||||
#define FT_MEM_FREE( _pointer_ ) \
|
||||
FT_Free_Debug( memory, (void**)&(_pointer_), __FILE__, __LINE__ )
|
||||
#define FT_MEM_QALLOC( _pointer_, _size_ ) \
|
||||
FT_QAlloc_Debug( memory, _size_, \
|
||||
(void**)(void*)&(_pointer_), \
|
||||
__FILE__, __LINE__ )
|
||||
|
||||
#define FT_MEM_QREALLOC( _pointer_, _current_, _size_ ) \
|
||||
FT_QRealloc_Debug( memory, _current_, _size_, \
|
||||
(void**)(void*)&(_pointer_), \
|
||||
__FILE__, __LINE__ )
|
||||
|
||||
#define FT_MEM_FREE( _pointer_ ) \
|
||||
FT_Free_Debug( memory, (void**)(void*)&(_pointer_), \
|
||||
__FILE__, __LINE__ )
|
||||
|
||||
|
||||
#else /* !FT_DEBUG_MEMORY */
|
||||
|
||||
|
||||
#define FT_MEM_ALLOC( _pointer_, _size_ ) \
|
||||
FT_Alloc( memory, _size_, (void**)&(_pointer_) )
|
||||
#define FT_MEM_ALLOC( _pointer_, _size_ ) \
|
||||
FT_Alloc( memory, _size_, \
|
||||
(void**)(void*)&(_pointer_) )
|
||||
|
||||
#define FT_MEM_FREE( _pointer_ ) \
|
||||
FT_Free( memory, (void**)&(_pointer_) )
|
||||
#define FT_MEM_FREE( _pointer_ ) \
|
||||
FT_Free( memory, \
|
||||
(void**)(void*)&(_pointer_) )
|
||||
|
||||
#define FT_MEM_REALLOC( _pointer_, _current_, _size_ ) \
|
||||
FT_Realloc( memory, _current_, _size_, (void**)&(_pointer_) )
|
||||
#define FT_MEM_REALLOC( _pointer_, _current_, _size_ ) \
|
||||
FT_Realloc( memory, _current_, _size_, \
|
||||
(void**)(void*)&(_pointer_) )
|
||||
|
||||
#define FT_MEM_QALLOC( _pointer_, _size_ ) \
|
||||
FT_QAlloc( memory, _size_, \
|
||||
(void**)(void*)&(_pointer_) )
|
||||
|
||||
#define FT_MEM_QREALLOC( _pointer_, _current_, _size_ ) \
|
||||
FT_QRealloc( memory, _current_, _size_, \
|
||||
(void**)(void*)&(_pointer_) )
|
||||
|
||||
#endif /* !FT_DEBUG_MEMORY */
|
||||
|
||||
@@ -230,7 +347,7 @@ FT_BEGIN_HEADER
|
||||
/* _typed_ in order to automatically compute array element sizes. */
|
||||
/* */
|
||||
|
||||
#define FT_MEM_NEW( _pointer_ ) \
|
||||
#define FT_MEM_NEW( _pointer_ ) \
|
||||
FT_MEM_ALLOC( _pointer_, sizeof ( *(_pointer_) ) )
|
||||
|
||||
#define FT_MEM_NEW_ARRAY( _pointer_, _count_ ) \
|
||||
@@ -240,6 +357,16 @@ FT_BEGIN_HEADER
|
||||
FT_MEM_REALLOC( _pointer_, (_old_) * sizeof ( *(_pointer_) ), \
|
||||
(_new_) * sizeof ( *(_pointer_) ) )
|
||||
|
||||
#define FT_MEM_QNEW( _pointer_ ) \
|
||||
FT_MEM_QALLOC( _pointer_, sizeof ( *(_pointer_) ) )
|
||||
|
||||
#define FT_MEM_QNEW_ARRAY( _pointer_, _count_ ) \
|
||||
FT_MEM_QALLOC( _pointer_, (_count_) * sizeof ( *(_pointer_) ) )
|
||||
|
||||
#define FT_MEM_QRENEW_ARRAY( _pointer_, _old_, _new_ ) \
|
||||
FT_MEM_QREALLOC( _pointer_, (_old_) * sizeof ( *(_pointer_) ), \
|
||||
(_new_) * sizeof ( *(_pointer_) ) )
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
@@ -267,26 +394,45 @@ FT_BEGIN_HEADER
|
||||
#define FT_REALLOC( _pointer_, _current_, _size_ ) \
|
||||
FT_SET_ERROR( FT_MEM_REALLOC( _pointer_, _current_, _size_ ) )
|
||||
|
||||
#define FT_QALLOC( _pointer_, _size_ ) \
|
||||
FT_SET_ERROR( FT_MEM_QALLOC( _pointer_, _size_ ) )
|
||||
|
||||
#define FT_QREALLOC( _pointer_, _current_, _size_ ) \
|
||||
FT_SET_ERROR( FT_MEM_QREALLOC( _pointer_, _current_, _size_ ) )
|
||||
|
||||
|
||||
#define FT_FREE( _pointer_ ) \
|
||||
FT_MEM_FREE( _pointer_ )
|
||||
|
||||
#define FT_NEW( _pointer_ ) \
|
||||
FT_SET_ERROR( FT_MEM_NEW( _pointer_ ) )
|
||||
|
||||
#define FT_NEW_ARRAY( _pointer_, _count_ ) \
|
||||
FT_SET_ERROR( FT_MEM_NEW_ARRAY( _pointer_, _count_ ) )
|
||||
#define FT_NEW( _pointer_ ) \
|
||||
FT_ALLOC( _pointer_, sizeof ( *(_pointer_) ) )
|
||||
|
||||
#define FT_RENEW_ARRAY( _pointer_, _old_, _new_ ) \
|
||||
FT_SET_ERROR( FT_MEM_RENEW_ARRAY( _pointer_, _old_, _new_ ) )
|
||||
#define FT_NEW_ARRAY( _pointer_, _count_ ) \
|
||||
FT_ALLOC( _pointer_, sizeof ( *(_pointer_) ) * (_count_) )
|
||||
|
||||
#define FT_ALLOC_ARRAY( _pointer_, _count_, _type_ ) \
|
||||
FT_SET_ERROR( FT_MEM_ALLOC( _pointer_, \
|
||||
(_count_) * sizeof ( _type_ ) ) )
|
||||
#define FT_RENEW_ARRAY( _pointer_, _old_, _new_ ) \
|
||||
FT_REALLOC( _pointer_, sizeof ( *(_pointer_) ) * (_old_), \
|
||||
sizeof ( *(_pointer_) ) * (_new_) )
|
||||
|
||||
#define FT_QNEW( _pointer_ ) \
|
||||
FT_QALLOC( _pointer_, sizeof ( *(_pointer_) ) )
|
||||
|
||||
#define FT_QNEW_ARRAY( _pointer_, _count_ ) \
|
||||
FT_QALLOC( _pointer_, sizeof ( *(_pointer_) ) * (_count_) )
|
||||
|
||||
#define FT_QRENEW_ARRAY( _pointer_, _old_, _new_ ) \
|
||||
FT_QREALLOC( _pointer_, sizeof ( *(_pointer_) ) * (_old_), \
|
||||
sizeof ( *(_pointer_) ) * (_new_) )
|
||||
|
||||
|
||||
#define FT_ALLOC_ARRAY( _pointer_, _count_, _type_ ) \
|
||||
FT_ALLOC( _pointer_, (_count_) * sizeof ( _type_ ) )
|
||||
|
||||
#define FT_REALLOC_ARRAY( _pointer_, _old_, _new_, _type_ ) \
|
||||
FT_REALLOC( _pointer, (_old_) * sizeof ( _type_ ), \
|
||||
(_new_) * sizeof ( _type_ ) )
|
||||
|
||||
#define FT_REALLOC_ARRAY( _pointer_, _old_, _new_, _type_ ) \
|
||||
FT_SET_ERROR( FT_MEM_REALLOC( _pointer_, \
|
||||
(_old_) * sizeof ( _type_ ), \
|
||||
(_new_) * sizeof ( _type_ ) ) )
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* The FreeType private base classes (specification). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004 by */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@@ -27,7 +27,6 @@
|
||||
#define __FTOBJS_H__
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_CONFIG_STANDARD_LIBRARY_H /* for ft_setjmp and ft_longjmp */
|
||||
#include FT_RENDER_H
|
||||
#include FT_SIZES_H
|
||||
#include FT_INTERNAL_MEMORY_H
|
||||
@@ -81,109 +80,12 @@ FT_BEGIN_HEADER
|
||||
#define FT_PIX_CEIL( x ) FT_PIX_FLOOR( (x) + 63 )
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/**** ****/
|
||||
/**** ****/
|
||||
/**** V A L I D A T I O N ****/
|
||||
/**** ****/
|
||||
/**** ****/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
|
||||
/* handle to a validation object */
|
||||
typedef struct FT_ValidatorRec_* FT_Validator;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* There are three distinct validation levels defined here: */
|
||||
/* */
|
||||
/* FT_VALIDATE_DEFAULT :: */
|
||||
/* A table that passes this validation level can be used reliably by */
|
||||
/* FreeType. It generally means that all offsets have been checked to */
|
||||
/* prevent out-of-bound reads, array counts are correct, etc. */
|
||||
/* */
|
||||
/* FT_VALIDATE_TIGHT :: */
|
||||
/* A table that passes this validation level can be used reliably and */
|
||||
/* doesn't contain invalid data. For example, a charmap table that */
|
||||
/* returns invalid glyph indices will not pass, even though it can */
|
||||
/* be used with FreeType in default mode (the library will simply */
|
||||
/* return an error later when trying to load the glyph). */
|
||||
/* */
|
||||
/* It also check that fields that must be a multiple of 2, 4, or 8 */
|
||||
/* don't have incorrect values, etc. */
|
||||
/* */
|
||||
/* FT_VALIDATE_PARANOID :: */
|
||||
/* Only for font debugging. Checks that a table follows the */
|
||||
/* specification by 100%. Very few fonts will be able to pass this */
|
||||
/* level anyway but it can be useful for certain tools like font */
|
||||
/* editors/converters. */
|
||||
/* */
|
||||
typedef enum FT_ValidationLevel_
|
||||
{
|
||||
FT_VALIDATE_DEFAULT = 0,
|
||||
FT_VALIDATE_TIGHT,
|
||||
FT_VALIDATE_PARANOID
|
||||
|
||||
} FT_ValidationLevel;
|
||||
|
||||
|
||||
/* validator structure */
|
||||
typedef struct FT_ValidatorRec_
|
||||
{
|
||||
const FT_Byte* base; /* address of table in memory */
|
||||
const FT_Byte* limit; /* `base' + sizeof(table) in memory */
|
||||
FT_ValidationLevel level; /* validation level */
|
||||
FT_Error error; /* error returned. 0 means success */
|
||||
|
||||
ft_jmp_buf jump_buffer; /* used for exception handling */
|
||||
|
||||
} FT_ValidatorRec;
|
||||
|
||||
|
||||
#define FT_VALIDATOR( x ) ((FT_Validator)( x ))
|
||||
|
||||
|
||||
FT_BASE( void )
|
||||
ft_validator_init( FT_Validator valid,
|
||||
const FT_Byte* base,
|
||||
const FT_Byte* limit,
|
||||
FT_ValidationLevel level );
|
||||
|
||||
FT_BASE( FT_Int )
|
||||
ft_validator_run( FT_Validator valid );
|
||||
|
||||
/* Sets the error field in a validator, then calls `longjmp' to return */
|
||||
/* to high-level caller. Using `setjmp/longjmp' avoids many stupid */
|
||||
/* error checks within the validation routines. */
|
||||
/* */
|
||||
FT_BASE( void )
|
||||
ft_validator_error( FT_Validator valid,
|
||||
FT_Error error );
|
||||
|
||||
|
||||
/* Calls ft_validate_error. Assumes that the `valid' local variable */
|
||||
/* holds a pointer to the current validator object. */
|
||||
/* */
|
||||
#define FT_INVALID( _error ) ft_validator_error( valid, _error )
|
||||
|
||||
/* called when a broken table is detected */
|
||||
#define FT_INVALID_TOO_SHORT FT_INVALID( FT_Err_Invalid_Table )
|
||||
|
||||
/* called when an invalid offset is detected */
|
||||
#define FT_INVALID_OFFSET FT_INVALID( FT_Err_Invalid_Offset )
|
||||
|
||||
/* called when an invalid format/value is detected */
|
||||
#define FT_INVALID_FORMAT FT_INVALID( FT_Err_Invalid_Table )
|
||||
|
||||
/* called when an invalid glyph index is detected */
|
||||
#define FT_INVALID_GLYPH_ID FT_INVALID( FT_Err_Invalid_Glyph_Index )
|
||||
|
||||
/* called when an invalid field value is detected */
|
||||
#define FT_INVALID_DATA FT_INVALID( FT_Err_Invalid_Table )
|
||||
/*
|
||||
* Return the highest power of 2 that is <= value; this correspond to
|
||||
* the highest bit in a given 32-bit value.
|
||||
*/
|
||||
FT_BASE( FT_UInt32 )
|
||||
ft_highpow2( FT_UInt32 value );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
@@ -257,7 +159,7 @@ FT_BEGIN_HEADER
|
||||
FT_CharMap charmap,
|
||||
FT_CMap *acmap );
|
||||
|
||||
/* destroy a charmap (don't remove it from face's list though) */
|
||||
/* destroy a charmap and remove it from face's list */
|
||||
FT_BASE( void )
|
||||
FT_CMap_Done( FT_CMap cmap );
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* The FreeType services (specification only). */
|
||||
/* */
|
||||
/* Copyright 2003 by */
|
||||
/* Copyright 2003, 2004, 2005 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@@ -34,6 +34,13 @@
|
||||
|
||||
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 */
|
||||
#pragma warning( disable : 4127 )
|
||||
|
||||
#endif /* _MSC_VER */
|
||||
|
||||
/*
|
||||
* @macro:
|
||||
@@ -57,18 +64,33 @@ FT_BEGIN_HEADER
|
||||
* A variable that receives the service pointer. Will be NULL
|
||||
* if not found.
|
||||
*/
|
||||
#ifdef __cplusplus
|
||||
|
||||
#define FT_FACE_FIND_SERVICE( face, ptr, id ) \
|
||||
FT_BEGIN_STMNT \
|
||||
FT_Module module = FT_MODULE( FT_FACE(face)->driver ); \
|
||||
/* the strange cast is to allow C++ compilation */ \
|
||||
FT_Pointer* Pptr = (FT_Pointer*) &(ptr); \
|
||||
FT_Module module = FT_MODULE( FT_FACE( face )->driver ); \
|
||||
FT_Pointer _tmp_ = NULL; \
|
||||
FT_Pointer* _pptr_ = (FT_Pointer*)&(ptr); \
|
||||
\
|
||||
\
|
||||
*Pptr = NULL; \
|
||||
if ( module->clazz->get_interface ) \
|
||||
*Pptr = module->clazz->get_interface( module, FT_SERVICE_ID_ ## id ); \
|
||||
_tmp_ = module->clazz->get_interface( module, FT_SERVICE_ID_ ## id ); \
|
||||
*_pptr_ = _tmp_; \
|
||||
FT_END_STMNT
|
||||
|
||||
#else /* !C++ */
|
||||
|
||||
#define FT_FACE_FIND_SERVICE( face, ptr, id ) \
|
||||
FT_BEGIN_STMNT \
|
||||
FT_Module module = FT_MODULE( FT_FACE( face )->driver ); \
|
||||
FT_Pointer _tmp_ = NULL; \
|
||||
\
|
||||
if ( module->clazz->get_interface ) \
|
||||
_tmp_ = module->clazz->get_interface( module, FT_SERVICE_ID_ ## id ); \
|
||||
ptr = _tmp_; \
|
||||
FT_END_STMNT
|
||||
|
||||
#endif /* !C++ */
|
||||
|
||||
/*
|
||||
* @macro:
|
||||
@@ -92,16 +114,33 @@ FT_BEGIN_HEADER
|
||||
* A variable that receives the service pointer. Will be NULL
|
||||
* if not found.
|
||||
*/
|
||||
#ifdef __cplusplus
|
||||
|
||||
#define FT_FACE_FIND_GLOBAL_SERVICE( face, ptr, id ) \
|
||||
FT_BEGIN_STMNT \
|
||||
FT_Module module = FT_MODULE( FT_FACE(face)->driver ); \
|
||||
/* the strange cast is to allow C++ compilation */ \
|
||||
FT_Pointer* Pptr = (FT_Pointer*) &(ptr); \
|
||||
FT_Module module = FT_MODULE( FT_FACE( face )->driver ); \
|
||||
FT_Pointer _tmp_; \
|
||||
FT_Pointer* _pptr_ = (FT_Pointer*)&(ptr); \
|
||||
\
|
||||
\
|
||||
*Pptr = ft_module_get_service( module, FT_SERVICE_ID_ ## id ); \
|
||||
_tmp_ = ft_module_get_service( module, FT_SERVICE_ID_ ## id ); \
|
||||
*_pptr_ = _tmp_; \
|
||||
FT_END_STMNT
|
||||
|
||||
#else /* !C++ */
|
||||
|
||||
#define FT_FACE_FIND_GLOBAL_SERVICE( face, ptr, id ) \
|
||||
FT_BEGIN_STMNT \
|
||||
FT_Module module = FT_MODULE( FT_FACE( face )->driver ); \
|
||||
FT_Pointer _tmp_; \
|
||||
\
|
||||
\
|
||||
_tmp_ = ft_module_get_service( module, FT_SERVICE_ID_ ## id ); \
|
||||
ptr = _tmp_; \
|
||||
FT_END_STMNT
|
||||
|
||||
#endif /* !C++ */
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
@@ -199,27 +238,50 @@ FT_BEGIN_HEADER
|
||||
* ptr ::
|
||||
* A variable receiving the service data. NULL if not available.
|
||||
*/
|
||||
#define FT_FACE_LOOKUP_SERVICE( face, ptr, id ) \
|
||||
FT_BEGIN_STMNT \
|
||||
/* the strange cast is to allow C++ compilation */ \
|
||||
FT_Pointer* pptr = (FT_Pointer*)&(ptr); \
|
||||
FT_Pointer svc; \
|
||||
\
|
||||
\
|
||||
svc = FT_FACE(face)->internal->services. service_ ## id ; \
|
||||
if ( svc == FT_SERVICE_UNAVAILABLE ) \
|
||||
svc = NULL; \
|
||||
else if ( svc == NULL ) \
|
||||
{ \
|
||||
FT_FACE_FIND_SERVICE( face, svc, id ); \
|
||||
\
|
||||
FT_FACE(face)->internal->services. service_ ## id = \
|
||||
(FT_Pointer)( svc != NULL ? svc \
|
||||
: FT_SERVICE_UNAVAILABLE ); \
|
||||
} \
|
||||
*pptr = svc; \
|
||||
#ifdef __cplusplus
|
||||
|
||||
#define FT_FACE_LOOKUP_SERVICE( face, ptr, id ) \
|
||||
FT_BEGIN_STMNT \
|
||||
FT_Pointer svc; \
|
||||
FT_Pointer* Pptr = (FT_Pointer*)&(ptr); \
|
||||
\
|
||||
\
|
||||
svc = FT_FACE( face )->internal->services. service_ ## id; \
|
||||
if ( svc == FT_SERVICE_UNAVAILABLE ) \
|
||||
svc = NULL; \
|
||||
else if ( svc == NULL ) \
|
||||
{ \
|
||||
FT_FACE_FIND_SERVICE( face, svc, id ); \
|
||||
\
|
||||
FT_FACE( face )->internal->services. service_ ## id = \
|
||||
(FT_Pointer)( svc != NULL ? svc \
|
||||
: FT_SERVICE_UNAVAILABLE ); \
|
||||
} \
|
||||
*Pptr = svc; \
|
||||
FT_END_STMNT
|
||||
|
||||
#else /* !C++ */
|
||||
|
||||
#define FT_FACE_LOOKUP_SERVICE( face, ptr, id ) \
|
||||
FT_BEGIN_STMNT \
|
||||
FT_Pointer svc; \
|
||||
\
|
||||
\
|
||||
svc = FT_FACE( face )->internal->services. service_ ## id; \
|
||||
if ( svc == FT_SERVICE_UNAVAILABLE ) \
|
||||
svc = NULL; \
|
||||
else if ( svc == NULL ) \
|
||||
{ \
|
||||
FT_FACE_FIND_SERVICE( face, svc, id ); \
|
||||
\
|
||||
FT_FACE( face )->internal->services. service_ ## id = \
|
||||
(FT_Pointer)( svc != NULL ? svc \
|
||||
: FT_SERVICE_UNAVAILABLE ); \
|
||||
} \
|
||||
ptr = svc; \
|
||||
FT_END_STMNT
|
||||
|
||||
#endif /* !C++ */
|
||||
|
||||
/*
|
||||
* A macro used to define new service structure types.
|
||||
@@ -238,17 +300,18 @@ FT_BEGIN_HEADER
|
||||
* The header files containing the services.
|
||||
*/
|
||||
|
||||
#define FT_SERVICE_MULTIPLE_MASTERS_H <freetype/internal/services/svmm.h>
|
||||
#define FT_SERVICE_POSTSCRIPT_NAME_H <freetype/internal/services/svpostnm.h>
|
||||
#define FT_SERVICE_POSTSCRIPT_CMAPS_H <freetype/internal/services/svpscmap.h>
|
||||
#define FT_SERVICE_POSTSCRIPT_INFO_H <freetype/internal/services/svpsinfo.h>
|
||||
#define FT_SERVICE_GLYPH_DICT_H <freetype/internal/services/svgldict.h>
|
||||
#define FT_SERVICE_BDF_H <freetype/internal/services/svbdf.h>
|
||||
#define FT_SERVICE_XFREE86_NAME_H <freetype/internal/services/svxf86nm.h>
|
||||
#define FT_SERVICE_SFNT_H <freetype/internal/services/svsfnt.h>
|
||||
#define FT_SERVICE_PFR_H <freetype/internal/services/svpfr.h>
|
||||
#define FT_SERVICE_WINFNT_H <freetype/internal/services/svwinfnt.h>
|
||||
#define FT_SERVICE_TT_CMAP_H <freetype/internal/services/svttcmap.h>
|
||||
#define FT_SERVICE_BDF_H <freetype/internal/services/svbdf.h>
|
||||
#define FT_SERVICE_GLYPH_DICT_H <freetype/internal/services/svgldict.h>
|
||||
#define FT_SERVICE_MULTIPLE_MASTERS_H <freetype/internal/services/svmm.h>
|
||||
#define FT_SERVICE_OPENTYPE_VALIDATE_H <freetype/internal/services/svotval.h>
|
||||
#define FT_SERVICE_PFR_H <freetype/internal/services/svpfr.h>
|
||||
#define FT_SERVICE_POSTSCRIPT_CMAPS_H <freetype/internal/services/svpscmap.h>
|
||||
#define FT_SERVICE_POSTSCRIPT_INFO_H <freetype/internal/services/svpsinfo.h>
|
||||
#define FT_SERVICE_POSTSCRIPT_NAME_H <freetype/internal/services/svpostnm.h>
|
||||
#define FT_SERVICE_SFNT_H <freetype/internal/services/svsfnt.h>
|
||||
#define FT_SERVICE_TT_CMAP_H <freetype/internal/services/svttcmap.h>
|
||||
#define FT_SERVICE_WINFNT_H <freetype/internal/services/svwinfnt.h>
|
||||
#define FT_SERVICE_XFREE86_NAME_H <freetype/internal/services/svxf86nm.h>
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* Stream handling (specification). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2004 by */
|
||||
/* Copyright 1996-2001, 2002, 2004, 2005 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@@ -269,6 +269,25 @@ FT_BEGIN_HEADER
|
||||
/* */
|
||||
/* Each GET_xxxx() macro uses an implicit `stream' variable. */
|
||||
/* */
|
||||
#if 0
|
||||
#define FT_GET_MACRO( type ) FT_NEXT_ ## type ( stream->cursor )
|
||||
|
||||
#define FT_GET_CHAR() FT_GET_MACRO( CHAR )
|
||||
#define FT_GET_BYTE() FT_GET_MACRO( BYTE )
|
||||
#define FT_GET_SHORT() FT_GET_MACRO( SHORT )
|
||||
#define FT_GET_USHORT() FT_GET_MACRO( USHORT )
|
||||
#define FT_GET_OFF3() FT_GET_MACRO( OFF3 )
|
||||
#define FT_GET_UOFF3() FT_GET_MACRO( UOFF3 )
|
||||
#define FT_GET_LONG() FT_GET_MACRO( LONG )
|
||||
#define FT_GET_ULONG() FT_GET_MACRO( ULONG )
|
||||
#define FT_GET_TAG4() FT_GET_MACRO( ULONG )
|
||||
|
||||
#define FT_GET_SHORT_LE() FT_GET_MACRO( SHORT_LE )
|
||||
#define FT_GET_USHORT_LE() FT_GET_MACRO( USHORT_LE )
|
||||
#define FT_GET_LONG_LE() FT_GET_MACRO( LONG_LE )
|
||||
#define FT_GET_ULONG_LE() FT_GET_MACRO( ULONG_LE )
|
||||
|
||||
#else
|
||||
#define FT_GET_MACRO( func, type ) ( (type)func( stream ) )
|
||||
|
||||
#define FT_GET_CHAR() FT_GET_MACRO( FT_Stream_GetChar, FT_Char )
|
||||
@@ -285,6 +304,7 @@ FT_BEGIN_HEADER
|
||||
#define FT_GET_USHORT_LE() FT_GET_MACRO( FT_Stream_GetShortLE, FT_UShort )
|
||||
#define FT_GET_LONG_LE() FT_GET_MACRO( FT_Stream_GetLongLE, FT_Long )
|
||||
#define FT_GET_ULONG_LE() FT_GET_MACRO( FT_Stream_GetLongLE, FT_ULong )
|
||||
#endif
|
||||
|
||||
#define FT_READ_MACRO( func, type, var ) \
|
||||
( var = (type)func( stream, &error ), \
|
||||
@@ -323,7 +343,7 @@ FT_BEGIN_HEADER
|
||||
|
||||
/* free a stream */
|
||||
FT_BASE( void )
|
||||
FT_Stream_Free( FT_Stream stream,
|
||||
FT_Stream_Free( FT_Stream stream,
|
||||
FT_Int external );
|
||||
|
||||
/* initialize a stream for reading in-memory data */
|
||||
@@ -365,6 +385,13 @@ FT_BEGIN_HEADER
|
||||
FT_Byte* buffer,
|
||||
FT_ULong count );
|
||||
|
||||
/* try to read bytes at the end of a stream; return number of bytes */
|
||||
/* really available */
|
||||
FT_BASE( FT_ULong )
|
||||
FT_Stream_TryRead( FT_Stream stream,
|
||||
FT_Byte* buffer,
|
||||
FT_ULong count );
|
||||
|
||||
/* Enter a frame of `count' consecutive bytes in a stream. Returns an */
|
||||
/* error if the frame could not be read/accessed. The caller can use */
|
||||
/* the FT_Stream_Get_XXX functions to retrieve frame data without */
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* Tracing handling (specification only). */
|
||||
/* */
|
||||
/* Copyright 2002, 2004 by */
|
||||
/* Copyright 2002, 2004, 2005 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@@ -37,24 +37,26 @@ 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) */
|
||||
|
||||
/* Cache sub-system */
|
||||
/* Cache sub-system */
|
||||
FT_TRACE_DEF( cache ) /* cache sub-system (ftcache.c, etc.) */
|
||||
|
||||
/* SFNT driver components */
|
||||
/* SFNT driver components */
|
||||
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) */
|
||||
FT_TRACE_DEF( ttload ) /* basic TrueType tables (ttload.c) */
|
||||
FT_TRACE_DEF( ttpost ) /* PS table processing (ttpost.c) */
|
||||
FT_TRACE_DEF( ttsbit ) /* TrueType sbit handling (ttsbit.c) */
|
||||
|
||||
/* TrueType driver components */
|
||||
/* TrueType driver components */
|
||||
FT_TRACE_DEF( ttdriver ) /* TT font driver (ttdriver.c) */
|
||||
FT_TRACE_DEF( ttgload ) /* TT glyph loader (ttgload.c) */
|
||||
FT_TRACE_DEF( ttinterp ) /* bytecode interpreter (ttinterp.c) */
|
||||
FT_TRACE_DEF( ttobjs ) /* TT objects manager (ttobjs.c) */
|
||||
FT_TRACE_DEF( ttpload ) /* TT data/program loader (ttpload.c) */
|
||||
FT_TRACE_DEF( ttgxvar ) /* TrueType GX var handler (ttgxvar.c) */
|
||||
|
||||
/* Type 1 driver components */
|
||||
/* Type 1 driver components */
|
||||
FT_TRACE_DEF( t1driver )
|
||||
FT_TRACE_DEF( t1gload )
|
||||
FT_TRACE_DEF( t1hint )
|
||||
@@ -62,26 +64,26 @@ FT_TRACE_DEF( t1load )
|
||||
FT_TRACE_DEF( t1objs )
|
||||
FT_TRACE_DEF( t1parse )
|
||||
|
||||
/* PostScript helper module `psaux' */
|
||||
/* PostScript helper module `psaux' */
|
||||
FT_TRACE_DEF( t1decode )
|
||||
FT_TRACE_DEF( psobjs )
|
||||
|
||||
/* PostScript hinting module `pshinter' */
|
||||
/* PostScript hinting module `pshinter' */
|
||||
FT_TRACE_DEF( pshrec )
|
||||
FT_TRACE_DEF( pshalgo1 )
|
||||
FT_TRACE_DEF( pshalgo2 )
|
||||
|
||||
/* Type 2 driver components */
|
||||
/* Type 2 driver components */
|
||||
FT_TRACE_DEF( cffdriver )
|
||||
FT_TRACE_DEF( cffgload )
|
||||
FT_TRACE_DEF( cffload )
|
||||
FT_TRACE_DEF( cffobjs )
|
||||
FT_TRACE_DEF( cffparse )
|
||||
|
||||
/* Type 42 driver component */
|
||||
/* Type 42 driver component */
|
||||
FT_TRACE_DEF( t42 )
|
||||
|
||||
/* CID driver components */
|
||||
/* CID driver components */
|
||||
FT_TRACE_DEF( cidafm )
|
||||
FT_TRACE_DEF( ciddriver )
|
||||
FT_TRACE_DEF( cidgload )
|
||||
@@ -89,19 +91,28 @@ FT_TRACE_DEF( cidload )
|
||||
FT_TRACE_DEF( cidobjs )
|
||||
FT_TRACE_DEF( cidparse )
|
||||
|
||||
/* Windows fonts component */
|
||||
/* Windows font component */
|
||||
FT_TRACE_DEF( winfnt )
|
||||
|
||||
/* PCF fonts components */
|
||||
/* PCF font components */
|
||||
FT_TRACE_DEF( pcfdriver )
|
||||
FT_TRACE_DEF( pcfread )
|
||||
|
||||
/* BDF fonts component */
|
||||
/* BDF font components */
|
||||
FT_TRACE_DEF( bdfdriver )
|
||||
FT_TRACE_DEF( bdflib )
|
||||
|
||||
/* PFR fonts component */
|
||||
/* PFR font component */
|
||||
FT_TRACE_DEF( pfr )
|
||||
|
||||
/* OpenType validation components */
|
||||
FT_TRACE_DEF( otvmodule )
|
||||
FT_TRACE_DEF( otvcommon )
|
||||
FT_TRACE_DEF( otvbase )
|
||||
FT_TRACE_DEF( otvgdef )
|
||||
FT_TRACE_DEF( otvgpos )
|
||||
FT_TRACE_DEF( otvgsub )
|
||||
FT_TRACE_DEF( otvjstf )
|
||||
|
||||
|
||||
/* END */
|
||||
|
||||
@@ -0,0 +1,148 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftvalid.h */
|
||||
/* */
|
||||
/* FreeType validation support (specification). */
|
||||
/* */
|
||||
/* Copyright 2004 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#ifndef __FTVALID_H__
|
||||
#define __FTVALID_H__
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_CONFIG_STANDARD_LIBRARY_H /* for ft_setjmp and ft_longjmp */
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/**** ****/
|
||||
/**** ****/
|
||||
/**** V A L I D A T I O N ****/
|
||||
/**** ****/
|
||||
/**** ****/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
|
||||
/* handle to a validation object */
|
||||
typedef struct FT_ValidatorRec_* FT_Validator;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* There are three distinct validation levels defined here: */
|
||||
/* */
|
||||
/* FT_VALIDATE_DEFAULT :: */
|
||||
/* A table that passes this validation level can be used reliably by */
|
||||
/* FreeType. It generally means that all offsets have been checked to */
|
||||
/* prevent out-of-bound reads, that array counts are correct, etc. */
|
||||
/* */
|
||||
/* FT_VALIDATE_TIGHT :: */
|
||||
/* A table that passes this validation level can be used reliably and */
|
||||
/* doesn't contain invalid data. For example, a charmap table that */
|
||||
/* returns invalid glyph indices will not pass, even though it can */
|
||||
/* be used with FreeType in default mode (the library will simply */
|
||||
/* return an error later when trying to load the glyph). */
|
||||
/* */
|
||||
/* It also checks that fields which must be a multiple of 2, 4, or 8, */
|
||||
/* don't have incorrect values, etc. */
|
||||
/* */
|
||||
/* FT_VALIDATE_PARANOID :: */
|
||||
/* Only for font debugging. Checks that a table follows the */
|
||||
/* specification by 100%. Very few fonts will be able to pass this */
|
||||
/* level anyway but it can be useful for certain tools like font */
|
||||
/* editors/converters. */
|
||||
/* */
|
||||
typedef enum FT_ValidationLevel_
|
||||
{
|
||||
FT_VALIDATE_DEFAULT = 0,
|
||||
FT_VALIDATE_TIGHT,
|
||||
FT_VALIDATE_PARANOID
|
||||
|
||||
} FT_ValidationLevel;
|
||||
|
||||
|
||||
/* validator structure */
|
||||
typedef struct FT_ValidatorRec_
|
||||
{
|
||||
const FT_Byte* base; /* address of table in memory */
|
||||
const FT_Byte* limit; /* `base' + sizeof(table) in memory */
|
||||
FT_ValidationLevel level; /* validation level */
|
||||
FT_Error error; /* error returned. 0 means success */
|
||||
|
||||
ft_jmp_buf jump_buffer; /* used for exception handling */
|
||||
|
||||
} FT_ValidatorRec;
|
||||
|
||||
|
||||
#define FT_VALIDATOR( x ) ((FT_Validator)( x ))
|
||||
|
||||
|
||||
FT_BASE( void )
|
||||
ft_validator_init( FT_Validator valid,
|
||||
const FT_Byte* base,
|
||||
const FT_Byte* limit,
|
||||
FT_ValidationLevel level );
|
||||
|
||||
FT_BASE( FT_Int )
|
||||
ft_validator_run( FT_Validator valid );
|
||||
|
||||
/* Sets the error field in a validator, then calls `longjmp' to return */
|
||||
/* to high-level caller. Using `setjmp/longjmp' avoids many stupid */
|
||||
/* error checks within the validation routines. */
|
||||
/* */
|
||||
FT_BASE( void )
|
||||
ft_validator_error( FT_Validator valid,
|
||||
FT_Error error );
|
||||
|
||||
|
||||
/* Calls ft_validate_error. Assumes that the `valid' local variable */
|
||||
/* holds a pointer to the current validator object. */
|
||||
/* */
|
||||
/* Use preprocessor prescan to pass FT_ERR_PREFIX. */
|
||||
/* */
|
||||
#define FT_INVALID( _prefix, _error ) FT_INVALID_( _prefix, _error )
|
||||
#define FT_INVALID_( _prefix, _error ) \
|
||||
ft_validator_error( valid, _prefix ## _error )
|
||||
|
||||
/* called when a broken table is detected */
|
||||
#define FT_INVALID_TOO_SHORT \
|
||||
FT_INVALID( FT_ERR_PREFIX, Invalid_Table )
|
||||
|
||||
/* called when an invalid offset is detected */
|
||||
#define FT_INVALID_OFFSET \
|
||||
FT_INVALID( FT_ERR_PREFIX, Invalid_Offset )
|
||||
|
||||
/* called when an invalid format/value is detected */
|
||||
#define FT_INVALID_FORMAT \
|
||||
FT_INVALID( FT_ERR_PREFIX, Invalid_Table )
|
||||
|
||||
/* called when an invalid glyph index is detected */
|
||||
#define FT_INVALID_GLYPH_ID \
|
||||
FT_INVALID( FT_ERR_PREFIX, Invalid_Glyph_Index )
|
||||
|
||||
/* called when an invalid field value is detected */
|
||||
#define FT_INVALID_DATA \
|
||||
FT_INVALID( FT_ERR_PREFIX, Invalid_Table )
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* __FTVALID_H__ */
|
||||
|
||||
|
||||
/* END */
|
||||
@@ -35,6 +35,7 @@
|
||||
#define FT_INTERNAL_SFNT_H <freetype/internal/sfnt.h>
|
||||
#define FT_INTERNAL_SERVICE_H <freetype/internal/ftserv.h>
|
||||
#define FT_INTERNAL_RFORK_H <freetype/internal/ftrfork.h>
|
||||
#define FT_INTERNAL_VALIDATE_H <freetype/internal/ftvalid.h>
|
||||
|
||||
#define FT_INTERNAL_TRUETYPE_TYPES_H <freetype/internal/tttypes.h>
|
||||
#define FT_INTERNAL_TYPE1_TYPES_H <freetype/internal/t1types.h>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
/* Auxiliary functions and data structures related to PostScript fonts */
|
||||
/* (specification). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003 by */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@@ -478,6 +478,17 @@ FT_BEGIN_HEADER
|
||||
} T1_Builder_FuncsRec;
|
||||
|
||||
|
||||
/* an enumeration type to handle charstring parsing states */
|
||||
typedef enum T1_ParseState_
|
||||
{
|
||||
T1_Parse_Start,
|
||||
T1_Parse_Have_Width,
|
||||
T1_Parse_Have_Moveto,
|
||||
T1_Parse_Have_Path
|
||||
|
||||
} T1_ParseState;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Structure> */
|
||||
@@ -519,15 +530,13 @@ FT_BEGIN_HEADER
|
||||
/* */
|
||||
/* bbox :: Unused. */
|
||||
/* */
|
||||
/* path_begun :: A flag which indicates that a new path has begun. */
|
||||
/* parse_state :: An enumeration which controls the charstring */
|
||||
/* parsing state. */
|
||||
/* */
|
||||
/* load_points :: If this flag is not set, no points are loaded. */
|
||||
/* */
|
||||
/* no_recurse :: Set but not used. */
|
||||
/* */
|
||||
/* error :: An error code that is only used to report memory */
|
||||
/* allocation problems. */
|
||||
/* */
|
||||
/* metrics_only :: A boolean indicating that we only want to compute */
|
||||
/* the metrics of a given glyph, not load all of its */
|
||||
/* points. */
|
||||
@@ -555,12 +564,11 @@ FT_BEGIN_HEADER
|
||||
FT_Vector advance;
|
||||
|
||||
FT_BBox bbox; /* bounding box */
|
||||
FT_Bool path_begun;
|
||||
T1_ParseState parse_state;
|
||||
FT_Bool load_points;
|
||||
FT_Bool no_recurse;
|
||||
FT_Bool shift;
|
||||
|
||||
FT_Error error; /* only used for memory errors */
|
||||
FT_Bool metrics_only;
|
||||
|
||||
void* hints_funcs; /* hinter-specific */
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/* */
|
||||
/* svmm.h */
|
||||
/* */
|
||||
/* The FreeType Multiple Masters services (specification). */
|
||||
/* The FreeType Multiple Masters and GX var services (specification). */
|
||||
/* */
|
||||
/* Copyright 2003 by */
|
||||
/* Copyright 2003, 2004 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@@ -39,11 +39,20 @@ FT_BEGIN_HEADER
|
||||
(*FT_Get_MM_Func)( FT_Face face,
|
||||
FT_Multi_Master* master );
|
||||
|
||||
typedef FT_Error
|
||||
(*FT_Get_MM_Var_Func)( FT_Face face,
|
||||
FT_MM_Var* *master );
|
||||
|
||||
typedef FT_Error
|
||||
(*FT_Set_MM_Design_Func)( FT_Face face,
|
||||
FT_UInt num_coords,
|
||||
FT_Long* coords );
|
||||
|
||||
typedef FT_Error
|
||||
(*FT_Set_Var_Design_Func)( FT_Face face,
|
||||
FT_UInt num_coords,
|
||||
FT_Fixed* coords );
|
||||
|
||||
typedef FT_Error
|
||||
(*FT_Set_MM_Blend_Func)( FT_Face face,
|
||||
FT_UInt num_coords,
|
||||
@@ -52,9 +61,11 @@ FT_BEGIN_HEADER
|
||||
|
||||
FT_DEFINE_SERVICE( MultiMasters )
|
||||
{
|
||||
FT_Get_MM_Func get_mm;
|
||||
FT_Set_MM_Design_Func set_mm_design;
|
||||
FT_Set_MM_Blend_Func set_mm_blend;
|
||||
FT_Get_MM_Func get_mm;
|
||||
FT_Set_MM_Design_Func set_mm_design;
|
||||
FT_Set_MM_Blend_Func set_mm_blend;
|
||||
FT_Get_MM_Var_Func get_mm_var;
|
||||
FT_Set_Var_Design_Func set_var_design;
|
||||
};
|
||||
|
||||
/* */
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* svotval.h */
|
||||
/* */
|
||||
/* The FreeType OpenType validation service (specification). */
|
||||
/* */
|
||||
/* Copyright 2004 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#ifndef __SVOTVAL_H__
|
||||
#define __SVOTVAL_H__
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
#define FT_SERVICE_ID_OPENTYPE_VALIDATE "opentype-validate"
|
||||
|
||||
|
||||
typedef FT_Error
|
||||
(*otv_validate_func)( FT_Face face,
|
||||
FT_UInt ot_flags,
|
||||
FT_Bytes *base,
|
||||
FT_Bytes *gdef,
|
||||
FT_Bytes *gpos,
|
||||
FT_Bytes *gsub,
|
||||
FT_Bytes *jstf );
|
||||
|
||||
|
||||
FT_DEFINE_SERVICE( OTvalidate )
|
||||
{
|
||||
otv_validate_func validate;
|
||||
};
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
|
||||
#endif /* __SVOTVAL_H__ */
|
||||
|
||||
|
||||
/* END */
|
||||
@@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* The FreeType PostScript info service (specification). */
|
||||
/* */
|
||||
/* Copyright 2003 by */
|
||||
/* Copyright 2003, 2004 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@@ -36,11 +36,16 @@ FT_BEGIN_HEADER
|
||||
typedef FT_Int
|
||||
(*PS_HasGlyphNamesFunc)( FT_Face face );
|
||||
|
||||
typedef FT_Error
|
||||
(*PS_GetFontPrivateFunc)( FT_Face face,
|
||||
PS_PrivateRec* afont_private );
|
||||
|
||||
|
||||
FT_DEFINE_SERVICE( PsInfo )
|
||||
{
|
||||
PS_GetFontInfoFunc ps_get_font_info;
|
||||
PS_HasGlyphNamesFunc ps_has_glyph_names;
|
||||
PS_GetFontInfoFunc ps_get_font_info;
|
||||
PS_HasGlyphNamesFunc ps_has_glyph_names;
|
||||
PS_GetFontPrivateFunc ps_get_font_private;
|
||||
};
|
||||
|
||||
/* */
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/* */
|
||||
/* svsfnt.h */
|
||||
/* */
|
||||
/* The FreeType PostScript name services (specification). */
|
||||
/* The FreeType SFNT table loading service (specification). */
|
||||
/* */
|
||||
/* Copyright 2003 by */
|
||||
/* Copyright 2003, 2004 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@@ -50,11 +50,22 @@ FT_BEGIN_HEADER
|
||||
(*FT_SFNT_TableGetFunc)( FT_Face face,
|
||||
FT_Sfnt_Tag tag );
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Used to implement FT_Sfnt_Table_Info().
|
||||
*/
|
||||
typedef FT_Error
|
||||
(*FT_SFNT_TableInfoFunc)( FT_Face face,
|
||||
FT_UInt idx,
|
||||
FT_ULong *tag,
|
||||
FT_ULong *length );
|
||||
|
||||
|
||||
FT_DEFINE_SERVICE( SFNT_Table )
|
||||
{
|
||||
FT_SFNT_TableLoadFunc load_table;
|
||||
FT_SFNT_TableGetFunc get_table;
|
||||
FT_SFNT_TableInfoFunc table_info;
|
||||
};
|
||||
|
||||
/* */
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* High-level `sfnt' driver interface (specification). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004 by */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@@ -478,6 +478,27 @@ FT_BEGIN_HEADER
|
||||
(*TT_Free_Table_Func)( TT_Face face );
|
||||
|
||||
|
||||
/*
|
||||
* @functype:
|
||||
* TT_Face_GetKerningFunc
|
||||
*
|
||||
* @description:
|
||||
* Return the horizontal kerning value between two glyphs.
|
||||
*
|
||||
* @input:
|
||||
* face :: A handle to the source face object.
|
||||
* left_glyph :: The left glyph index.
|
||||
* right_glyph :: The right glyph index.
|
||||
*
|
||||
* @return:
|
||||
* The kerning value in font units.
|
||||
*/
|
||||
typedef FT_Int
|
||||
(*TT_Face_GetKerningFunc)( TT_Face face,
|
||||
FT_UInt left_glyph,
|
||||
FT_UInt right_glyph );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
@@ -534,6 +555,9 @@ FT_BEGIN_HEADER
|
||||
TT_Load_SBit_Image_Func load_sbit_image;
|
||||
TT_Free_Table_Func free_sbits;
|
||||
|
||||
/* see `ttkern.h' */
|
||||
TT_Face_GetKerningFunc get_kerning;
|
||||
|
||||
/* see `ttpost.h' */
|
||||
TT_Get_PS_Name_Func get_psname;
|
||||
TT_Free_Table_Func free_psnames;
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
/* Basic SFNT/TrueType type definitions and interface (specification */
|
||||
/* only). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002 by */
|
||||
/* Copyright 1996-2001, 2002, 2004, 2005 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@@ -25,6 +25,10 @@
|
||||
#include FT_TRUETYPE_TABLES_H
|
||||
#include FT_INTERNAL_OBJECTS_H
|
||||
|
||||
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
|
||||
#include FT_MULTIPLE_MASTERS_H
|
||||
#endif
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
@@ -307,6 +311,8 @@ FT_BEGIN_HEADER
|
||||
} TT_GaspRec;
|
||||
|
||||
|
||||
#ifndef FT_OPTIMIZE_MEMORY
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
@@ -383,6 +389,8 @@ FT_BEGIN_HEADER
|
||||
|
||||
} TT_Kern0_PairRec, *TT_Kern0_Pair;
|
||||
|
||||
#endif /* !OPTIMIZE_MEMORY */
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
@@ -818,6 +826,24 @@ FT_BEGIN_HEADER
|
||||
} TT_Post_NamesRec, *TT_Post_Names;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/*** ***/
|
||||
/*** ***/
|
||||
/*** GX VARIATION TABLE SUPPORT ***/
|
||||
/*** ***/
|
||||
/*** ***/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
|
||||
typedef struct GX_BlendRec_ *GX_Blend;
|
||||
#endif
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
@@ -1110,6 +1136,9 @@ FT_BEGIN_HEADER
|
||||
/* glyph data within the `glyf' table. */
|
||||
/* Ignored for Type 2 font faces. */
|
||||
/* */
|
||||
/* glyf_len :: The length of the `glyf' table. Needed */
|
||||
/* for malformed `loca' tables. */
|
||||
/* */
|
||||
/* font_program_size :: Size in bytecodes of the face's font */
|
||||
/* program. 0 if none defined. Ignored for */
|
||||
/* Type 2 fonts. */
|
||||
@@ -1152,8 +1181,18 @@ FT_BEGIN_HEADER
|
||||
/* unpatented_hinting :: If true, use only unpatented methods in */
|
||||
/* the bytecode interpreter. */
|
||||
/* */
|
||||
/* doblend :: A boolean which is set if the font should */
|
||||
/* be blended (this is for GX var). */
|
||||
/* */
|
||||
/* blend :: Contains the data needed to control GX */
|
||||
/* variation tables (rather like Multiple */
|
||||
/* Master data). */
|
||||
/* */
|
||||
/* extra :: Reserved for third-party font drivers. */
|
||||
/* */
|
||||
/* postscript_name :: The PS name of the font. Used by the */
|
||||
/* postscript name service. */
|
||||
/* */
|
||||
typedef struct TT_FaceRec_
|
||||
{
|
||||
FT_FaceRec root;
|
||||
@@ -1166,12 +1205,20 @@ FT_BEGIN_HEADER
|
||||
|
||||
TT_Header header; /* TrueType header table */
|
||||
TT_HoriHeader horizontal; /* TrueType horizontal header */
|
||||
#ifdef FT_OPTIMIZE_MEMORY
|
||||
FT_Byte* horz_metrics;
|
||||
FT_ULong horz_metrics_size;
|
||||
#endif
|
||||
|
||||
TT_MaxProfile max_profile;
|
||||
FT_ULong max_components;
|
||||
|
||||
FT_Bool vertical_info;
|
||||
TT_VertHeader vertical; /* TT Vertical header, if present */
|
||||
#ifdef FT_OPTIMIZE_MEMORY
|
||||
FT_Byte* vert_metrics;
|
||||
FT_ULong vert_metrics_size;
|
||||
#endif
|
||||
|
||||
FT_UShort num_names; /* number of name records */
|
||||
TT_NameTableRec name_table; /* name table */
|
||||
@@ -1206,7 +1253,15 @@ FT_BEGIN_HEADER
|
||||
/***********************************************************************/
|
||||
|
||||
/* horizontal device metrics */
|
||||
#ifdef FT_OPTIMIZE_MEMORY
|
||||
FT_Byte* hdmx_table;
|
||||
FT_ULong hdmx_table_size;
|
||||
FT_UInt hdmx_record_count;
|
||||
FT_ULong hdmx_record_size;
|
||||
FT_Byte* hdmx_record_sizes;
|
||||
#else
|
||||
TT_HdmxRec hdmx;
|
||||
#endif
|
||||
|
||||
/* grid-fitting and scaling table */
|
||||
TT_GaspRec gasp; /* the `gasp' table */
|
||||
@@ -1215,8 +1270,14 @@ FT_BEGIN_HEADER
|
||||
TT_PCLT pclt;
|
||||
|
||||
/* embedded bitmaps support */
|
||||
#ifdef FT_OPTIMIZE_MEMORY
|
||||
FT_Byte* sbit_table;
|
||||
FT_ULong sbit_table_size;
|
||||
FT_UInt sbit_num_strikes;
|
||||
#else
|
||||
FT_ULong num_sbit_strikes;
|
||||
TT_SBit_Strike sbit_strikes;
|
||||
#endif
|
||||
|
||||
FT_ULong num_sbit_scales;
|
||||
TT_SBit_Scale sbit_scales;
|
||||
@@ -1232,8 +1293,15 @@ FT_BEGIN_HEADER
|
||||
/***********************************************************************/
|
||||
|
||||
/* the glyph locations */
|
||||
#ifdef FT_OPTIMIZE_MEMORY
|
||||
FT_UInt num_locations;
|
||||
FT_Byte* glyph_locations;
|
||||
#else
|
||||
FT_UShort num_locations;
|
||||
FT_Long* glyph_locations;
|
||||
#endif
|
||||
|
||||
FT_ULong glyf_len;
|
||||
|
||||
/* the font program, if any */
|
||||
FT_ULong font_program_size;
|
||||
@@ -1247,10 +1315,18 @@ FT_BEGIN_HEADER
|
||||
FT_ULong cvt_size;
|
||||
FT_Short* cvt;
|
||||
|
||||
#ifdef FT_OPTIMIZE_MEMORY
|
||||
FT_Byte* kern_table;
|
||||
FT_ULong kern_table_size;
|
||||
FT_UInt num_kern_tables;
|
||||
FT_UInt32 kern_avail_bits;
|
||||
FT_UInt32 kern_order_bits;
|
||||
#else
|
||||
/* the format 0 kerning table, if any */
|
||||
FT_Int num_kern_pairs;
|
||||
FT_Int kern_table_index;
|
||||
TT_Kern0_Pair kern_pairs;
|
||||
#endif
|
||||
|
||||
/* A pointer to the bytecode interpreter to use. This is also */
|
||||
/* used to hook the debugger for the `ttdebug' utility. */
|
||||
@@ -1261,6 +1337,11 @@ FT_BEGIN_HEADER
|
||||
FT_Bool unpatented_hinting;
|
||||
#endif
|
||||
|
||||
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
|
||||
FT_Bool doblend;
|
||||
GX_Blend blend;
|
||||
#endif
|
||||
|
||||
/***********************************************************************/
|
||||
/* */
|
||||
/* Other tables or fields. This is used by derivative formats like */
|
||||
|
||||
@@ -226,7 +226,7 @@ FT_BEGIN_HEADER
|
||||
typedef struct PS_DesignMap_
|
||||
{
|
||||
FT_Byte num_points;
|
||||
FT_Fixed* design_points;
|
||||
FT_Long* design_points;
|
||||
FT_Fixed* blend_points;
|
||||
|
||||
} PS_DesignMapRec, *PS_DesignMap;
|
||||
@@ -387,6 +387,38 @@ FT_BEGIN_HEADER
|
||||
FT_Get_PS_Font_Info( FT_Face face,
|
||||
PS_FontInfoRec *afont_info );
|
||||
|
||||
|
||||
/************************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Get_PS_Font_Private
|
||||
*
|
||||
* @description:
|
||||
* Retrieve the @PS_PrivateRec structure corresponding to a given
|
||||
* Postscript font.
|
||||
*
|
||||
* @input:
|
||||
* face ::
|
||||
* Postscript face handle.
|
||||
*
|
||||
* @output:
|
||||
* afont_private ::
|
||||
* Output private dictionary structure pointer.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0 means success.
|
||||
*
|
||||
* @note:
|
||||
* The string pointers within the font info structure are owned by
|
||||
* the face and don't need to be freed by the caller.
|
||||
*
|
||||
* If the font's format is not Postscript-based, this function will
|
||||
* return the FT_Err_Invalid_Argument error code.
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Get_PS_Font_Private( FT_Face face,
|
||||
PS_PrivateRec *afont_private );
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* TrueType name ID definitions (specification only). */
|
||||
/* */
|
||||
/* Copyright 1996-2002, 2003 by */
|
||||
/* Copyright 1996-2002, 2003, 2004 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@@ -443,15 +443,23 @@ FT_BEGIN_HEADER
|
||||
/* of the TTF `name' table if the `platform' identifier code is */
|
||||
/* TT_PLATFORM_MICROSOFT. */
|
||||
/* */
|
||||
/* The canonical source for the MS assigned LCID's used to be at */
|
||||
/* The canonical source for the MS assigned LCID's (seems to) be at */
|
||||
/* */
|
||||
/* http://www.microsoft.com/globaldev/reference/lcid-all.mspx */
|
||||
/* */
|
||||
/* It used to be at various places, among them */
|
||||
/* */
|
||||
/* http://www.microsoft.com/typography/OTSPEC/lcid-cp.txt */
|
||||
/* */
|
||||
/* Now (2002-11-15), the Microsoft site directs to */
|
||||
/* */
|
||||
/* http://www.microsoft.com/globaldev/reference/loclanghome.asp */
|
||||
/* http://support.microsoft.com/support/kb/articles/Q224/8/04.ASP */
|
||||
/* http://msdn.microsoft.com/library/en-us/passport25/ */
|
||||
/* NET_Passport_VBScript_Documentation/Single_Sign_In/ */
|
||||
/* Advanced_Single_Sign_In/Localization_and_LCIDs.asp */
|
||||
/* */
|
||||
/* Hopefully, it seems now that the Globaldev site prevails... */
|
||||
/* (updated by Antoine, 2004-02-17) */
|
||||
|
||||
#define TT_MS_LANGID_ARABIC_GENERAL 0x0001
|
||||
#define TT_MS_LANGID_ARABIC_SAUDI_ARABIA 0x0401
|
||||
#define TT_MS_LANGID_ARABIC_IRAQ 0x0801
|
||||
#define TT_MS_LANGID_ARABIC_EGYPT 0x0c01
|
||||
@@ -470,18 +478,23 @@ FT_BEGIN_HEADER
|
||||
#define TT_MS_LANGID_ARABIC_QATAR 0x4001
|
||||
#define TT_MS_LANGID_BULGARIAN_BULGARIA 0x0402
|
||||
#define TT_MS_LANGID_CATALAN_SPAIN 0x0403
|
||||
#define TT_MS_LANGID_CHINESE_GENERAL 0x0004
|
||||
#define TT_MS_LANGID_CHINESE_TAIWAN 0x0404
|
||||
#define TT_MS_LANGID_CHINESE_PRC 0x0804
|
||||
#define TT_MS_LANGID_CHINESE_HONG_KONG 0x0c04
|
||||
#define TT_MS_LANGID_CHINESE_SINGAPORE 0x1004
|
||||
|
||||
#if 1 /* this used to be this value (and it still is in many places) */
|
||||
#if 1 /* this looks like the correct value */
|
||||
#define TT_MS_LANGID_CHINESE_MACAU 0x1404
|
||||
#else /* but beware, Microsoft may change its mind...
|
||||
the most recent Word reference has the following: */
|
||||
#define TT_MS_LANGID_CHINESE_MACAU TT_MS_LANGID_CHINESE_HONG_KONG
|
||||
#endif
|
||||
|
||||
#if 0 /* used only with .NET "cultures"; commented out */
|
||||
#define TT_MS_LANGID_CHINESE_TRADITIONAL 0x7C04
|
||||
#endif
|
||||
|
||||
#define TT_MS_LANGID_CZECH_CZECH_REPUBLIC 0x0405
|
||||
#define TT_MS_LANGID_DANISH_DENMARK 0x0406
|
||||
#define TT_MS_LANGID_GERMAN_GERMANY 0x0407
|
||||
@@ -490,6 +503,13 @@ FT_BEGIN_HEADER
|
||||
#define TT_MS_LANGID_GERMAN_LUXEMBOURG 0x1007
|
||||
#define TT_MS_LANGID_GERMAN_LIECHTENSTEI 0x1407
|
||||
#define TT_MS_LANGID_GREEK_GREECE 0x0408
|
||||
|
||||
/* don't ask what this one means... It is commented out currently. */
|
||||
#if 0
|
||||
#define TT_MS_LANGID_GREEK_GREECE2 0x2008
|
||||
#endif
|
||||
|
||||
#define TT_MS_LANGID_ENGLISH_GENERAL 0x0009
|
||||
#define TT_MS_LANGID_ENGLISH_UNITED_STATES 0x0409
|
||||
#define TT_MS_LANGID_ENGLISH_UNITED_KINGDOM 0x0809
|
||||
#define TT_MS_LANGID_ENGLISH_AUSTRALIA 0x0c09
|
||||
@@ -503,6 +523,11 @@ FT_BEGIN_HEADER
|
||||
#define TT_MS_LANGID_ENGLISH_TRINIDAD 0x2c09
|
||||
#define TT_MS_LANGID_ENGLISH_ZIMBABWE 0x3009
|
||||
#define TT_MS_LANGID_ENGLISH_PHILIPPINES 0x3409
|
||||
#define TT_MS_LANGID_ENGLISH_INDONESIA 0x3809
|
||||
#define TT_MS_LANGID_ENGLISH_HONG_KONG 0x3c09
|
||||
#define TT_MS_LANGID_ENGLISH_INDIA 0x4009
|
||||
#define TT_MS_LANGID_ENGLISH_MALAYSIA 0x4409
|
||||
#define TT_MS_LANGID_ENGLISH_SINGAPORE 0x4809
|
||||
#define TT_MS_LANGID_SPANISH_SPAIN_TRADITIONAL_SORT 0x040a
|
||||
#define TT_MS_LANGID_SPANISH_MEXICO 0x080a
|
||||
#define TT_MS_LANGID_SPANISH_SPAIN_INTERNATIONAL_SORT 0x0c0a
|
||||
@@ -523,6 +548,10 @@ FT_BEGIN_HEADER
|
||||
#define TT_MS_LANGID_SPANISH_HONDURAS 0x480a
|
||||
#define TT_MS_LANGID_SPANISH_NICARAGUA 0x4c0a
|
||||
#define TT_MS_LANGID_SPANISH_PUERTO_RICO 0x500a
|
||||
#define TT_MS_LANGID_SPANISH_UNITED_STATES 0x540a
|
||||
/* The following ID blatantly violate MS specs by using a */
|
||||
/* sublanguage > 0x1F. */
|
||||
#define TT_MS_LANGID_SPANISH_LATIN_AMERICA 0xE40aU
|
||||
#define TT_MS_LANGID_FINNISH_FINLAND 0x040b
|
||||
#define TT_MS_LANGID_FRENCH_FRANCE 0x040c
|
||||
#define TT_MS_LANGID_FRENCH_BELGIUM 0x080c
|
||||
@@ -530,6 +559,19 @@ FT_BEGIN_HEADER
|
||||
#define TT_MS_LANGID_FRENCH_SWITZERLAND 0x100c
|
||||
#define TT_MS_LANGID_FRENCH_LUXEMBOURG 0x140c
|
||||
#define TT_MS_LANGID_FRENCH_MONACO 0x180c
|
||||
#define TT_MS_LANGID_FRENCH_WEST_INDIES 0x1c0c
|
||||
#define TT_MS_LANGID_FRENCH_REUNION 0x200c
|
||||
#define TT_MS_LANGID_FRENCH_CONGO 0x240c
|
||||
/* which was formerly: */
|
||||
#define TT_MS_LANGID_FRENCH_ZAIRE TT_MS_LANGID_FRENCH_CONGO
|
||||
#define TT_MS_LANGID_FRENCH_SENEGAL 0x280c
|
||||
#define TT_MS_LANGID_FRENCH_CAMEROON 0x2c0c
|
||||
#define TT_MS_LANGID_FRENCH_COTE_D_IVOIRE 0x300c
|
||||
#define TT_MS_LANGID_FRENCH_MALI 0x340c
|
||||
#define TT_MS_LANGID_FRENCH_MOROCCO 0x380c
|
||||
#define TT_MS_LANGID_FRENCH_HAITI 0x3c0c
|
||||
/* and another violation of the spec (see 0xE40aU) */
|
||||
#define TT_MS_LANGID_FRENCH_NORTH_AFRICA 0xE40cU
|
||||
#define TT_MS_LANGID_HEBREW_ISRAEL 0x040d
|
||||
#define TT_MS_LANGID_HUNGARIAN_HUNGARY 0x040e
|
||||
#define TT_MS_LANGID_ICELANDIC_ICELAND 0x040f
|
||||
@@ -553,6 +595,18 @@ FT_BEGIN_HEADER
|
||||
#define TT_MS_LANGID_CROATIAN_CROATIA 0x041a
|
||||
#define TT_MS_LANGID_SERBIAN_SERBIA_LATIN 0x081a
|
||||
#define TT_MS_LANGID_SERBIAN_SERBIA_CYRILLIC 0x0c1a
|
||||
|
||||
#if 0 /* this used to be this value, but it looks like we were wrong */
|
||||
#define TT_MS_LANGID_BOSNIAN_BOSNIA_HERZEGOVINA 0x101a
|
||||
#else /* current sources say */
|
||||
#define TT_MS_LANGID_CROATIAN_BOSNIA_HERZEGOVINA 0x101a
|
||||
#define TT_MS_LANGID_BOSNIAN_BOSNIA_HERZEGOVINA 0x141a
|
||||
/* and XPsp2 Platform SDK added (2004-07-26) */
|
||||
/* Names are shortened to be signifiant within 40 chars. */
|
||||
#define TT_MS_LANGID_SERBIAN_BOSNIA_HERZ_LATIN 0x181a
|
||||
#define TT_MS_LANGID_SERBIAN_BOSNIA_HERZ_CYRILLIC 0x181a
|
||||
#endif
|
||||
|
||||
#define TT_MS_LANGID_SLOVAK_SLOVAKIA 0x041b
|
||||
#define TT_MS_LANGID_ALBANIAN_ALBANIA 0x041c
|
||||
#define TT_MS_LANGID_SWEDISH_SWEDEN 0x041d
|
||||
@@ -560,6 +614,7 @@ FT_BEGIN_HEADER
|
||||
#define TT_MS_LANGID_THAI_THAILAND 0x041e
|
||||
#define TT_MS_LANGID_TURKISH_TURKEY 0x041f
|
||||
#define TT_MS_LANGID_URDU_PAKISTAN 0x0420
|
||||
#define TT_MS_LANGID_URDU_INDIA 0x0820
|
||||
#define TT_MS_LANGID_INDONESIAN_INDONESIA 0x0421
|
||||
#define TT_MS_LANGID_UKRAINIAN_UKRAINE 0x0422
|
||||
#define TT_MS_LANGID_BELARUSIAN_BELARUS 0x0423
|
||||
@@ -568,11 +623,7 @@ FT_BEGIN_HEADER
|
||||
#define TT_MS_LANGID_LATVIAN_LATVIA 0x0426
|
||||
#define TT_MS_LANGID_LITHUANIAN_LITHUANIA 0x0427
|
||||
#define TT_MS_LANGID_CLASSIC_LITHUANIAN_LITHUANIA 0x0827
|
||||
|
||||
#if 0 /* this seems to be an error that have been dropped */
|
||||
#define TT_MS_LANGID_MAORI_NEW_ZEALAND 0x0428
|
||||
#endif
|
||||
|
||||
#define TT_MS_LANGID_TAJIK_TAJIKISTAN 0x0428
|
||||
#define TT_MS_LANGID_FARSI_IRAN 0x0429
|
||||
#define TT_MS_LANGID_VIETNAMESE_VIET_NAM 0x042a
|
||||
#define TT_MS_LANGID_ARMENIAN_ARMENIA 0x042b
|
||||
@@ -592,6 +643,17 @@ FT_BEGIN_HEADER
|
||||
#define TT_MS_LANGID_FAEROESE_FAEROE_ISLANDS 0x0438
|
||||
#define TT_MS_LANGID_HINDI_INDIA 0x0439
|
||||
#define TT_MS_LANGID_MALTESE_MALTA 0x043a
|
||||
/* Added by XPsp2 Platform SDK (2004-07-26) */
|
||||
#define TT_MS_LANGID_SAMI_NORTHERN_NORWAY 0x043b
|
||||
#define TT_MS_LANGID_SAMI_NORTHERN_SWEDEN 0x083b
|
||||
#define TT_MS_LANGID_SAMI_NORTHERN_FINLAND 0x0C3b
|
||||
#define TT_MS_LANGID_SAMI_LULE_NORWAY 0x103b
|
||||
#define TT_MS_LANGID_SAMI_LULE_SWEDEN 0x143b
|
||||
#define TT_MS_LANGID_SAMI_SOUTHERN_NORWAY 0x183b
|
||||
#define TT_MS_LANGID_SAMI_SOUTHERN_SWEDEN 0x1C3b
|
||||
#define TT_MS_LANGID_SAMI_SKOLT_FINLAND 0x203b
|
||||
#define TT_MS_LANGID_SAMI_INARI_FINLAND 0x243b
|
||||
/* ... and we also keep our old identifier... */
|
||||
#define TT_MS_LANGID_SAAMI_LAPONIA 0x043b
|
||||
|
||||
#if 0 /* this seems to be a previous invertion */
|
||||
@@ -602,15 +664,24 @@ FT_BEGIN_HEADER
|
||||
#define TT_MS_LANGID_IRISH_GAELIC_IRELAND 0x043c
|
||||
#endif
|
||||
|
||||
#define TT_MS_LANGID_YIDDISH_GERMANY 0x043d
|
||||
#define TT_MS_LANGID_MALAY_MALAYSIA 0x043e
|
||||
#define TT_MS_LANGID_MALAY_BRUNEI_DARUSSALAM 0x083e
|
||||
#define TT_MS_LANGID_KAZAK_KAZAKSTAN 0x043f
|
||||
#define TT_MS_LANGID_KIRGHIZ_KIRGHIZSTAN /* Cyrillic*/ 0x0440
|
||||
/* alias declared in Windows 2000 */
|
||||
#define TT_MS_LANGID_KIRGHIZ_KIRGHIZ_REPUBLIC \
|
||||
TT_MS_LANGID_KIRGHIZ_KIRGHIZSTAN
|
||||
|
||||
#define TT_MS_LANGID_SWAHILI_KENYA 0x0441
|
||||
#define TT_MS_LANGID_TURKMEN_TURKMENISTAN 0x0442
|
||||
#define TT_MS_LANGID_UZBEK_UZBEKISTAN_LATIN 0x0443
|
||||
#define TT_MS_LANGID_UZBEK_UZBEKISTAN_CYRILLIC 0x0843
|
||||
#define TT_MS_LANGID_TATAR_TATARSTAN 0x0444
|
||||
#define TT_MS_LANGID_BENGALI_INDIA 0x0445
|
||||
#define TT_MS_LANGID_BENGALI_BANGLADESH 0x0845
|
||||
#define TT_MS_LANGID_PUNJABI_INDIA 0x0446
|
||||
#define TT_MS_LANGID_PUNJABI_ARABIC_PAKISTAN 0x0846
|
||||
#define TT_MS_LANGID_GUJARATI_INDIA 0x0447
|
||||
#define TT_MS_LANGID_ORIYA_INDIA 0x0448
|
||||
#define TT_MS_LANGID_TAMIL_INDIA 0x0449
|
||||
@@ -620,107 +691,72 @@ FT_BEGIN_HEADER
|
||||
#define TT_MS_LANGID_ASSAMESE_INDIA 0x044d
|
||||
#define TT_MS_LANGID_MARATHI_INDIA 0x044e
|
||||
#define TT_MS_LANGID_SANSKRIT_INDIA 0x044f
|
||||
#define TT_MS_LANGID_KONKANI_INDIA 0x0457
|
||||
|
||||
/* new as of 2001-01-01 */
|
||||
#define TT_MS_LANGID_ARABIC_GENERAL 0x0001
|
||||
#define TT_MS_LANGID_CHINESE_GENERAL 0x0004
|
||||
#define TT_MS_LANGID_ENGLISH_GENERAL 0x0009
|
||||
#define TT_MS_LANGID_FRENCH_WEST_INDIES 0x1c0c
|
||||
#define TT_MS_LANGID_FRENCH_REUNION 0x200c
|
||||
#define TT_MS_LANGID_FRENCH_CONGO 0x240c
|
||||
/* which was formerly: */
|
||||
#define TT_MS_LANGID_FRENCH_ZAIRE TT_MS_LANGID_FRENCH_CONGO
|
||||
|
||||
#define TT_MS_LANGID_FRENCH_SENEGAL 0x280c
|
||||
#define TT_MS_LANGID_FRENCH_CAMEROON 0x2c0c
|
||||
#define TT_MS_LANGID_FRENCH_COTE_D_IVOIRE 0x300c
|
||||
#define TT_MS_LANGID_FRENCH_MALI 0x340c
|
||||
#define TT_MS_LANGID_BOSNIAN_BOSNIA_HERZEGOVINA 0x101a
|
||||
#define TT_MS_LANGID_URDU_INDIA 0x0820
|
||||
#define TT_MS_LANGID_TAJIK_TAJIKISTAN 0x0428
|
||||
#define TT_MS_LANGID_YIDDISH_GERMANY 0x043d
|
||||
#define TT_MS_LANGID_KIRGHIZ_KIRGHIZSTAN 0x0440
|
||||
/* alias declared in Windows 2000 */
|
||||
#define TT_MS_LANGID_KIRGHIZ_KIRGHIZ_REPUBLIC \
|
||||
TT_MS_LANGID_KIRGHIZ_KIRGHIZSTAN
|
||||
|
||||
#define TT_MS_LANGID_TURKMEN_TURKMENISTAN 0x0442
|
||||
#define TT_MS_LANGID_MONGOLIAN_MONGOLIA /* Cyrillic */ 0x0450
|
||||
|
||||
/* the following seems to be inconsistent;
|
||||
here is the current "official" way: */
|
||||
#define TT_MS_LANGID_TIBETAN_BHUTAN 0x0451
|
||||
/* and here is what is used by Passport SDK */
|
||||
#define TT_MS_LANGID_MONGOLIAN_MONGOLIA_MONGOLIAN 0x0850
|
||||
#define TT_MS_LANGID_TIBETAN_CHINA 0x0451
|
||||
#define TT_MS_LANGID_DZONGHKA_BHUTAN 0x0851
|
||||
/* end of inconsistency */
|
||||
|
||||
#if 0
|
||||
/* the following used to be defined */
|
||||
#define TT_MS_LANGID_TIBETAN_BHUTAN 0x0451
|
||||
/* ... but it was changed; */
|
||||
#else
|
||||
/* So we will continue to #define it, but with the correct value */
|
||||
#define TT_MS_LANGID_TIBETAN_BHUTAN TT_MS_LANGID_DZONGHKA_BHUTAN
|
||||
#endif
|
||||
|
||||
#define TT_MS_LANGID_WELSH_WALES 0x0452
|
||||
#define TT_MS_LANGID_KHMER_CAMBODIA 0x0453
|
||||
#define TT_MS_LANGID_LAO_LAOS 0x0454
|
||||
#define TT_MS_LANGID_BURMESE_MYANMAR 0x0455
|
||||
#define TT_MS_LANGID_GALICIAN_SPAIN 0x0456
|
||||
#define TT_MS_LANGID_MANIPURI_INDIA 0x0458
|
||||
#define TT_MS_LANGID_SINDHI_INDIA 0x0459
|
||||
/* the following one is only encountered in Microsoft RTF specification */
|
||||
#define TT_MS_LANGID_KASHMIRI_PAKISTAN 0x0460
|
||||
/* the following one is not in the Passport list, looks like an omission */
|
||||
#define TT_MS_LANGID_KASHMIRI_INDIA 0x0860
|
||||
#define TT_MS_LANGID_NEPALI_NEPAL 0x0461
|
||||
#define TT_MS_LANGID_NEPALI_INDIA 0x0861
|
||||
#define TT_MS_LANGID_FRISIAN_NETHERLANDS 0x0462
|
||||
|
||||
/* new as of 2001-03-01 (from Office Xp) */
|
||||
#define TT_MS_LANGID_ENGLISH_HONG_KONG 0x3c09
|
||||
#define TT_MS_LANGID_ENGLISH_INDIA 0x4009
|
||||
#define TT_MS_LANGID_ENGLISH_MALAYSIA 0x4409
|
||||
#define TT_MS_LANGID_ENGLISH_SINGAPORE 0x4809
|
||||
#define TT_MS_LANGID_KONKANI_INDIA 0x0457
|
||||
#define TT_MS_LANGID_MANIPURI_INDIA /* Bengali */ 0x0458
|
||||
#define TT_MS_LANGID_SINDHI_INDIA /* Arabic */ 0x0459
|
||||
#define TT_MS_LANGID_SINDHI_PAKISTAN 0x0859
|
||||
/* Missing a LCID for Sindhi in Devanagari script */
|
||||
#define TT_MS_LANGID_SYRIAC_SYRIA 0x045a
|
||||
#define TT_MS_LANGID_SINHALESE_SRI_LANKA 0x045b
|
||||
#define TT_MS_LANGID_CHEROKEE_UNITED_STATES 0x045c
|
||||
#define TT_MS_LANGID_INUKTITUT_CANADA 0x045d
|
||||
#define TT_MS_LANGID_AMHARIC_ETHIOPIA 0x045e
|
||||
#define TT_MS_LANGID_TAMAZIGHT_MOROCCO 0x045f
|
||||
#define TT_MS_LANGID_TAMAZIGHT_MOROCCO /* Arabic */ 0x045f
|
||||
#define TT_MS_LANGID_TAMAZIGHT_MOROCCO_LATIN 0x085f
|
||||
/* Missing a LCID for Tifinagh script */
|
||||
#define TT_MS_LANGID_KASHMIRI_PAKISTAN /* Arabic */ 0x0460
|
||||
/* Spelled this way by XPsp2 Platform SDK (2004-07-26) */
|
||||
/* script is yet unclear... might be Arabic, Nagari or Sharada */
|
||||
#define TT_MS_LANGID_KASHMIRI_SASIA 0x0860
|
||||
/* ... and aliased (by MS) for compatibility reasons. */
|
||||
#define TT_MS_LANGID_KASHMIRI_INDIA TT_MS_LANGID_KASHMIRI_SASIA
|
||||
#define TT_MS_LANGID_NEPALI_NEPAL 0x0461
|
||||
#define TT_MS_LANGID_NEPALI_INDIA 0x0861
|
||||
#define TT_MS_LANGID_FRISIAN_NETHERLANDS 0x0462
|
||||
#define TT_MS_LANGID_PASHTO_AFGHANISTAN 0x0463
|
||||
#define TT_MS_LANGID_FILIPINO_PHILIPPINES 0x0464
|
||||
#define TT_MS_LANGID_DHIVEHI_MALDIVES 0x0465
|
||||
/* alias declared in Windows 2000 */
|
||||
#define TT_MS_LANGID_DIVEHI_MALDIVES TT_MS_LANGID_DHIVEHI_MALDIVES
|
||||
/* for language codes from 0x0466 to 0x0471 see below */
|
||||
#define TT_MS_LANGID_OROMO_ETHIOPIA 0x0472
|
||||
#define TT_MS_LANGID_TIGRIGNA_ETHIOPIA 0x0473
|
||||
#define TT_MS_LANGID_TIGRIGNA_ERYTHREA 0x0873
|
||||
/* also spelled in the `Passport SDK' list as: */
|
||||
#define TT_MS_LANGID_TIGRIGNA_ERYTREA TT_MS_LANGID_TIGRIGNA_ERYTHREA
|
||||
|
||||
/* New additions from Windows Xp/Passport SDK 2001-11-10. */
|
||||
|
||||
/* don't ask what this one means... It is commented out currently. */
|
||||
#if 0
|
||||
#define TT_MS_LANGID_GREEK_GREECE2 0x2008
|
||||
#endif
|
||||
|
||||
#define TT_MS_LANGID_SPANISH_UNITED_STATES 0x540a
|
||||
/* The following two IDs blatantly violate MS specs by using a */
|
||||
/* sublanguage > 0x1F. */
|
||||
#define TT_MS_LANGID_SPANISH_LATIN_AMERICA 0xE40aU
|
||||
#define TT_MS_LANGID_FRENCH_NORTH_AFRICA 0xE40cU
|
||||
|
||||
#define TT_MS_LANGID_FRENCH_MOROCCO 0x380c
|
||||
#define TT_MS_LANGID_FRENCH_HAITI 0x3c0c
|
||||
#define TT_MS_LANGID_BENGALI_BANGLADESH 0x0845
|
||||
#define TT_MS_LANGID_PUNJABI_ARABIC_PAKISTAN 0x0846
|
||||
#define TT_MS_LANGID_MONGOLIAN_MONGOLIA_MONGOLIAN 0x0850
|
||||
#define TT_MS_LANGID_EDO_NIGERIA 0x0466
|
||||
#define TT_MS_LANGID_FULFULDE_NIGERIA 0x0467
|
||||
#define TT_MS_LANGID_HAUSA_NIGERIA 0x0468
|
||||
#define TT_MS_LANGID_IBIBIO_NIGERIA 0x0469
|
||||
#define TT_MS_LANGID_YORUBA_NIGERIA 0x046a
|
||||
/* language codes from 0x046b to 0x046f are (still) unknown. */
|
||||
#define TT_MS_LANGID_QUECHUA_BOLIVIA 0x046b
|
||||
#define TT_MS_LANGID_QUECHUA_ECUADOR 0x086b
|
||||
#define TT_MS_LANGID_QUECHUA_PERU 0x0c6b
|
||||
#define TT_MS_LANGID_SEPEDI_SOUTH_AFRICA 0x046c
|
||||
/* Also spelled by XPsp2 Platform SDK (2004-07-26) */
|
||||
#define TT_MS_LANGID_SOTHO_SOUTHERN_SOUTH_AFRICA \
|
||||
TT_MS_LANGID_SEPEDI_SOUTH_AFRICA
|
||||
/* language codes 0x046d, 0x046e and 0x046f are (still) unknown. */
|
||||
#define TT_MS_LANGID_IGBO_NIGERIA 0x0470
|
||||
#define TT_MS_LANGID_KANURI_NIGERIA 0x0471
|
||||
#define TT_MS_LANGID_OROMO_ETHIOPIA 0x0472
|
||||
#define TT_MS_LANGID_TIGRIGNA_ETHIOPIA 0x0473
|
||||
#define TT_MS_LANGID_TIGRIGNA_ERYTHREA 0x0873
|
||||
/* also spelled in the `Passport SDK' list as: */
|
||||
#define TT_MS_LANGID_TIGRIGNA_ERYTREA TT_MS_LANGID_TIGRIGNA_ERYTHREA
|
||||
#define TT_MS_LANGID_GUARANI_PARAGUAY 0x0474
|
||||
#define TT_MS_LANGID_HAWAIIAN_UNITED_STATES 0x0475
|
||||
#define TT_MS_LANGID_LATIN 0x0476
|
||||
@@ -730,6 +766,13 @@ FT_BEGIN_HEADER
|
||||
/* studying). */
|
||||
#define TT_MS_LANGID_YI_CHINA 0x0478
|
||||
#define TT_MS_LANGID_PAPIAMENTU_NETHERLANDS_ANTILLES 0x0479
|
||||
/* language codes from 0x047a to 0x047f are (still) unknown. */
|
||||
#define TT_MS_LANGID_UIGHUR_CHINA 0x0480
|
||||
#define TT_MS_LANGID_MAORI_NEW_ZEALAND 0x0481
|
||||
|
||||
#if 0 /* not deemed useful for fonts */
|
||||
#define TT_MS_LANGID_HUMAN_INTERFACE_DEVICE 0x04ff
|
||||
#endif
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
/* Basic SFNT/TrueType tables definitions and interface */
|
||||
/* (specification only). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003 by */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@@ -42,7 +42,7 @@ FT_BEGIN_HEADER
|
||||
/* TrueType Tables */
|
||||
/* */
|
||||
/* <Abstract> */
|
||||
/* TrueType-specific table types and functions. */
|
||||
/* TrueType specific table types and functions. */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* This section contains the definition of TrueType-specific tables */
|
||||
@@ -516,12 +516,11 @@ FT_BEGIN_HEADER
|
||||
/* maxSizeOfInstructions :: The maximum number of TrueType opcodes */
|
||||
/* used for glyph hinting. */
|
||||
/* */
|
||||
/* maxComponentElements :: An obscure value related to composite */
|
||||
/* glyphs definitions. */
|
||||
/* maxComponentElements :: The maximum number of simple (i.e., non- */
|
||||
/* composite) glyphs in a composite glyph. */
|
||||
/* */
|
||||
/* maxComponentDepth :: An obscure value related to composite */
|
||||
/* glyphs definitions. Probably the maximum */
|
||||
/* number of simple glyphs in a composite. */
|
||||
/* maxComponentDepth :: The maximum nesting depth of composite */
|
||||
/* glyphs. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* This structure is only used during font loading. */
|
||||
@@ -652,7 +651,7 @@ FT_BEGIN_HEADER
|
||||
* buffer = malloc( length );
|
||||
* if ( buffer == NULL ) { ... not enough memory ... }
|
||||
*
|
||||
* error = FT_Load_Sfnt_Table( face,tag, 0, buffer, &length );
|
||||
* error = FT_Load_Sfnt_Table( face, tag, 0, buffer, &length );
|
||||
* if ( error ) { ... could not load table ... }
|
||||
* }
|
||||
*/
|
||||
@@ -664,6 +663,43 @@ FT_BEGIN_HEADER
|
||||
FT_ULong* length );
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* <Function>
|
||||
* FT_Sfnt_Table_Info
|
||||
*
|
||||
* <Description>
|
||||
* Returns information on an SFNT table.
|
||||
*
|
||||
* <Input>
|
||||
* face ::
|
||||
* A handle to the source face.
|
||||
*
|
||||
* table_index ::
|
||||
* The index of an SFNT table. The function returns
|
||||
* FT_Err_Table_Missing for an invalid value.
|
||||
*
|
||||
* <Output>
|
||||
* tag ::
|
||||
* The name tag of the SFNT table.
|
||||
*
|
||||
* length ::
|
||||
* The length of the SFNT table.
|
||||
*
|
||||
* <Return>
|
||||
* FreeType error code. 0 means success.
|
||||
*
|
||||
* <Note>
|
||||
* SFNT tables with length zero are treated as missing by Windows.
|
||||
*
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Sfnt_Table_Info( FT_Face face,
|
||||
FT_UInt table_index,
|
||||
FT_ULong *tag,
|
||||
FT_ULong *length );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/* */
|
||||
/* tttags.h */
|
||||
/* */
|
||||
/* Tags for TrueType tables (specification only). */
|
||||
/* Tags for TrueType and OpenType tables (specification only). */
|
||||
/* */
|
||||
/* Copyright 1996-2001 by */
|
||||
/* Copyright 1996-2001, 2004 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@@ -33,31 +33,38 @@
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
#define TTAG_cmap FT_MAKE_TAG( 'c', 'm', 'a', 'p' )
|
||||
#define TTAG_cvt FT_MAKE_TAG( 'c', 'v', 't', ' ' )
|
||||
#define TTAG_CFF FT_MAKE_TAG( 'C', 'F', 'F', ' ' )
|
||||
#define TTAG_DSIG FT_MAKE_TAG( 'D', 'S', 'I', 'G' )
|
||||
#define TTAG_bhed FT_MAKE_TAG( 'b', 'h', 'e', 'd' )
|
||||
#define TTAG_avar FT_MAKE_TAG( 'a', 'v', 'a', 'r' )
|
||||
#define TTAG_BASE FT_MAKE_TAG( 'B', 'A', 'S', 'E' )
|
||||
#define TTAG_bdat FT_MAKE_TAG( 'b', 'd', 'a', 't' )
|
||||
#define TTAG_bhed FT_MAKE_TAG( 'b', 'h', 'e', 'd' )
|
||||
#define TTAG_bloc FT_MAKE_TAG( 'b', 'l', 'o', 'c' )
|
||||
#define TTAG_CFF FT_MAKE_TAG( 'C', 'F', 'F', ' ' )
|
||||
#define TTAG_cmap FT_MAKE_TAG( 'c', 'm', 'a', 'p' )
|
||||
#define TTAG_cvar FT_MAKE_TAG( 'c', 'v', 'a', 'r' )
|
||||
#define TTAG_cvt FT_MAKE_TAG( 'c', 'v', 't', ' ' )
|
||||
#define TTAG_DSIG FT_MAKE_TAG( 'D', 'S', 'I', 'G' )
|
||||
#define TTAG_EBDT FT_MAKE_TAG( 'E', 'B', 'D', 'T' )
|
||||
#define TTAG_EBLC FT_MAKE_TAG( 'E', 'B', 'L', 'C' )
|
||||
#define TTAG_EBSC FT_MAKE_TAG( 'E', 'B', 'S', 'C' )
|
||||
#define TTAG_fpgm FT_MAKE_TAG( 'f', 'p', 'g', 'm' )
|
||||
#define TTAG_fvar FT_MAKE_TAG( 'f', 'v', 'a', 'r' )
|
||||
#define TTAG_gasp FT_MAKE_TAG( 'g', 'a', 's', 'p' )
|
||||
#define TTAG_GDEF FT_MAKE_TAG( 'G', 'D', 'E', 'F' )
|
||||
#define TTAG_glyf FT_MAKE_TAG( 'g', 'l', 'y', 'f' )
|
||||
#define TTAG_GPOS FT_MAKE_TAG( 'G', 'P', 'O', 'S' )
|
||||
#define TTAG_GSUB FT_MAKE_TAG( 'G', 'S', 'U', 'B' )
|
||||
#define TTAG_gvar FT_MAKE_TAG( 'g', 'v', 'a', 'r' )
|
||||
#define TTAG_hdmx FT_MAKE_TAG( 'h', 'd', 'm', 'x' )
|
||||
#define TTAG_head FT_MAKE_TAG( 'h', 'e', 'a', 'd' )
|
||||
#define TTAG_hhea FT_MAKE_TAG( 'h', 'h', 'e', 'a' )
|
||||
#define TTAG_hmtx FT_MAKE_TAG( 'h', 'm', 't', 'x' )
|
||||
#define TTAG_JSTF FT_MAKE_TAG( 'J', 'S', 'T', 'F' )
|
||||
#define TTAG_kern FT_MAKE_TAG( 'k', 'e', 'r', 'n' )
|
||||
#define TTAG_loca FT_MAKE_TAG( 'l', 'o', 'c', 'a' )
|
||||
#define TTAG_LTSH FT_MAKE_TAG( 'L', 'T', 'S', 'H' )
|
||||
#define TTAG_maxp FT_MAKE_TAG( 'm', 'a', 'x', 'p' )
|
||||
#define TTAG_MMSD FT_MAKE_TAG( 'M', 'M', 'S', 'D' )
|
||||
#define TTAG_MMFX FT_MAKE_TAG( 'M', 'M', 'F', 'X' )
|
||||
#define TTAG_MMSD FT_MAKE_TAG( 'M', 'M', 'S', 'D' )
|
||||
#define TTAG_name FT_MAKE_TAG( 'n', 'a', 'm', 'e' )
|
||||
#define TTAG_OS2 FT_MAKE_TAG( 'O', 'S', '/', '2' )
|
||||
#define TTAG_OTTO FT_MAKE_TAG( 'O', 'T', 'T', 'O' )
|
||||
|
||||
Reference in New Issue
Block a user