diff options
Diffstat (limited to 'thirdparties/common/include/libfreetype/freetype2/freetype')
46 files changed, 16112 insertions, 16196 deletions
diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/config/ftconfig.h b/thirdparties/common/include/libfreetype/freetype2/freetype/config/ftconfig.h index 3e28f77..4e06af9 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/config/ftconfig.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/config/ftconfig.h @@ -17,22 +17,22 @@ /***************************************************************************/ - /*************************************************************************/ - /* */ - /* This header file contains a number of macro definitions that are used */ - /* by the rest of the engine. Most of the macros here are automatically */ - /* determined at compile time, and you should not need to change it to */ - /* port FreeType, except to compile the library with a non-ANSI */ - /* compiler. */ - /* */ - /* Note however that if some specific modifications are needed, we */ - /* advise you to place a modified copy in your build directory. */ - /* */ - /* The build directory is usually `freetype/builds/<system>', and */ - /* contains system-specific files that are always included first when */ - /* building the library. */ - /* */ - /*************************************************************************/ +/*************************************************************************/ +/* */ +/* This header file contains a number of macro definitions that are used */ +/* by the rest of the engine. Most of the macros here are automatically */ +/* determined at compile time, and you should not need to change it to */ +/* port FreeType, except to compile the library with a non-ANSI */ +/* compiler. */ +/* */ +/* Note however that if some specific modifications are needed, we */ +/* advise you to place a modified copy in your build directory. */ +/* */ +/* The build directory is usually `freetype/builds/<system>', and */ +/* contains system-specific files that are always included first when */ +/* building the library. */ +/* */ +/*************************************************************************/ #ifndef __FTCONFIG_H__ @@ -46,16 +46,16 @@ FT_BEGIN_HEADER - /*************************************************************************/ - /* */ - /* PLATFORM-SPECIFIC CONFIGURATION MACROS */ - /* */ - /* These macros can be toggled to suit a specific system. The current */ - /* ones are defaults used to compile FreeType in an ANSI C environment */ - /* (16bit compilers are also supported). Copy this file to your own */ - /* `freetype/builds/<system>' directory, and edit it to port the engine. */ - /* */ - /*************************************************************************/ +/*************************************************************************/ +/* */ +/* PLATFORM-SPECIFIC CONFIGURATION MACROS */ +/* */ +/* These macros can be toggled to suit a specific system. The current */ +/* ones are defaults used to compile FreeType in an ANSI C environment */ +/* (16bit compilers are also supported). Copy this file to your own */ +/* `freetype/builds/<system>' directory, and edit it to port the engine. */ +/* */ +/*************************************************************************/ #undef HAVE_UNISTD_H @@ -63,13 +63,13 @@ FT_BEGIN_HEADER #undef HAVE_STDINT_H - /* There are systems (like the Texas Instruments 'C54x) where a `char' */ - /* has 16 bits. ANSI C says that sizeof(char) is always 1. Since an */ - /* `int' has 16 bits also for this system, sizeof(int) gives 1 which */ - /* is probably unexpected. */ - /* */ - /* `CHAR_BIT' (defined in limits.h) gives the number of bits in a */ - /* `char' type. */ +/* There are systems (like the Texas Instruments 'C54x) where a `char' */ +/* has 16 bits. ANSI C says that sizeof(char) is always 1. Since an */ +/* `int' has 16 bits also for this system, sizeof(int) gives 1 which */ +/* is probably unexpected. */ +/* */ +/* `CHAR_BIT' (defined in limits.h) gives the number of bits in a */ +/* `char' type. */ #ifndef FT_CHAR_BIT #define FT_CHAR_BIT CHAR_BIT @@ -86,13 +86,13 @@ FT_BEGIN_HEADER #else /* !FT_USE_AUTOCONF_SIZEOF_TYPES */ - /* Following cpp computation of the bit length of int and long */ - /* is copied from default include/freetype/config/ftconfig.h. */ - /* If any improvement is required for this file, it should be */ - /* applied to the original header file for the builders that */ - /* does not use configure script. */ +/* Following cpp computation of the bit length of int and long */ +/* is copied from default include/freetype/config/ftconfig.h. */ +/* If any improvement is required for this file, it should be */ +/* applied to the original header file for the builders that */ +/* does not use configure script. */ - /* The size of an `int' type. */ +/* The size of an `int' type. */ #if FT_UINT_MAX == 0xFFFFUL #define FT_SIZEOF_INT (16 / FT_CHAR_BIT) #elif FT_UINT_MAX == 0xFFFFFFFFUL @@ -103,8 +103,8 @@ FT_BEGIN_HEADER #error "Unsupported size of `int' type!" #endif - /* The size of a `long' type. A five-byte `long' (as used e.g. on the */ - /* DM642) is recognized but avoided. */ +/* 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 > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFUL @@ -118,35 +118,35 @@ FT_BEGIN_HEADER #endif /* !FT_USE_AUTOCONF_SIZEOF_TYPES */ - /* FT_UNUSED is a macro used to indicate that a given parameter is not */ - /* used -- this is only used to get rid of unpleasant compiler warnings */ +/* FT_UNUSED is a macro used to indicate that a given parameter is not */ +/* used -- this is only used to get rid of unpleasant compiler warnings */ #ifndef FT_UNUSED #define FT_UNUSED( arg ) ( (arg) = (arg) ) #endif - /*************************************************************************/ - /* */ - /* AUTOMATIC CONFIGURATION MACROS */ - /* */ - /* These macros are computed from the ones defined above. Don't touch */ - /* their definition, unless you know precisely what you are doing. No */ - /* porter should need to mess with them. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* Mac support */ - /* */ - /* This is the only necessary change, so it is defined here instead */ - /* providing a new configuration file. */ - /* */ +/*************************************************************************/ +/* */ +/* AUTOMATIC CONFIGURATION MACROS */ +/* */ +/* These macros are computed from the ones defined above. Don't touch */ +/* their definition, unless you know precisely what you are doing. No */ +/* porter should need to mess with them. */ +/* */ +/*************************************************************************/ + + +/*************************************************************************/ +/* */ +/* Mac support */ +/* */ +/* This is the only necessary change, so it is defined here instead */ +/* providing a new configuration file. */ +/* */ #if defined( __APPLE__ ) || ( defined( __MWERKS__ ) && defined( macintosh ) ) - /* no Carbon frameworks for 64bit 10.4.x */ - /* AvailabilityMacros.h is available since Mac OS X 10.2, */ - /* so guess the system version by maximum errno before inclusion */ +/* no Carbon frameworks for 64bit 10.4.x */ +/* AvailabilityMacros.h is available since Mac OS X 10.2, */ +/* so guess the system version by maximum errno before inclusion */ #include <errno.h> #ifdef ECANCELED /* defined since 10.2 */ #include "AvailabilityMacros.h" @@ -157,7 +157,7 @@ FT_BEGIN_HEADER #endif #elif defined( __SC__ ) || defined( __MRC__ ) - /* Classic MacOS compilers */ +/* Classic MacOS compilers */ #include "ConditionalMacros.h" #if TARGET_OS_MAC #define FT_MACINTOSH 1 @@ -166,7 +166,7 @@ FT_BEGIN_HEADER #endif - /* Fix compiler warning with sgi compiler */ +/* Fix compiler warning with sgi compiler */ #if defined( __sgi ) && !defined( __GNUC__ ) #if defined( _COMPILER_VERSION ) && ( _COMPILER_VERSION >= 730 ) #pragma set woff 3505 @@ -174,134 +174,134 @@ FT_BEGIN_HEADER #endif - /*************************************************************************/ - /* */ - /* <Section> */ - /* basic_types */ - /* */ - /*************************************************************************/ +/*************************************************************************/ +/* */ +/* <Section> */ +/* basic_types */ +/* */ +/*************************************************************************/ - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Int16 */ - /* */ - /* <Description> */ - /* A typedef for a 16bit signed integer type. */ - /* */ - typedef signed short FT_Int16; +/*************************************************************************/ +/* */ +/* <Type> */ +/* FT_Int16 */ +/* */ +/* <Description> */ +/* A typedef for a 16bit signed integer type. */ +/* */ +typedef signed short FT_Int16; - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_UInt16 */ - /* */ - /* <Description> */ - /* A typedef for a 16bit unsigned integer type. */ - /* */ - typedef unsigned short FT_UInt16; +/*************************************************************************/ +/* */ +/* <Type> */ +/* FT_UInt16 */ +/* */ +/* <Description> */ +/* A typedef for a 16bit unsigned integer type. */ +/* */ +typedef unsigned short FT_UInt16; - /* */ +/* */ - /* this #if 0 ... #endif clause is for documentation purposes */ +/* this #if 0 ... #endif clause is for documentation purposes */ #if 0 - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Int32 */ - /* */ - /* <Description> */ - /* A typedef for a 32bit signed integer type. The size depends on */ - /* the configuration. */ - /* */ - typedef signed XXX FT_Int32; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_UInt32 */ - /* */ - /* A typedef for a 32bit unsigned integer type. The size depends on */ - /* the configuration. */ - /* */ - typedef unsigned XXX FT_UInt32; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Int64 */ - /* */ - /* A typedef for a 64bit signed integer type. The size depends on */ - /* the configuration. Only defined if there is real 64bit support; */ - /* otherwise, it gets emulated with a structure (if necessary). */ - /* */ - typedef signed XXX FT_Int64; - - /* */ +/*************************************************************************/ +/* */ +/* <Type> */ +/* FT_Int32 */ +/* */ +/* <Description> */ +/* A typedef for a 32bit signed integer type. The size depends on */ +/* the configuration. */ +/* */ +typedef signed XXX FT_Int32; + + +/*************************************************************************/ +/* */ +/* <Type> */ +/* FT_UInt32 */ +/* */ +/* A typedef for a 32bit unsigned integer type. The size depends on */ +/* the configuration. */ +/* */ +typedef unsigned XXX FT_UInt32; + + +/*************************************************************************/ +/* */ +/* <Type> */ +/* FT_Int64 */ +/* */ +/* A typedef for a 64bit signed integer type. The size depends on */ +/* the configuration. Only defined if there is real 64bit support; */ +/* otherwise, it gets emulated with a structure (if necessary). */ +/* */ +typedef signed XXX FT_Int64; + +/* */ #endif #if FT_SIZEOF_INT == 4 - typedef signed int FT_Int32; - typedef unsigned int FT_UInt32; +typedef signed int FT_Int32; +typedef unsigned int FT_UInt32; #elif FT_SIZEOF_LONG == 4 - typedef signed long FT_Int32; - typedef unsigned long FT_UInt32; +typedef signed long FT_Int32; +typedef unsigned long FT_UInt32; #else #error "no 32bit type found -- please check your configuration files" #endif - /* look up an integer type that is at least 32 bits */ +/* look up an integer type that is at least 32 bits */ #if FT_SIZEOF_INT >= 4 - typedef int FT_Fast; - typedef unsigned int FT_UFast; +typedef int FT_Fast; +typedef unsigned int FT_UFast; #elif FT_SIZEOF_LONG >= 4 - typedef long FT_Fast; - typedef unsigned long FT_UFast; +typedef long FT_Fast; +typedef unsigned long FT_UFast; #endif - /* determine whether we have a 64-bit int type for platforms without */ - /* Autoconf */ +/* determine whether we have a 64-bit int type for platforms without */ +/* Autoconf */ #if FT_SIZEOF_LONG == 8 - /* FT_LONG64 must be defined if a 64-bit type is available */ +/* FT_LONG64 must be defined if a 64-bit type is available */ #define FT_LONG64 #define FT_INT64 long #elif defined( _MSC_VER ) && _MSC_VER >= 900 /* Visual C++ (and Intel C++) */ - /* this compiler provides the __int64 type */ +/* this compiler provides the __int64 type */ #define FT_LONG64 #define FT_INT64 __int64 #elif defined( __BORLANDC__ ) /* Borland C++ */ - /* XXXX: We should probably check the value of __BORLANDC__ in order */ - /* to test the compiler version. */ +/* XXXX: We should probably check the value of __BORLANDC__ in order */ +/* to test the compiler version. */ - /* this compiler provides the __int64 type */ +/* this compiler provides the __int64 type */ #define FT_LONG64 #define FT_INT64 __int64 #elif defined( __WATCOMC__ ) /* Watcom C++ */ - /* Watcom doesn't provide 64-bit data types */ +/* Watcom doesn't provide 64-bit data types */ #elif defined( __MWERKS__ ) /* Metrowerks CodeWarrior */ @@ -310,28 +310,28 @@ FT_BEGIN_HEADER #elif defined( __GNUC__ ) - /* GCC provides the `long long' type */ +/* GCC provides the `long long' type */ #define FT_LONG64 #define FT_INT64 long long int #endif /* FT_SIZEOF_LONG == 8 */ - /*************************************************************************/ - /* */ - /* A 64-bit data type will create compilation problems if you compile */ - /* in strict ANSI mode. To avoid them, we disable its use if __STDC__ */ - /* is defined. You can however ignore this rule by defining the */ - /* FT_CONFIG_OPTION_FORCE_INT64 configuration macro. */ - /* */ +/*************************************************************************/ +/* */ +/* A 64-bit data type will create compilation problems if you compile */ +/* in strict ANSI mode. To avoid them, we disable its use if __STDC__ */ +/* is defined. You can however ignore this rule by defining the */ +/* FT_CONFIG_OPTION_FORCE_INT64 configuration macro. */ +/* */ #if defined( FT_LONG64 ) && !defined( FT_CONFIG_OPTION_FORCE_INT64 ) #ifdef __STDC__ - /* Undefine the 64-bit macros in strict ANSI compilation mode. */ - /* Since `#undef' doesn't survive in configuration header files */ - /* we use the postprocessing facility of AC_CONFIG_HEADERS to */ - /* replace the leading `/' with `#'. */ +/* Undefine the 64-bit macros in strict ANSI compilation mode. */ +/* Since `#undef' doesn't survive in configuration header files */ +/* we use the postprocessing facility of AC_CONFIG_HEADERS to */ +/* replace the leading `/' with `#'. */ #undef FT_LONG64 #undef FT_INT64 @@ -340,7 +340,7 @@ FT_BEGIN_HEADER #endif /* FT_LONG64 && !FT_CONFIG_OPTION_FORCE_INT64 */ #ifdef FT_LONG64 - typedef FT_INT64 FT_Int64; +typedef FT_INT64 FT_Int64; #endif @@ -350,33 +350,32 @@ FT_BEGIN_HEADER #ifndef FT_CONFIG_OPTION_NO_ASSEMBLER - /* Provide assembler fragments for performance-critical functions. */ - /* These must be defined `static __inline__' with GCC. */ +/* Provide assembler fragments for performance-critical functions. */ +/* These must be defined `static __inline__' with GCC. */ #if defined( __CC_ARM ) || defined( __ARMCC__ ) /* RVCT */ #define FT_MULFIX_ASSEMBLER FT_MulFix_arm - /* documentation is in freetype.h */ +/* documentation is in freetype.h */ - static __inline FT_Int32 - FT_MulFix_arm( FT_Int32 a, - FT_Int32 b ) - { +static __inline FT_Int32 +FT_MulFix_arm( FT_Int32 a, + FT_Int32 b ) +{ register FT_Int32 t, t2; - __asm - { - smull t2, t, b, a /* (lo=t2,hi=t) = a*b */ - mov a, t, asr #31 /* a = (hi >> 31) */ - add a, a, #0x8000 /* a += 0x8000 */ - adds t2, t2, a /* t2 += a */ - adc t, t, #0 /* t += carry */ - mov a, t2, lsr #16 /* a = t2 >> 16 */ - orr a, a, t, lsl #16 /* a |= t << 16 */ + __asm { + smull t2, t, b, a /* (lo=t2,hi=t) = a*b */ + mov a, t, asr #31 /* a = (hi >> 31) */ + add a, a, #0x8000 /* a += 0x8000 */ + adds t2, t2, a /* t2 += a */ + adc t, t, #0 /* t += carry */ + mov a, t2, lsr #16 /* a = t2 >> 16 */ + orr a, a, t, lsl #16 /* a |= t << 16 */ } return a; - } +} #endif /* __CC_ARM || __ARMCC__ */ @@ -387,58 +386,58 @@ FT_BEGIN_HEADER !( defined( __CC_ARM ) || defined( __ARMCC__ ) ) #define FT_MULFIX_ASSEMBLER FT_MulFix_arm - /* documentation is in freetype.h */ +/* documentation is in freetype.h */ - static __inline__ FT_Int32 - FT_MulFix_arm( FT_Int32 a, - FT_Int32 b ) - { +static __inline__ FT_Int32 +FT_MulFix_arm( FT_Int32 a, + FT_Int32 b ) +{ register FT_Int32 t, t2; __asm__ __volatile__ ( - "smull %1, %2, %4, %3\n\t" /* (lo=%1,hi=%2) = a*b */ - "mov %0, %2, asr #31\n\t" /* %0 = (hi >> 31) */ - "add %0, %0, #0x8000\n\t" /* %0 += 0x8000 */ - "adds %1, %1, %0\n\t" /* %1 += %0 */ - "adc %2, %2, #0\n\t" /* %2 += carry */ - "mov %0, %1, lsr #16\n\t" /* %0 = %1 >> 16 */ - "orr %0, %0, %2, lsl #16\n\t" /* %0 |= %2 << 16 */ - : "=r"(a), "=&r"(t2), "=&r"(t) - : "r"(a), "r"(b) - : "cc" ); + "smull %1, %2, %4, %3\n\t" /* (lo=%1,hi=%2) = a*b */ + "mov %0, %2, asr #31\n\t" /* %0 = (hi >> 31) */ + "add %0, %0, #0x8000\n\t" /* %0 += 0x8000 */ + "adds %1, %1, %0\n\t" /* %1 += %0 */ + "adc %2, %2, #0\n\t" /* %2 += carry */ + "mov %0, %1, lsr #16\n\t" /* %0 = %1 >> 16 */ + "orr %0, %0, %2, lsl #16\n\t" /* %0 |= %2 << 16 */ + : "=r"(a), "=&r"(t2), "=&r"(t) + : "r"(a), "r"(b) + : "cc" ); return a; - } +} #endif /* __arm__ && !__thumb__ && !( __CC_ARM || __ARMCC__ ) */ #if defined( __i386__ ) #define FT_MULFIX_ASSEMBLER FT_MulFix_i386 - /* documentation is in freetype.h */ +/* documentation is in freetype.h */ - static __inline__ FT_Int32 - FT_MulFix_i386( FT_Int32 a, - FT_Int32 b ) - { +static __inline__ FT_Int32 +FT_MulFix_i386( FT_Int32 a, + FT_Int32 b ) +{ register FT_Int32 result; __asm__ __volatile__ ( - "imul %%edx\n" - "movl %%edx, %%ecx\n" - "sarl $31, %%ecx\n" - "addl $0x8000, %%ecx\n" - "addl %%ecx, %%eax\n" - "adcl $0, %%edx\n" - "shrl $16, %%eax\n" - "shll $16, %%edx\n" - "addl %%edx, %%eax\n" - : "=a"(result), "=d"(b) - : "a"(a), "d"(b) - : "%ecx", "cc" ); + "imul %%edx\n" + "movl %%edx, %%ecx\n" + "sarl $31, %%ecx\n" + "addl $0x8000, %%ecx\n" + "addl %%ecx, %%eax\n" + "adcl $0, %%edx\n" + "shrl $16, %%eax\n" + "shll $16, %%edx\n" + "addl %%edx, %%eax\n" + : "=a"(result), "=d"(b) + : "a"(a), "d"(b) + : "%ecx", "cc" ); return result; - } +} #endif /* i386 */ @@ -451,31 +450,30 @@ FT_BEGIN_HEADER #define FT_MULFIX_ASSEMBLER FT_MulFix_i386 - /* documentation is in freetype.h */ +/* documentation is in freetype.h */ - static __inline FT_Int32 - FT_MulFix_i386( FT_Int32 a, - FT_Int32 b ) - { +static __inline FT_Int32 +FT_MulFix_i386( FT_Int32 a, + FT_Int32 b ) +{ register FT_Int32 result; - __asm - { - mov eax, a - mov edx, b - imul edx - mov ecx, edx - sar ecx, 31 - add ecx, 8000h - add eax, ecx - adc edx, 0 - shr eax, 16 - shl edx, 16 - add eax, edx - mov result, eax + __asm { + mov eax, a + mov edx, b + imul edx + mov ecx, edx + sar ecx, 31 + add ecx, 8000h + add eax, ecx + adc edx, 0 + shr eax, 16 + shl edx, 16 + add eax, edx + mov result, eax } return result; - } +} #endif /* _M_IX86 */ @@ -563,29 +561,29 @@ FT_BEGIN_HEADER #endif /* !FT_EXPORT_VAR */ - /* The following macros are needed to compile the library with a */ - /* C++ compiler and with 16bit compilers. */ - /* */ - - /* This is special. Within C++, you must specify `extern "C"' for */ - /* functions which are used via function pointers, and you also */ - /* must do that for structures which contain function pointers to */ - /* assure C linkage -- it's not possible to have (local) anonymous */ - /* functions which are accessed by (global) function pointers. */ - /* */ - /* */ - /* FT_CALLBACK_DEF is used to _define_ a callback function. */ - /* */ - /* FT_CALLBACK_TABLE is used to _declare_ a constant variable that */ - /* contains pointers to callback functions. */ - /* */ - /* FT_CALLBACK_TABLE_DEF is used to _define_ a constant variable */ - /* that contains pointers to callback functions. */ - /* */ - /* */ - /* Some 16bit compilers have to redefine these macros to insert */ - /* the infamous `_cdecl' or `__fastcall' declarations. */ - /* */ +/* The following macros are needed to compile the library with a */ +/* C++ compiler and with 16bit compilers. */ +/* */ + +/* This is special. Within C++, you must specify `extern "C"' for */ +/* functions which are used via function pointers, and you also */ +/* must do that for structures which contain function pointers to */ +/* assure C linkage -- it's not possible to have (local) anonymous */ +/* functions which are accessed by (global) function pointers. */ +/* */ +/* */ +/* FT_CALLBACK_DEF is used to _define_ a callback function. */ +/* */ +/* FT_CALLBACK_TABLE is used to _declare_ a constant variable that */ +/* contains pointers to callback functions. */ +/* */ +/* FT_CALLBACK_TABLE_DEF is used to _define_ a constant variable */ +/* that contains pointers to callback functions. */ +/* */ +/* */ +/* Some 16bit compilers have to redefine these macros to insert */ +/* the infamous `_cdecl' or `__fastcall' declarations. */ +/* */ #ifndef FT_CALLBACK_DEF #ifdef __cplusplus #define FT_CALLBACK_DEF( x ) extern "C" x diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/config/ftheader.h b/thirdparties/common/include/libfreetype/freetype2/freetype/config/ftheader.h index 93969ef..8c83621 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/config/ftheader.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/config/ftheader.h @@ -19,17 +19,17 @@ #define __FT_HEADER_H__ - /*@***********************************************************************/ - /* */ - /* <Macro> */ - /* FT_BEGIN_HEADER */ - /* */ - /* <Description> */ - /* This macro is used in association with @FT_END_HEADER in header */ - /* files to ensure that the declarations within are properly */ - /* encapsulated in an `extern "C" { .. }' block when included from a */ - /* C++ compiler. */ - /* */ +/*@***********************************************************************/ +/* */ +/* <Macro> */ +/* FT_BEGIN_HEADER */ +/* */ +/* <Description> */ +/* This macro is used in association with @FT_END_HEADER in header */ +/* files to ensure that the declarations within are properly */ +/* encapsulated in an `extern "C" { .. }' block when included from a */ +/* C++ compiler. */ +/* */ #ifdef __cplusplus #define FT_BEGIN_HEADER extern "C" { #else @@ -37,17 +37,17 @@ #endif - /*@***********************************************************************/ - /* */ - /* <Macro> */ - /* FT_END_HEADER */ - /* */ - /* <Description> */ - /* This macro is used in association with @FT_BEGIN_HEADER in header */ - /* files to ensure that the declarations within are properly */ - /* encapsulated in an `extern "C" { .. }' block when included from a */ - /* C++ compiler. */ - /* */ +/*@***********************************************************************/ +/* */ +/* <Macro> */ +/* FT_END_HEADER */ +/* */ +/* <Description> */ +/* This macro is used in association with @FT_BEGIN_HEADER in header */ +/* files to ensure that the declarations within are properly */ +/* encapsulated in an `extern "C" { .. }' block when included from a */ +/* C++ compiler. */ +/* */ #ifdef __cplusplus #define FT_END_HEADER } #else @@ -55,740 +55,740 @@ #endif - /*************************************************************************/ - /* */ - /* Aliases for the FreeType 2 public and configuration files. */ - /* */ - /*************************************************************************/ - - /*************************************************************************/ - /* */ - /* <Section> */ - /* header_file_macros */ - /* */ - /* <Title> */ - /* Header File Macros */ - /* */ - /* <Abstract> */ - /* Macro definitions used to #include specific header files. */ - /* */ - /* <Description> */ - /* The following macros are defined to the name of specific */ - /* FreeType~2 header files. They can be used directly in #include */ - /* statements as in: */ - /* */ - /* { */ - /* #include FT_FREETYPE_H */ - /* #include FT_MULTIPLE_MASTERS_H */ - /* #include FT_GLYPH_H */ - /* } */ - /* */ - /* There are several reasons why we are now using macros to name */ - /* public header files. The first one is that such macros are not */ - /* limited to the infamous 8.3~naming rule required by DOS (and */ - /* `FT_MULTIPLE_MASTERS_H' is a lot more meaningful than `ftmm.h'). */ - /* */ - /* The second reason is that it allows for more flexibility in the */ - /* way FreeType~2 is installed on a given system. */ - /* */ - /*************************************************************************/ - - - /* configuration files */ - - /************************************************************************* - * - * @macro: - * FT_CONFIG_CONFIG_H - * - * @description: - * A macro used in #include statements to name the file containing - * FreeType~2 configuration data. - * - */ +/*************************************************************************/ +/* */ +/* Aliases for the FreeType 2 public and configuration files. */ +/* */ +/*************************************************************************/ + +/*************************************************************************/ +/* */ +/* <Section> */ +/* header_file_macros */ +/* */ +/* <Title> */ +/* Header File Macros */ +/* */ +/* <Abstract> */ +/* Macro definitions used to #include specific header files. */ +/* */ +/* <Description> */ +/* The following macros are defined to the name of specific */ +/* FreeType~2 header files. They can be used directly in #include */ +/* statements as in: */ +/* */ +/* { */ +/* #include FT_FREETYPE_H */ +/* #include FT_MULTIPLE_MASTERS_H */ +/* #include FT_GLYPH_H */ +/* } */ +/* */ +/* There are several reasons why we are now using macros to name */ +/* public header files. The first one is that such macros are not */ +/* limited to the infamous 8.3~naming rule required by DOS (and */ +/* `FT_MULTIPLE_MASTERS_H' is a lot more meaningful than `ftmm.h'). */ +/* */ +/* The second reason is that it allows for more flexibility in the */ +/* way FreeType~2 is installed on a given system. */ +/* */ +/*************************************************************************/ + + +/* configuration files */ + +/************************************************************************* + * + * @macro: + * FT_CONFIG_CONFIG_H + * + * @description: + * A macro used in #include statements to name the file containing + * FreeType~2 configuration data. + * + */ #ifndef FT_CONFIG_CONFIG_H #define FT_CONFIG_CONFIG_H <freetype/config/ftconfig.h> #endif - /************************************************************************* - * - * @macro: - * FT_CONFIG_STANDARD_LIBRARY_H - * - * @description: - * A macro used in #include statements to name the file containing - * FreeType~2 interface to the standard C library functions. - * - */ +/************************************************************************* + * + * @macro: + * FT_CONFIG_STANDARD_LIBRARY_H + * + * @description: + * A macro used in #include statements to name the file containing + * FreeType~2 interface to the standard C library functions. + * + */ #ifndef FT_CONFIG_STANDARD_LIBRARY_H #define FT_CONFIG_STANDARD_LIBRARY_H <freetype/config/ftstdlib.h> #endif - /************************************************************************* - * - * @macro: - * FT_CONFIG_OPTIONS_H - * - * @description: - * A macro used in #include statements to name the file containing - * FreeType~2 project-specific configuration options. - * - */ +/************************************************************************* + * + * @macro: + * FT_CONFIG_OPTIONS_H + * + * @description: + * A macro used in #include statements to name the file containing + * FreeType~2 project-specific configuration options. + * + */ #ifndef FT_CONFIG_OPTIONS_H #define FT_CONFIG_OPTIONS_H <freetype/config/ftoption.h> #endif - /************************************************************************* - * - * @macro: - * FT_CONFIG_MODULES_H - * - * @description: - * A macro used in #include statements to name the file containing the - * list of FreeType~2 modules that are statically linked to new library - * instances in @FT_Init_FreeType. - * - */ +/************************************************************************* + * + * @macro: + * FT_CONFIG_MODULES_H + * + * @description: + * A macro used in #include statements to name the file containing the + * list of FreeType~2 modules that are statically linked to new library + * instances in @FT_Init_FreeType. + * + */ #ifndef FT_CONFIG_MODULES_H #define FT_CONFIG_MODULES_H <freetype/config/ftmodule.h> #endif - /* */ +/* */ - /* public headers */ +/* public headers */ - /************************************************************************* - * - * @macro: - * FT_FREETYPE_H - * - * @description: - * A macro used in #include statements to name the file containing the - * base FreeType~2 API. - * - */ +/************************************************************************* + * + * @macro: + * FT_FREETYPE_H + * + * @description: + * A macro used in #include statements to name the file containing the + * base FreeType~2 API. + * + */ #define FT_FREETYPE_H <freetype/freetype.h> - /************************************************************************* - * - * @macro: - * FT_ERRORS_H - * - * @description: - * A macro used in #include statements to name the file containing the - * list of FreeType~2 error codes (and messages). - * - * It is included by @FT_FREETYPE_H. - * - */ +/************************************************************************* + * + * @macro: + * FT_ERRORS_H + * + * @description: + * A macro used in #include statements to name the file containing the + * list of FreeType~2 error codes (and messages). + * + * It is included by @FT_FREETYPE_H. + * + */ #define FT_ERRORS_H <freetype/fterrors.h> - /************************************************************************* - * - * @macro: - * FT_MODULE_ERRORS_H - * - * @description: - * A macro used in #include statements to name the file containing the - * list of FreeType~2 module error offsets (and messages). - * - */ +/************************************************************************* + * + * @macro: + * FT_MODULE_ERRORS_H + * + * @description: + * A macro used in #include statements to name the file containing the + * list of FreeType~2 module error offsets (and messages). + * + */ #define FT_MODULE_ERRORS_H <freetype/ftmoderr.h> - /************************************************************************* - * - * @macro: - * FT_SYSTEM_H - * - * @description: - * A macro used in #include statements to name the file containing the - * FreeType~2 interface to low-level operations (i.e., memory management - * and stream i/o). - * - * It is included by @FT_FREETYPE_H. - * - */ +/************************************************************************* + * + * @macro: + * FT_SYSTEM_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 interface to low-level operations (i.e., memory management + * and stream i/o). + * + * It is included by @FT_FREETYPE_H. + * + */ #define FT_SYSTEM_H <freetype/ftsystem.h> - /************************************************************************* - * - * @macro: - * FT_IMAGE_H - * - * @description: - * A macro used in #include statements to name the file containing type - * definitions related to glyph images (i.e., bitmaps, outlines, - * scan-converter parameters). - * - * It is included by @FT_FREETYPE_H. - * - */ +/************************************************************************* + * + * @macro: + * FT_IMAGE_H + * + * @description: + * A macro used in #include statements to name the file containing type + * definitions related to glyph images (i.e., bitmaps, outlines, + * scan-converter parameters). + * + * It is included by @FT_FREETYPE_H. + * + */ #define FT_IMAGE_H <freetype/ftimage.h> - /************************************************************************* - * - * @macro: - * FT_TYPES_H - * - * @description: - * A macro used in #include statements to name the file containing the - * basic data types defined by FreeType~2. - * - * It is included by @FT_FREETYPE_H. - * - */ +/************************************************************************* + * + * @macro: + * FT_TYPES_H + * + * @description: + * A macro used in #include statements to name the file containing the + * basic data types defined by FreeType~2. + * + * It is included by @FT_FREETYPE_H. + * + */ #define FT_TYPES_H <freetype/fttypes.h> - /************************************************************************* - * - * @macro: - * FT_LIST_H - * - * @description: - * A macro used in #include statements to name the file containing the - * list management API of FreeType~2. - * - * (Most applications will never need to include this file.) - * - */ +/************************************************************************* + * + * @macro: + * FT_LIST_H + * + * @description: + * A macro used in #include statements to name the file containing the + * list management API of FreeType~2. + * + * (Most applications will never need to include this file.) + * + */ #define FT_LIST_H <freetype/ftlist.h> - /************************************************************************* - * - * @macro: - * FT_OUTLINE_H - * - * @description: - * A macro used in #include statements to name the file containing the - * scalable outline management API of FreeType~2. - * - */ +/************************************************************************* + * + * @macro: + * FT_OUTLINE_H + * + * @description: + * A macro used in #include statements to name the file containing the + * scalable outline management API of FreeType~2. + * + */ #define FT_OUTLINE_H <freetype/ftoutln.h> - /************************************************************************* - * - * @macro: - * FT_SIZES_H - * - * @description: - * A macro used in #include statements to name the file containing the - * API which manages multiple @FT_Size objects per face. - * - */ +/************************************************************************* + * + * @macro: + * FT_SIZES_H + * + * @description: + * A macro used in #include statements to name the file containing the + * API which manages multiple @FT_Size objects per face. + * + */ #define FT_SIZES_H <freetype/ftsizes.h> - /************************************************************************* - * - * @macro: - * FT_MODULE_H - * - * @description: - * A macro used in #include statements to name the file containing the - * module management API of FreeType~2. - * - */ +/************************************************************************* + * + * @macro: + * FT_MODULE_H + * + * @description: + * A macro used in #include statements to name the file containing the + * module management API of FreeType~2. + * + */ #define FT_MODULE_H <freetype/ftmodapi.h> - /************************************************************************* - * - * @macro: - * FT_RENDER_H - * - * @description: - * A macro used in #include statements to name the file containing the - * renderer module management API of FreeType~2. - * - */ +/************************************************************************* + * + * @macro: + * FT_RENDER_H + * + * @description: + * A macro used in #include statements to name the file containing the + * renderer module management API of FreeType~2. + * + */ #define FT_RENDER_H <freetype/ftrender.h> - /************************************************************************* - * - * @macro: - * FT_AUTOHINTER_H - * - * @description: - * A macro used in #include statements to name the file containing - * structures and macros related to the auto-hinting module. - * - */ +/************************************************************************* + * + * @macro: + * FT_AUTOHINTER_H + * + * @description: + * A macro used in #include statements to name the file containing + * structures and macros related to the auto-hinting module. + * + */ #define FT_AUTOHINTER_H <freetype/ftautoh.h> - /************************************************************************* - * - * @macro: - * FT_CFF_DRIVER_H - * - * @description: - * A macro used in #include statements to name the file containing - * structures and macros related to the CFF driver module. - * - */ +/************************************************************************* + * + * @macro: + * FT_CFF_DRIVER_H + * + * @description: + * A macro used in #include statements to name the file containing + * structures and macros related to the CFF driver module. + * + */ #define FT_CFF_DRIVER_H <freetype/ftcffdrv.h> - /************************************************************************* - * - * @macro: - * FT_TYPE1_TABLES_H - * - * @description: - * A macro used in #include statements to name the file containing the - * types and API specific to the Type~1 format. - * - */ +/************************************************************************* + * + * @macro: + * FT_TYPE1_TABLES_H + * + * @description: + * A macro used in #include statements to name the file containing the + * types and API specific to the Type~1 format. + * + */ #define FT_TYPE1_TABLES_H <freetype/t1tables.h> - /************************************************************************* - * - * @macro: - * FT_TRUETYPE_IDS_H - * - * @description: - * A macro used in #include statements to name the file containing the - * enumeration values which identify name strings, languages, encodings, - * etc. This file really contains a _large_ set of constant macro - * definitions, taken from the TrueType and OpenType specifications. - * - */ +/************************************************************************* + * + * @macro: + * FT_TRUETYPE_IDS_H + * + * @description: + * A macro used in #include statements to name the file containing the + * enumeration values which identify name strings, languages, encodings, + * etc. This file really contains a _large_ set of constant macro + * definitions, taken from the TrueType and OpenType specifications. + * + */ #define FT_TRUETYPE_IDS_H <freetype/ttnameid.h> - /************************************************************************* - * - * @macro: - * FT_TRUETYPE_TABLES_H - * - * @description: - * A macro used in #include statements to name the file containing the - * types and API specific to the TrueType (as well as OpenType) format. - * - */ +/************************************************************************* + * + * @macro: + * FT_TRUETYPE_TABLES_H + * + * @description: + * A macro used in #include statements to name the file containing the + * types and API specific to the TrueType (as well as OpenType) format. + * + */ #define FT_TRUETYPE_TABLES_H <freetype/tttables.h> - /************************************************************************* - * - * @macro: - * FT_TRUETYPE_TAGS_H - * - * @description: - * A macro used in #include statements to name the file containing the - * definitions of TrueType four-byte `tags' which identify blocks in - * SFNT-based font formats (i.e., TrueType and OpenType). - * - */ +/************************************************************************* + * + * @macro: + * FT_TRUETYPE_TAGS_H + * + * @description: + * A macro used in #include statements to name the file containing the + * definitions of TrueType four-byte `tags' which identify blocks in + * SFNT-based font formats (i.e., TrueType and OpenType). + * + */ #define FT_TRUETYPE_TAGS_H <freetype/tttags.h> - /************************************************************************* - * - * @macro: - * FT_BDF_H - * - * @description: - * A macro used in #include statements to name the file containing the - * definitions of an API which accesses BDF-specific strings from a - * face. - * - */ +/************************************************************************* + * + * @macro: + * FT_BDF_H + * + * @description: + * A macro used in #include statements to name the file containing the + * definitions of an API which accesses BDF-specific strings from a + * face. + * + */ #define FT_BDF_H <freetype/ftbdf.h> - /************************************************************************* - * - * @macro: - * FT_CID_H - * - * @description: - * A macro used in #include statements to name the file containing the - * definitions of an API which access CID font information from a - * face. - * - */ +/************************************************************************* + * + * @macro: + * FT_CID_H + * + * @description: + * A macro used in #include statements to name the file containing the + * definitions of an API which access CID font information from a + * face. + * + */ #define FT_CID_H <freetype/ftcid.h> - /************************************************************************* - * - * @macro: - * FT_GZIP_H - * - * @description: - * A macro used in #include statements to name the file containing the - * definitions of an API which supports gzip-compressed files. - * - */ +/************************************************************************* + * + * @macro: + * FT_GZIP_H + * + * @description: + * A macro used in #include statements to name the file containing the + * definitions of an API which supports gzip-compressed files. + * + */ #define FT_GZIP_H <freetype/ftgzip.h> - /************************************************************************* - * - * @macro: - * FT_LZW_H - * - * @description: - * A macro used in #include statements to name the file containing the - * definitions of an API which supports LZW-compressed files. - * - */ +/************************************************************************* + * + * @macro: + * FT_LZW_H + * + * @description: + * A macro used in #include statements to name the file containing the + * definitions of an API which supports LZW-compressed files. + * + */ #define FT_LZW_H <freetype/ftlzw.h> - /************************************************************************* - * - * @macro: - * FT_BZIP2_H - * - * @description: - * A macro used in #include statements to name the file containing the - * definitions of an API which supports bzip2-compressed files. - * - */ +/************************************************************************* + * + * @macro: + * FT_BZIP2_H + * + * @description: + * A macro used in #include statements to name the file containing the + * definitions of an API which supports bzip2-compressed files. + * + */ #define FT_BZIP2_H <freetype/ftbzip2.h> - /************************************************************************* - * - * @macro: - * FT_WINFONTS_H - * - * @description: - * A macro used in #include statements to name the file containing the - * definitions of an API which supports Windows FNT files. - * - */ +/************************************************************************* + * + * @macro: + * FT_WINFONTS_H + * + * @description: + * A macro used in #include statements to name the file containing the + * definitions of an API which supports Windows FNT files. + * + */ #define FT_WINFONTS_H <freetype/ftwinfnt.h> - /************************************************************************* - * - * @macro: - * FT_GLYPH_H - * - * @description: - * A macro used in #include statements to name the file containing the - * API of the optional glyph management component. - * - */ +/************************************************************************* + * + * @macro: + * FT_GLYPH_H + * + * @description: + * A macro used in #include statements to name the file containing the + * API of the optional glyph management component. + * + */ #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. - * - */ +/************************************************************************* + * + * @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: - * FT_BBOX_H - * - * @description: - * A macro used in #include statements to name the file containing the - * API of the optional exact bounding box computation routines. - * - */ +/************************************************************************* + * + * @macro: + * FT_BBOX_H + * + * @description: + * A macro used in #include statements to name the file containing the + * API of the optional exact bounding box computation routines. + * + */ #define FT_BBOX_H <freetype/ftbbox.h> - /************************************************************************* - * - * @macro: - * FT_CACHE_H - * - * @description: - * A macro used in #include statements to name the file containing the - * API of the optional FreeType~2 cache sub-system. - * - */ +/************************************************************************* + * + * @macro: + * FT_CACHE_H + * + * @description: + * A macro used in #include statements to name the file containing the + * API of the optional FreeType~2 cache sub-system. + * + */ #define FT_CACHE_H <freetype/ftcache.h> - /************************************************************************* - * - * @macro: - * FT_CACHE_IMAGE_H - * - * @description: - * A macro used in #include statements to name the file containing the - * `glyph image' API of the FreeType~2 cache sub-system. - * - * It is used to define a cache for @FT_Glyph elements. You can also - * use the API defined in @FT_CACHE_SMALL_BITMAPS_H if you only need to - * store small glyph bitmaps, as it will use less memory. - * - * This macro is deprecated. Simply include @FT_CACHE_H to have all - * glyph image-related cache declarations. - * - */ +/************************************************************************* + * + * @macro: + * FT_CACHE_IMAGE_H + * + * @description: + * A macro used in #include statements to name the file containing the + * `glyph image' API of the FreeType~2 cache sub-system. + * + * It is used to define a cache for @FT_Glyph elements. You can also + * use the API defined in @FT_CACHE_SMALL_BITMAPS_H if you only need to + * store small glyph bitmaps, as it will use less memory. + * + * This macro is deprecated. Simply include @FT_CACHE_H to have all + * glyph image-related cache declarations. + * + */ #define FT_CACHE_IMAGE_H FT_CACHE_H - /************************************************************************* - * - * @macro: - * FT_CACHE_SMALL_BITMAPS_H - * - * @description: - * A macro used in #include statements to name the file containing the - * `small bitmaps' API of the FreeType~2 cache sub-system. - * - * It is used to define a cache for small glyph bitmaps in a relatively - * memory-efficient way. You can also use the API defined in - * @FT_CACHE_IMAGE_H if you want to cache arbitrary glyph images, - * including scalable outlines. - * - * This macro is deprecated. Simply include @FT_CACHE_H to have all - * small bitmaps-related cache declarations. - * - */ +/************************************************************************* + * + * @macro: + * FT_CACHE_SMALL_BITMAPS_H + * + * @description: + * A macro used in #include statements to name the file containing the + * `small bitmaps' API of the FreeType~2 cache sub-system. + * + * It is used to define a cache for small glyph bitmaps in a relatively + * memory-efficient way. You can also use the API defined in + * @FT_CACHE_IMAGE_H if you want to cache arbitrary glyph images, + * including scalable outlines. + * + * This macro is deprecated. Simply include @FT_CACHE_H to have all + * small bitmaps-related cache declarations. + * + */ #define FT_CACHE_SMALL_BITMAPS_H FT_CACHE_H - /************************************************************************* - * - * @macro: - * FT_CACHE_CHARMAP_H - * - * @description: - * A macro used in #include statements to name the file containing the - * `charmap' API of the FreeType~2 cache sub-system. - * - * This macro is deprecated. Simply include @FT_CACHE_H to have all - * charmap-based cache declarations. - * - */ +/************************************************************************* + * + * @macro: + * FT_CACHE_CHARMAP_H + * + * @description: + * A macro used in #include statements to name the file containing the + * `charmap' API of the FreeType~2 cache sub-system. + * + * This macro is deprecated. Simply include @FT_CACHE_H to have all + * charmap-based cache declarations. + * + */ #define FT_CACHE_CHARMAP_H FT_CACHE_H - /************************************************************************* - * - * @macro: - * FT_MAC_H - * - * @description: - * A macro used in #include statements to name the file containing the - * Macintosh-specific FreeType~2 API. The latter is used to access - * fonts embedded in resource forks. - * - * This header file must be explicitly included by client applications - * compiled on the Mac (note that the base API still works though). - * - */ +/************************************************************************* + * + * @macro: + * FT_MAC_H + * + * @description: + * A macro used in #include statements to name the file containing the + * Macintosh-specific FreeType~2 API. The latter is used to access + * fonts embedded in resource forks. + * + * This header file must be explicitly included by client applications + * compiled on the Mac (note that the base API still works though). + * + */ #define FT_MAC_H <freetype/ftmac.h> - /************************************************************************* - * - * @macro: - * FT_MULTIPLE_MASTERS_H - * - * @description: - * A macro used in #include statements to name the file containing the - * optional multiple-masters management API of FreeType~2. - * - */ +/************************************************************************* + * + * @macro: + * FT_MULTIPLE_MASTERS_H + * + * @description: + * A macro used in #include statements to name the file containing the + * optional multiple-masters management API of FreeType~2. + * + */ #define FT_MULTIPLE_MASTERS_H <freetype/ftmm.h> - /************************************************************************* - * - * @macro: - * FT_SFNT_NAMES_H - * - * @description: - * A macro used in #include statements to name the file containing the - * optional FreeType~2 API which accesses embedded `name' strings in - * SFNT-based font formats (i.e., TrueType and OpenType). - * - */ +/************************************************************************* + * + * @macro: + * FT_SFNT_NAMES_H + * + * @description: + * A macro used in #include statements to name the file containing the + * optional FreeType~2 API which accesses embedded `name' strings in + * SFNT-based font formats (i.e., TrueType and OpenType). + * + */ #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 which validates OpenType tables (BASE, GDEF, - * GPOS, GSUB, JSTF). - * - */ +/************************************************************************* + * + * @macro: + * FT_OPENTYPE_VALIDATE_H + * + * @description: + * A macro used in #include statements to name the file containing the + * optional FreeType~2 API which validates OpenType tables (BASE, GDEF, + * GPOS, GSUB, JSTF). + * + */ #define FT_OPENTYPE_VALIDATE_H <freetype/ftotval.h> - /************************************************************************* - * - * @macro: - * FT_GX_VALIDATE_H - * - * @description: - * A macro used in #include statements to name the file containing the - * optional FreeType~2 API which validates TrueTypeGX/AAT tables (feat, - * mort, morx, bsln, just, kern, opbd, trak, prop). - * - */ +/************************************************************************* + * + * @macro: + * FT_GX_VALIDATE_H + * + * @description: + * A macro used in #include statements to name the file containing the + * optional FreeType~2 API which validates TrueTypeGX/AAT tables (feat, + * mort, morx, bsln, just, kern, opbd, trak, prop). + * + */ #define FT_GX_VALIDATE_H <freetype/ftgxval.h> - /************************************************************************* - * - * @macro: - * FT_PFR_H - * - * @description: - * A macro used in #include statements to name the file containing the - * FreeType~2 API which accesses PFR-specific data. - * - */ +/************************************************************************* + * + * @macro: + * FT_PFR_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which accesses PFR-specific data. + * + */ #define FT_PFR_H <freetype/ftpfr.h> - /************************************************************************* - * - * @macro: - * FT_STROKER_H - * - * @description: - * A macro used in #include statements to name the file containing the - * FreeType~2 API which provides functions to stroke outline paths. - */ +/************************************************************************* + * + * @macro: + * FT_STROKER_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which provides functions to stroke outline paths. + */ #define FT_STROKER_H <freetype/ftstroke.h> - /************************************************************************* - * - * @macro: - * FT_SYNTHESIS_H - * - * @description: - * A macro used in #include statements to name the file containing the - * FreeType~2 API which performs artificial obliquing and emboldening. - */ +/************************************************************************* + * + * @macro: + * FT_SYNTHESIS_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which performs artificial obliquing and emboldening. + */ #define FT_SYNTHESIS_H <freetype/ftsynth.h> - /************************************************************************* - * - * @macro: - * FT_XFREE86_H - * - * @description: - * A macro used in #include statements to name the file containing the - * FreeType~2 API which provides functions specific to the XFree86 and - * X.Org X11 servers. - */ +/************************************************************************* + * + * @macro: + * FT_XFREE86_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which provides functions specific to the XFree86 and + * X.Org X11 servers. + */ #define FT_XFREE86_H <freetype/ftxf86.h> - /************************************************************************* - * - * @macro: - * FT_TRIGONOMETRY_H - * - * @description: - * A macro used in #include statements to name the file containing the - * FreeType~2 API which performs trigonometric computations (e.g., - * cosines and arc tangents). - */ +/************************************************************************* + * + * @macro: + * FT_TRIGONOMETRY_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which performs trigonometric computations (e.g., + * cosines and arc tangents). + */ #define FT_TRIGONOMETRY_H <freetype/fttrigon.h> - /************************************************************************* - * - * @macro: - * FT_LCD_FILTER_H - * - * @description: - * A macro used in #include statements to name the file containing the - * FreeType~2 API which performs color filtering for subpixel rendering. - */ +/************************************************************************* + * + * @macro: + * FT_LCD_FILTER_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which performs color filtering for subpixel rendering. + */ #define FT_LCD_FILTER_H <freetype/ftlcdfil.h> - /************************************************************************* - * - * @macro: - * FT_UNPATENTED_HINTING_H - * - * @description: - * A macro used in #include statements to name the file containing the - * FreeType~2 API which performs color filtering for subpixel rendering. - */ +/************************************************************************* + * + * @macro: + * FT_UNPATENTED_HINTING_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which performs color filtering for subpixel rendering. + */ #define FT_UNPATENTED_HINTING_H <freetype/ttunpat.h> - /************************************************************************* - * - * @macro: - * FT_INCREMENTAL_H - * - * @description: - * A macro used in #include statements to name the file containing the - * FreeType~2 API which performs color filtering for subpixel rendering. - */ +/************************************************************************* + * + * @macro: + * FT_INCREMENTAL_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which performs color filtering for subpixel rendering. + */ #define FT_INCREMENTAL_H <freetype/ftincrem.h> - /************************************************************************* - * - * @macro: - * FT_GASP_H - * - * @description: - * A macro used in #include statements to name the file containing the - * FreeType~2 API which returns entries from the TrueType GASP table. - */ +/************************************************************************* + * + * @macro: + * FT_GASP_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which returns entries from the TrueType GASP table. + */ #define FT_GASP_H <freetype/ftgasp.h> - /************************************************************************* - * - * @macro: - * FT_ADVANCES_H - * - * @description: - * A macro used in #include statements to name the file containing the - * FreeType~2 API which returns individual and ranged glyph advances. - */ +/************************************************************************* + * + * @macro: + * FT_ADVANCES_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which returns individual and ranged glyph advances. + */ #define FT_ADVANCES_H <freetype/ftadvanc.h> - /* */ +/* */ #define FT_ERROR_DEFINITIONS_H <freetype/fterrdef.h> - /* The internals of the cache sub-system are no longer exposed. We */ - /* default to FT_CACHE_H at the moment just in case, but we know of */ - /* no rogue client that uses them. */ - /* */ +/* The internals of the cache sub-system are no longer exposed. We */ +/* default to FT_CACHE_H at the moment just in case, but we know of */ +/* no rogue client that uses them. */ +/* */ #define FT_CACHE_MANAGER_H <freetype/ftcache.h> #define FT_CACHE_INTERNAL_MRU_H <freetype/ftcache.h> #define FT_CACHE_INTERNAL_MANAGER_H <freetype/ftcache.h> @@ -803,10 +803,10 @@ #define FT_TRUETYPE_UNPATENTED_H <freetype/ttunpat.h> - /* - * Include internal headers definitions from <freetype/internal/...> - * only when building the library. - */ +/* + * Include internal headers definitions from <freetype/internal/...> + * only when building the library. + */ #ifdef FT2_BUILD_LIBRARY #define FT_INTERNAL_INTERNAL_H <freetype/internal/internal.h> #include FT_INTERNAL_INTERNAL_H diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/config/ftoption.h b/thirdparties/common/include/libfreetype/freetype2/freetype/config/ftoption.h index 93e9eb5..e007105 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/config/ftoption.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/config/ftoption.h @@ -25,506 +25,506 @@ FT_BEGIN_HEADER - /*************************************************************************/ - /* */ - /* USER-SELECTABLE CONFIGURATION MACROS */ - /* */ - /* This file contains the default configuration macro definitions for */ - /* a standard build of the FreeType library. There are three ways to */ - /* use this file to build project-specific versions of the library: */ - /* */ - /* - You can modify this file by hand, but this is not recommended in */ - /* cases where you would like to build several versions of the */ - /* library from a single source directory. */ - /* */ - /* - You can put a copy of this file in your build directory, more */ - /* precisely in `$BUILD/freetype/config/ftoption.h', where `$BUILD' */ - /* is the name of a directory that is included _before_ the FreeType */ - /* include path during compilation. */ - /* */ - /* The default FreeType Makefiles and Jamfiles use the build */ - /* directory `builds/<system>' by default, but you can easily change */ - /* that for your own projects. */ - /* */ - /* - Copy the file <ft2build.h> to `$BUILD/ft2build.h' and modify it */ - /* slightly to pre-define the macro FT_CONFIG_OPTIONS_H used to */ - /* locate this file during the build. For example, */ - /* */ - /* #define FT_CONFIG_OPTIONS_H <myftoptions.h> */ - /* #include <freetype/config/ftheader.h> */ - /* */ - /* will use `$BUILD/myftoptions.h' instead of this file for macro */ - /* definitions. */ - /* */ - /* Note also that you can similarly pre-define the macro */ - /* FT_CONFIG_MODULES_H used to locate the file listing of the modules */ - /* that are statically linked to the library at compile time. By */ - /* default, this file is <freetype/config/ftmodule.h>. */ - /* */ - /* We highly recommend using the third method whenever possible. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** G E N E R A L F R E E T Y P E 2 C O N F I G U R A T I O N ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* Uncomment the line below if you want to activate sub-pixel rendering */ - /* (a.k.a. LCD rendering, or ClearType) in this build of the library. */ - /* */ - /* Note that this feature is covered by several Microsoft patents */ - /* and should not be activated in any default build of the library. */ - /* */ - /* This macro has no impact on the FreeType API, only on its */ - /* _implementation_. For example, using FT_RENDER_MODE_LCD when calling */ - /* FT_Render_Glyph still generates a bitmap that is 3 times wider than */ - /* the original size in case this macro isn't defined; however, each */ - /* triplet of subpixels has R=G=B. */ - /* */ - /* This is done to allow FreeType clients to run unmodified, forcing */ - /* them to display normal gray-level anti-aliased glyphs. */ - /* */ +/*************************************************************************/ +/* */ +/* USER-SELECTABLE CONFIGURATION MACROS */ +/* */ +/* This file contains the default configuration macro definitions for */ +/* a standard build of the FreeType library. There are three ways to */ +/* use this file to build project-specific versions of the library: */ +/* */ +/* - You can modify this file by hand, but this is not recommended in */ +/* cases where you would like to build several versions of the */ +/* library from a single source directory. */ +/* */ +/* - You can put a copy of this file in your build directory, more */ +/* precisely in `$BUILD/freetype/config/ftoption.h', where `$BUILD' */ +/* is the name of a directory that is included _before_ the FreeType */ +/* include path during compilation. */ +/* */ +/* The default FreeType Makefiles and Jamfiles use the build */ +/* directory `builds/<system>' by default, but you can easily change */ +/* that for your own projects. */ +/* */ +/* - Copy the file <ft2build.h> to `$BUILD/ft2build.h' and modify it */ +/* slightly to pre-define the macro FT_CONFIG_OPTIONS_H used to */ +/* locate this file during the build. For example, */ +/* */ +/* #define FT_CONFIG_OPTIONS_H <myftoptions.h> */ +/* #include <freetype/config/ftheader.h> */ +/* */ +/* will use `$BUILD/myftoptions.h' instead of this file for macro */ +/* definitions. */ +/* */ +/* Note also that you can similarly pre-define the macro */ +/* FT_CONFIG_MODULES_H used to locate the file listing of the modules */ +/* that are statically linked to the library at compile time. By */ +/* default, this file is <freetype/config/ftmodule.h>. */ +/* */ +/* We highly recommend using the third method whenever possible. */ +/* */ +/*************************************************************************/ + + +/*************************************************************************/ +/*************************************************************************/ +/**** ****/ +/**** G E N E R A L F R E E T Y P E 2 C O N F I G U R A T I O N ****/ +/**** ****/ +/*************************************************************************/ +/*************************************************************************/ + + +/*************************************************************************/ +/* */ +/* Uncomment the line below if you want to activate sub-pixel rendering */ +/* (a.k.a. LCD rendering, or ClearType) in this build of the library. */ +/* */ +/* Note that this feature is covered by several Microsoft patents */ +/* and should not be activated in any default build of the library. */ +/* */ +/* This macro has no impact on the FreeType API, only on its */ +/* _implementation_. For example, using FT_RENDER_MODE_LCD when calling */ +/* FT_Render_Glyph still generates a bitmap that is 3 times wider than */ +/* the original size in case this macro isn't defined; however, each */ +/* triplet of subpixels has R=G=B. */ +/* */ +/* This is done to allow FreeType clients to run unmodified, forcing */ +/* them to display normal gray-level anti-aliased glyphs. */ +/* */ /* #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING */ - /*************************************************************************/ - /* */ - /* Many compilers provide a non-ANSI 64-bit data type that can be used */ - /* by FreeType to speed up some computations. However, this will create */ - /* some problems when compiling the library in strict ANSI mode. */ - /* */ - /* For this reason, the use of 64-bit integers is normally disabled when */ - /* the __STDC__ macro is defined. You can however disable this by */ - /* defining the macro FT_CONFIG_OPTION_FORCE_INT64 here. */ - /* */ - /* For most compilers, this will only create compilation warnings when */ - /* building the library. */ - /* */ - /* ObNote: The compiler-specific 64-bit integers are detected in the */ - /* file `ftconfig.h' either statically or through the */ - /* `configure' script on supported platforms. */ - /* */ +/*************************************************************************/ +/* */ +/* Many compilers provide a non-ANSI 64-bit data type that can be used */ +/* by FreeType to speed up some computations. However, this will create */ +/* some problems when compiling the library in strict ANSI mode. */ +/* */ +/* For this reason, the use of 64-bit integers is normally disabled when */ +/* the __STDC__ macro is defined. You can however disable this by */ +/* defining the macro FT_CONFIG_OPTION_FORCE_INT64 here. */ +/* */ +/* For most compilers, this will only create compilation warnings when */ +/* building the library. */ +/* */ +/* ObNote: The compiler-specific 64-bit integers are detected in the */ +/* file `ftconfig.h' either statically or through the */ +/* `configure' script on supported platforms. */ +/* */ #undef FT_CONFIG_OPTION_FORCE_INT64 - /*************************************************************************/ - /* */ - /* If this macro is defined, do not try to use an assembler version of */ - /* performance-critical functions (e.g. FT_MulFix). You should only do */ - /* that to verify that the assembler function works properly, or to */ - /* execute benchmark tests of the various implementations. */ +/*************************************************************************/ +/* */ +/* If this macro is defined, do not try to use an assembler version of */ +/* performance-critical functions (e.g. FT_MulFix). You should only do */ +/* that to verify that the assembler function works properly, or to */ +/* execute benchmark tests of the various implementations. */ /* #define FT_CONFIG_OPTION_NO_ASSEMBLER */ - /*************************************************************************/ - /* */ - /* If this macro is defined, try to use an inlined assembler version of */ - /* the `FT_MulFix' function, which is a `hotspot' when loading and */ - /* hinting glyphs, and which should be executed as fast as possible. */ - /* */ - /* Note that if your compiler or CPU is not supported, this will default */ - /* to the standard and portable implementation found in `ftcalc.c'. */ - /* */ +/*************************************************************************/ +/* */ +/* If this macro is defined, try to use an inlined assembler version of */ +/* the `FT_MulFix' function, which is a `hotspot' when loading and */ +/* hinting glyphs, and which should be executed as fast as possible. */ +/* */ +/* Note that if your compiler or CPU is not supported, this will default */ +/* to the standard and portable implementation found in `ftcalc.c'. */ +/* */ #define FT_CONFIG_OPTION_INLINE_MULFIX - /*************************************************************************/ - /* */ - /* LZW-compressed file support. */ - /* */ - /* FreeType now handles font files that have been compressed with the */ - /* `compress' program. This is mostly used to parse many of the PCF */ - /* files that come with various X11 distributions. The implementation */ - /* uses NetBSD's `zopen' to partially uncompress the file on the fly */ - /* (see src/lzw/ftgzip.c). */ - /* */ - /* Define this macro if you want to enable this `feature'. */ - /* */ +/*************************************************************************/ +/* */ +/* LZW-compressed file support. */ +/* */ +/* FreeType now handles font files that have been compressed with the */ +/* `compress' program. This is mostly used to parse many of the PCF */ +/* files that come with various X11 distributions. The implementation */ +/* uses NetBSD's `zopen' to partially uncompress the file on the fly */ +/* (see src/lzw/ftgzip.c). */ +/* */ +/* Define this macro if you want to enable this `feature'. */ +/* */ #define FT_CONFIG_OPTION_USE_LZW - /*************************************************************************/ - /* */ - /* Gzip-compressed file support. */ - /* */ - /* FreeType now handles font files that have been compressed with the */ - /* `gzip' program. This is mostly used to parse many of the PCF files */ - /* that come with XFree86. The implementation uses `zlib' to */ - /* partially uncompress the file on the fly (see src/gzip/ftgzip.c). */ - /* */ - /* Define this macro if you want to enable this `feature'. See also */ - /* the macro FT_CONFIG_OPTION_SYSTEM_ZLIB below. */ - /* */ +/*************************************************************************/ +/* */ +/* Gzip-compressed file support. */ +/* */ +/* FreeType now handles font files that have been compressed with the */ +/* `gzip' program. This is mostly used to parse many of the PCF files */ +/* that come with XFree86. The implementation uses `zlib' to */ +/* partially uncompress the file on the fly (see src/gzip/ftgzip.c). */ +/* */ +/* Define this macro if you want to enable this `feature'. See also */ +/* the macro FT_CONFIG_OPTION_SYSTEM_ZLIB below. */ +/* */ #define FT_CONFIG_OPTION_USE_ZLIB - /*************************************************************************/ - /* */ - /* ZLib library selection */ - /* */ - /* This macro is only used when FT_CONFIG_OPTION_USE_ZLIB is defined. */ - /* It allows FreeType's `ftgzip' component to link to the system's */ - /* installation of the ZLib library. This is useful on systems like */ - /* Unix or VMS where it generally is already available. */ - /* */ - /* If you let it undefined, the component will use its own copy */ - /* of the zlib sources instead. These have been modified to be */ - /* included directly within the component and *not* export external */ - /* function names. This allows you to link any program with FreeType */ - /* _and_ ZLib without linking conflicts. */ - /* */ - /* Do not #undef this macro here since the build system might define */ - /* it for certain configurations only. */ - /* */ +/*************************************************************************/ +/* */ +/* ZLib library selection */ +/* */ +/* This macro is only used when FT_CONFIG_OPTION_USE_ZLIB is defined. */ +/* It allows FreeType's `ftgzip' component to link to the system's */ +/* installation of the ZLib library. This is useful on systems like */ +/* Unix or VMS where it generally is already available. */ +/* */ +/* If you let it undefined, the component will use its own copy */ +/* of the zlib sources instead. These have been modified to be */ +/* included directly within the component and *not* export external */ +/* function names. This allows you to link any program with FreeType */ +/* _and_ ZLib without linking conflicts. */ +/* */ +/* Do not #undef this macro here since the build system might define */ +/* it for certain configurations only. */ +/* */ /* #define FT_CONFIG_OPTION_SYSTEM_ZLIB */ - /*************************************************************************/ - /* */ - /* Bzip2-compressed file support. */ - /* */ - /* FreeType now handles font files that have been compressed with the */ - /* `bzip2' program. This is mostly used to parse many of the PCF */ - /* files that come with XFree86. The implementation uses `libbz2' to */ - /* partially uncompress the file on the fly (see src/bzip2/ftbzip2.c). */ - /* Contrary to gzip, bzip2 currently is not included and need to use */ - /* the system available bzip2 implementation. */ - /* */ - /* Define this macro if you want to enable this `feature'. */ - /* */ +/*************************************************************************/ +/* */ +/* Bzip2-compressed file support. */ +/* */ +/* FreeType now handles font files that have been compressed with the */ +/* `bzip2' program. This is mostly used to parse many of the PCF */ +/* files that come with XFree86. The implementation uses `libbz2' to */ +/* partially uncompress the file on the fly (see src/bzip2/ftbzip2.c). */ +/* Contrary to gzip, bzip2 currently is not included and need to use */ +/* the system available bzip2 implementation. */ +/* */ +/* Define this macro if you want to enable this `feature'. */ +/* */ /* #define FT_CONFIG_OPTION_USE_BZIP2 */ - /*************************************************************************/ - /* */ - /* Define to disable the use of file stream functions and types, FILE, */ - /* fopen() etc. Enables the use of smaller system libraries on embedded */ - /* systems that have multiple system libraries, some with or without */ - /* file stream support, in the cases where file stream support is not */ - /* necessary such as memory loading of font files. */ - /* */ +/*************************************************************************/ +/* */ +/* Define to disable the use of file stream functions and types, FILE, */ +/* fopen() etc. Enables the use of smaller system libraries on embedded */ +/* systems that have multiple system libraries, some with or without */ +/* file stream support, in the cases where file stream support is not */ +/* necessary such as memory loading of font files. */ +/* */ /* #define FT_CONFIG_OPTION_DISABLE_STREAM_SUPPORT */ - /*************************************************************************/ - /* */ - /* DLL export compilation */ - /* */ - /* When compiling FreeType as a DLL, some systems/compilers need a */ - /* special keyword in front OR after the return type of function */ - /* declarations. */ - /* */ - /* Two macros are used within the FreeType source code to define */ - /* exported library functions: FT_EXPORT and FT_EXPORT_DEF. */ - /* */ - /* FT_EXPORT( return_type ) */ - /* */ - /* is used in a function declaration, as in */ - /* */ - /* FT_EXPORT( FT_Error ) */ - /* FT_Init_FreeType( FT_Library* alibrary ); */ - /* */ - /* */ - /* FT_EXPORT_DEF( return_type ) */ - /* */ - /* is used in a function definition, as in */ - /* */ - /* FT_EXPORT_DEF( FT_Error ) */ - /* FT_Init_FreeType( FT_Library* alibrary ) */ - /* { */ - /* ... some code ... */ - /* return FT_Err_Ok; */ - /* } */ - /* */ - /* You can provide your own implementation of FT_EXPORT and */ - /* FT_EXPORT_DEF here if you want. If you leave them undefined, they */ - /* will be later automatically defined as `extern return_type' to */ - /* allow normal compilation. */ - /* */ - /* Do not #undef these macros here since the build system might define */ - /* them for certain configurations only. */ - /* */ +/*************************************************************************/ +/* */ +/* DLL export compilation */ +/* */ +/* When compiling FreeType as a DLL, some systems/compilers need a */ +/* special keyword in front OR after the return type of function */ +/* declarations. */ +/* */ +/* Two macros are used within the FreeType source code to define */ +/* exported library functions: FT_EXPORT and FT_EXPORT_DEF. */ +/* */ +/* FT_EXPORT( return_type ) */ +/* */ +/* is used in a function declaration, as in */ +/* */ +/* FT_EXPORT( FT_Error ) */ +/* FT_Init_FreeType( FT_Library* alibrary ); */ +/* */ +/* */ +/* FT_EXPORT_DEF( return_type ) */ +/* */ +/* is used in a function definition, as in */ +/* */ +/* FT_EXPORT_DEF( FT_Error ) */ +/* FT_Init_FreeType( FT_Library* alibrary ) */ +/* { */ +/* ... some code ... */ +/* return FT_Err_Ok; */ +/* } */ +/* */ +/* You can provide your own implementation of FT_EXPORT and */ +/* FT_EXPORT_DEF here if you want. If you leave them undefined, they */ +/* will be later automatically defined as `extern return_type' to */ +/* allow normal compilation. */ +/* */ +/* Do not #undef these macros here since the build system might define */ +/* them for certain configurations only. */ +/* */ /* #define FT_EXPORT(x) extern x */ /* #define FT_EXPORT_DEF(x) x */ - /*************************************************************************/ - /* */ - /* Glyph Postscript Names handling */ - /* */ - /* By default, FreeType 2 is compiled with the `psnames' module. This */ - /* module is in charge of converting a glyph name string into a */ - /* Unicode value, or return a Macintosh standard glyph name for the */ - /* use with the TrueType `post' table. */ - /* */ - /* Undefine this macro if you do not want `psnames' compiled in your */ - /* build of FreeType. This has the following effects: */ - /* */ - /* - The TrueType driver will provide its own set of glyph names, */ - /* if you build it to support postscript names in the TrueType */ - /* `post' table. */ - /* */ - /* - The Type 1 driver will not be able to synthesize a Unicode */ - /* charmap out of the glyphs found in the fonts. */ - /* */ - /* You would normally undefine this configuration macro when building */ - /* a version of FreeType that doesn't contain a Type 1 or CFF driver. */ - /* */ +/*************************************************************************/ +/* */ +/* Glyph Postscript Names handling */ +/* */ +/* By default, FreeType 2 is compiled with the `psnames' module. This */ +/* module is in charge of converting a glyph name string into a */ +/* Unicode value, or return a Macintosh standard glyph name for the */ +/* use with the TrueType `post' table. */ +/* */ +/* Undefine this macro if you do not want `psnames' compiled in your */ +/* build of FreeType. This has the following effects: */ +/* */ +/* - The TrueType driver will provide its own set of glyph names, */ +/* if you build it to support postscript names in the TrueType */ +/* `post' table. */ +/* */ +/* - The Type 1 driver will not be able to synthesize a Unicode */ +/* charmap out of the glyphs found in the fonts. */ +/* */ +/* You would normally undefine this configuration macro when building */ +/* a version of FreeType that doesn't contain a Type 1 or CFF driver. */ +/* */ #define FT_CONFIG_OPTION_POSTSCRIPT_NAMES - /*************************************************************************/ - /* */ - /* Postscript Names to Unicode Values support */ - /* */ - /* By default, FreeType 2 is built with the `PSNames' module compiled */ - /* in. Among other things, the module is used to convert a glyph name */ - /* into a Unicode value. This is especially useful in order to */ - /* synthesize on the fly a Unicode charmap from the CFF/Type 1 driver */ - /* through a big table named the `Adobe Glyph List' (AGL). */ - /* */ - /* Undefine this macro if you do not want the Adobe Glyph List */ - /* compiled in your `PSNames' module. The Type 1 driver will not be */ - /* able to synthesize a Unicode charmap out of the glyphs found in the */ - /* fonts. */ - /* */ +/*************************************************************************/ +/* */ +/* Postscript Names to Unicode Values support */ +/* */ +/* By default, FreeType 2 is built with the `PSNames' module compiled */ +/* in. Among other things, the module is used to convert a glyph name */ +/* into a Unicode value. This is especially useful in order to */ +/* synthesize on the fly a Unicode charmap from the CFF/Type 1 driver */ +/* through a big table named the `Adobe Glyph List' (AGL). */ +/* */ +/* Undefine this macro if you do not want the Adobe Glyph List */ +/* compiled in your `PSNames' module. The Type 1 driver will not be */ +/* able to synthesize a Unicode charmap out of the glyphs found in the */ +/* fonts. */ +/* */ #define FT_CONFIG_OPTION_ADOBE_GLYPH_LIST - /*************************************************************************/ - /* */ - /* Support for Mac fonts */ - /* */ - /* Define this macro if you want support for outline fonts in Mac */ - /* format (mac dfont, mac resource, macbinary containing a mac */ - /* resource) on non-Mac platforms. */ - /* */ - /* Note that the `FOND' resource isn't checked. */ - /* */ +/*************************************************************************/ +/* */ +/* Support for Mac fonts */ +/* */ +/* Define this macro if you want support for outline fonts in Mac */ +/* format (mac dfont, mac resource, macbinary containing a mac */ +/* resource) on non-Mac platforms. */ +/* */ +/* Note that the `FOND' resource isn't checked. */ +/* */ #define FT_CONFIG_OPTION_MAC_FONTS - /*************************************************************************/ - /* */ - /* Guessing methods to access embedded resource forks */ - /* */ - /* Enable extra Mac fonts support on non-Mac platforms (e.g. */ - /* GNU/Linux). */ - /* */ - /* Resource forks which include fonts data are stored sometimes in */ - /* locations which users or developers don't expected. In some cases, */ - /* resource forks start with some offset from the head of a file. In */ - /* other cases, the actual resource fork is stored in file different */ - /* from what the user specifies. If this option is activated, */ - /* FreeType tries to guess whether such offsets or different file */ - /* names must be used. */ - /* */ - /* Note that normal, direct access of resource forks is controlled via */ - /* the FT_CONFIG_OPTION_MAC_FONTS option. */ - /* */ +/*************************************************************************/ +/* */ +/* Guessing methods to access embedded resource forks */ +/* */ +/* Enable extra Mac fonts support on non-Mac platforms (e.g. */ +/* GNU/Linux). */ +/* */ +/* Resource forks which include fonts data are stored sometimes in */ +/* locations which users or developers don't expected. In some cases, */ +/* resource forks start with some offset from the head of a file. In */ +/* other cases, the actual resource fork is stored in file different */ +/* from what the user specifies. If this option is activated, */ +/* FreeType tries to guess whether such offsets or different file */ +/* names must be used. */ +/* */ +/* Note that normal, direct access of resource forks is controlled via */ +/* the FT_CONFIG_OPTION_MAC_FONTS option. */ +/* */ #ifdef FT_CONFIG_OPTION_MAC_FONTS #define FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK #endif - /*************************************************************************/ - /* */ - /* Allow the use of FT_Incremental_Interface to load typefaces that */ - /* contain no glyph data, but supply it via a callback function. */ - /* This is required by clients supporting document formats which */ - /* supply font data incrementally as the document is parsed, such */ - /* as the Ghostscript interpreter for the PostScript language. */ - /* */ +/*************************************************************************/ +/* */ +/* Allow the use of FT_Incremental_Interface to load typefaces that */ +/* contain no glyph data, but supply it via a callback function. */ +/* This is required by clients supporting document formats which */ +/* supply font data incrementally as the document is parsed, such */ +/* as the Ghostscript interpreter for the PostScript language. */ +/* */ #define FT_CONFIG_OPTION_INCREMENTAL - /*************************************************************************/ - /* */ - /* The size in bytes of the render pool used by the scan-line converter */ - /* to do all of its work. */ - /* */ - /* This must be greater than 4KByte if you use FreeType to rasterize */ - /* glyphs; otherwise, you may set it to zero to avoid unnecessary */ - /* allocation of the render pool. */ - /* */ +/*************************************************************************/ +/* */ +/* The size in bytes of the render pool used by the scan-line converter */ +/* to do all of its work. */ +/* */ +/* This must be greater than 4KByte if you use FreeType to rasterize */ +/* glyphs; otherwise, you may set it to zero to avoid unnecessary */ +/* allocation of the render pool. */ +/* */ #define FT_RENDER_POOL_SIZE 16384L - /*************************************************************************/ - /* */ - /* FT_MAX_MODULES */ - /* */ - /* The maximum number of modules that can be registered in a single */ - /* FreeType library object. 32 is the default. */ - /* */ +/*************************************************************************/ +/* */ +/* FT_MAX_MODULES */ +/* */ +/* The maximum number of modules that can be registered in a single */ +/* FreeType library object. 32 is the default. */ +/* */ #define FT_MAX_MODULES 32 - /*************************************************************************/ - /* */ - /* Debug level */ - /* */ - /* FreeType can be compiled in debug or trace mode. In debug mode, */ - /* errors are reported through the `ftdebug' component. In trace */ - /* mode, additional messages are sent to the standard output during */ - /* execution. */ - /* */ - /* Define FT_DEBUG_LEVEL_ERROR to build the library in debug mode. */ - /* Define FT_DEBUG_LEVEL_TRACE to build it in trace mode. */ - /* */ - /* Don't define any of these macros to compile in `release' mode! */ - /* */ - /* Do not #undef these macros here since the build system might define */ - /* them for certain configurations only. */ - /* */ +/*************************************************************************/ +/* */ +/* Debug level */ +/* */ +/* FreeType can be compiled in debug or trace mode. In debug mode, */ +/* errors are reported through the `ftdebug' component. In trace */ +/* mode, additional messages are sent to the standard output during */ +/* execution. */ +/* */ +/* Define FT_DEBUG_LEVEL_ERROR to build the library in debug mode. */ +/* Define FT_DEBUG_LEVEL_TRACE to build it in trace mode. */ +/* */ +/* Don't define any of these macros to compile in `release' mode! */ +/* */ +/* Do not #undef these macros here since the build system might define */ +/* them for certain configurations only. */ +/* */ /* #define FT_DEBUG_LEVEL_ERROR */ /* #define FT_DEBUG_LEVEL_TRACE */ - /*************************************************************************/ - /* */ - /* Autofitter debugging */ - /* */ - /* If FT_DEBUG_AUTOFIT is defined, FreeType provides some means to */ - /* control the autofitter behaviour for debugging purposes with global */ - /* boolean variables (consequently, you should *never* enable this */ - /* while compiling in `release' mode): */ - /* */ - /* _af_debug_disable_horz_hints */ - /* _af_debug_disable_vert_hints */ - /* _af_debug_disable_blue_hints */ - /* */ - /* Additionally, the following functions provide dumps of various */ - /* internal autofit structures to stdout (using `printf'): */ - /* */ - /* af_glyph_hints_dump_points */ - /* af_glyph_hints_dump_segments */ - /* af_glyph_hints_dump_edges */ - /* */ - /* As an argument, they use another global variable: */ - /* */ - /* _af_debug_hints */ - /* */ - /* Please have a look at the `ftgrid' demo program to see how those */ - /* variables and macros should be used. */ - /* */ - /* Do not #undef these macros here since the build system might define */ - /* them for certain configurations only. */ - /* */ +/*************************************************************************/ +/* */ +/* Autofitter debugging */ +/* */ +/* If FT_DEBUG_AUTOFIT is defined, FreeType provides some means to */ +/* control the autofitter behaviour for debugging purposes with global */ +/* boolean variables (consequently, you should *never* enable this */ +/* while compiling in `release' mode): */ +/* */ +/* _af_debug_disable_horz_hints */ +/* _af_debug_disable_vert_hints */ +/* _af_debug_disable_blue_hints */ +/* */ +/* Additionally, the following functions provide dumps of various */ +/* internal autofit structures to stdout (using `printf'): */ +/* */ +/* af_glyph_hints_dump_points */ +/* af_glyph_hints_dump_segments */ +/* af_glyph_hints_dump_edges */ +/* */ +/* As an argument, they use another global variable: */ +/* */ +/* _af_debug_hints */ +/* */ +/* Please have a look at the `ftgrid' demo program to see how those */ +/* variables and macros should be used. */ +/* */ +/* Do not #undef these macros here since the build system might define */ +/* them for certain configurations only. */ +/* */ /* #define FT_DEBUG_AUTOFIT */ - /*************************************************************************/ - /* */ - /* Memory Debugging */ - /* */ - /* FreeType now comes with an integrated memory debugger that is */ - /* capable of detecting simple errors like memory leaks or double */ - /* deletes. To compile it within your build of the library, you */ - /* should define FT_DEBUG_MEMORY here. */ - /* */ - /* Note that the memory debugger is only activated at runtime when */ - /* when the _environment_ variable `FT2_DEBUG_MEMORY' is defined also! */ - /* */ - /* Do not #undef this macro here since the build system might define */ - /* it for certain configurations only. */ - /* */ +/*************************************************************************/ +/* */ +/* Memory Debugging */ +/* */ +/* FreeType now comes with an integrated memory debugger that is */ +/* capable of detecting simple errors like memory leaks or double */ +/* deletes. To compile it within your build of the library, you */ +/* should define FT_DEBUG_MEMORY here. */ +/* */ +/* Note that the memory debugger is only activated at runtime when */ +/* when the _environment_ variable `FT2_DEBUG_MEMORY' is defined also! */ +/* */ +/* Do not #undef this macro here since the build system might define */ +/* it for certain configurations only. */ +/* */ /* #define FT_DEBUG_MEMORY */ - /*************************************************************************/ - /* */ - /* Module errors */ - /* */ - /* If this macro is set (which is _not_ the default), the higher byte */ - /* of an error code gives the module in which the error has occurred, */ - /* while the lower byte is the real error code. */ - /* */ - /* Setting this macro makes sense for debugging purposes only, since */ - /* it would break source compatibility of certain programs that use */ - /* FreeType 2. */ - /* */ - /* More details can be found in the files ftmoderr.h and fterrors.h. */ - /* */ +/*************************************************************************/ +/* */ +/* Module errors */ +/* */ +/* If this macro is set (which is _not_ the default), the higher byte */ +/* of an error code gives the module in which the error has occurred, */ +/* while the lower byte is the real error code. */ +/* */ +/* Setting this macro makes sense for debugging purposes only, since */ +/* it would break source compatibility of certain programs that use */ +/* FreeType 2. */ +/* */ +/* More details can be found in the files ftmoderr.h and fterrors.h. */ +/* */ #undef FT_CONFIG_OPTION_USE_MODULE_ERRORS - /*************************************************************************/ - /* */ - /* Position Independent Code */ - /* */ - /* If this macro is set (which is _not_ the default), FreeType2 will */ - /* avoid creating constants that require address fixups. Instead the */ - /* constants will be moved into a struct and additional intialization */ - /* code will be used. */ - /* */ - /* Setting this macro is needed for systems that prohibit address */ - /* fixups, such as BREW. */ - /* */ +/*************************************************************************/ +/* */ +/* Position Independent Code */ +/* */ +/* If this macro is set (which is _not_ the default), FreeType2 will */ +/* avoid creating constants that require address fixups. Instead the */ +/* constants will be moved into a struct and additional intialization */ +/* code will be used. */ +/* */ +/* Setting this macro is needed for systems that prohibit address */ +/* fixups, such as BREW. */ +/* */ /* #define FT_CONFIG_OPTION_PIC */ - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** S F N T D R I V E R C O N F I G U R A T I O N ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ +/*************************************************************************/ +/*************************************************************************/ +/**** ****/ +/**** S F N T D R I V E R C O N F I G U R A T I O N ****/ +/**** ****/ +/*************************************************************************/ +/*************************************************************************/ - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_EMBEDDED_BITMAPS if you want to support */ - /* embedded bitmaps in all formats using the SFNT module (namely */ - /* TrueType & OpenType). */ - /* */ +/*************************************************************************/ +/* */ +/* Define TT_CONFIG_OPTION_EMBEDDED_BITMAPS if you want to support */ +/* embedded bitmaps in all formats using the SFNT module (namely */ +/* TrueType & OpenType). */ +/* */ #define TT_CONFIG_OPTION_EMBEDDED_BITMAPS - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_POSTSCRIPT_NAMES if you want to be able to */ - /* load and enumerate the glyph Postscript names in a TrueType or */ - /* OpenType file. */ - /* */ - /* Note that when you do not compile the `PSNames' module by undefining */ - /* the above FT_CONFIG_OPTION_POSTSCRIPT_NAMES, the `sfnt' module will */ - /* contain additional code used to read the PS Names table from a font. */ - /* */ - /* (By default, the module uses `PSNames' to extract glyph names.) */ - /* */ +/*************************************************************************/ +/* */ +/* Define TT_CONFIG_OPTION_POSTSCRIPT_NAMES if you want to be able to */ +/* load and enumerate the glyph Postscript names in a TrueType or */ +/* OpenType file. */ +/* */ +/* Note that when you do not compile the `PSNames' module by undefining */ +/* the above FT_CONFIG_OPTION_POSTSCRIPT_NAMES, the `sfnt' module will */ +/* contain additional code used to read the PS Names table from a font. */ +/* */ +/* (By default, the module uses `PSNames' to extract glyph names.) */ +/* */ #define TT_CONFIG_OPTION_POSTSCRIPT_NAMES - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_SFNT_NAMES if your applications need to */ - /* access the internal name table in a SFNT-based format like TrueType */ - /* or OpenType. The name table contains various strings used to */ - /* describe the font, like family name, copyright, version, etc. It */ - /* does not contain any glyph name though. */ - /* */ - /* Accessing SFNT names is done through the functions declared in */ - /* `freetype/ftsnames.h'. */ - /* */ +/*************************************************************************/ +/* */ +/* Define TT_CONFIG_OPTION_SFNT_NAMES if your applications need to */ +/* access the internal name table in a SFNT-based format like TrueType */ +/* or OpenType. The name table contains various strings used to */ +/* describe the font, like family name, copyright, version, etc. It */ +/* does not contain any glyph name though. */ +/* */ +/* Accessing SFNT names is done through the functions declared in */ +/* `freetype/ftsnames.h'. */ +/* */ #define TT_CONFIG_OPTION_SFNT_NAMES - /*************************************************************************/ - /* */ - /* TrueType CMap support */ - /* */ - /* Here you can fine-tune which TrueType CMap table format shall be */ - /* supported. */ +/*************************************************************************/ +/* */ +/* TrueType CMap support */ +/* */ +/* Here you can fine-tune which TrueType CMap table format shall be */ +/* supported. */ #define TT_CONFIG_CMAP_FORMAT_0 #define TT_CONFIG_CMAP_FORMAT_2 #define TT_CONFIG_CMAP_FORMAT_4 @@ -536,281 +536,281 @@ FT_BEGIN_HEADER #define TT_CONFIG_CMAP_FORMAT_14 - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** T R U E T Y P E D R I V E R C O N F I G U R A T I O N ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_BYTECODE_INTERPRETER if you want to compile */ - /* a bytecode interpreter in the TrueType driver. */ - /* */ - /* By undefining this, you will only compile the code necessary to load */ - /* TrueType glyphs without hinting. */ - /* */ - /* Do not #undef this macro here, since the build system might */ - /* define it for certain configurations only. */ - /* */ +/*************************************************************************/ +/*************************************************************************/ +/**** ****/ +/**** T R U E T Y P E D R I V E R C O N F I G U R A T I O N ****/ +/**** ****/ +/*************************************************************************/ +/*************************************************************************/ + +/*************************************************************************/ +/* */ +/* Define TT_CONFIG_OPTION_BYTECODE_INTERPRETER if you want to compile */ +/* a bytecode interpreter in the TrueType driver. */ +/* */ +/* By undefining this, you will only compile the code necessary to load */ +/* TrueType glyphs without hinting. */ +/* */ +/* 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_SUBPIXEL_HINTING if you want to compile */ - /* EXPERIMENTAL subpixel hinting support into the TrueType driver. This */ - /* replaces the native TrueType hinting mechanism when anything but */ - /* FT_RENDER_MODE_MONO is requested. */ - /* */ - /* Enabling this causes the TrueType driver to ignore instructions under */ - /* certain conditions. This is done in accordance with the guide here, */ - /* with some minor differences: */ - /* */ - /* http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx */ - /* */ - /* By undefining this, you only compile the code necessary to hint */ - /* TrueType glyphs with native TT hinting. */ - /* */ - /* This option requires TT_CONFIG_OPTION_BYTECODE_INTERPRETER to be */ - /* defined. */ - /* */ +/*************************************************************************/ +/* */ +/* Define TT_CONFIG_OPTION_SUBPIXEL_HINTING if you want to compile */ +/* EXPERIMENTAL subpixel hinting support into the TrueType driver. This */ +/* replaces the native TrueType hinting mechanism when anything but */ +/* FT_RENDER_MODE_MONO is requested. */ +/* */ +/* Enabling this causes the TrueType driver to ignore instructions under */ +/* certain conditions. This is done in accordance with the guide here, */ +/* with some minor differences: */ +/* */ +/* http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx */ +/* */ +/* By undefining this, you only compile the code necessary to hint */ +/* TrueType glyphs with native TT hinting. */ +/* */ +/* This option requires TT_CONFIG_OPTION_BYTECODE_INTERPRETER to be */ +/* defined. */ +/* */ /* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING */ - /*************************************************************************/ - /* */ - /* If you define TT_CONFIG_OPTION_UNPATENTED_HINTING, a special version */ - /* of the TrueType bytecode interpreter is used that doesn't implement */ - /* any of the patented opcodes and algorithms. The patents related to */ - /* TrueType hinting have expired worldwide since May 2010; this option */ - /* is now deprecated. */ - /* */ - /* Note that the TT_CONFIG_OPTION_UNPATENTED_HINTING macro is *ignored* */ - /* if you define TT_CONFIG_OPTION_BYTECODE_INTERPRETER; in other words, */ - /* either define TT_CONFIG_OPTION_BYTECODE_INTERPRETER or */ - /* TT_CONFIG_OPTION_UNPATENTED_HINTING but not both at the same time. */ - /* */ - /* This macro is only useful for a small number of font files (mostly */ - /* for Asian scripts) that require bytecode interpretation to properly */ - /* load glyphs. For all other fonts, this produces unpleasant results, */ - /* thus the unpatented interpreter is never used to load glyphs from */ - /* TrueType fonts unless one of the following two options is used. */ - /* */ - /* - The unpatented interpreter is explicitly activated by the user */ - /* through the FT_PARAM_TAG_UNPATENTED_HINTING parameter tag */ - /* when opening the FT_Face. */ - /* */ - /* - FreeType detects that the FT_Face corresponds to one of the */ - /* `trick' fonts (e.g., `Mingliu') it knows about. The font engine */ - /* contains a hard-coded list of font names and other matching */ - /* parameters (see function `tt_face_init' in file */ - /* `src/truetype/ttobjs.c'). */ - /* */ - /* Here a sample code snippet for using FT_PARAM_TAG_UNPATENTED_HINTING. */ - /* */ - /* { */ - /* FT_Parameter parameter; */ - /* FT_Open_Args open_args; */ - /* */ - /* */ - /* parameter.tag = FT_PARAM_TAG_UNPATENTED_HINTING; */ - /* */ - /* open_args.flags = FT_OPEN_PATHNAME | FT_OPEN_PARAMS; */ - /* open_args.pathname = my_font_pathname; */ - /* open_args.num_params = 1; */ - /* open_args.params = ¶meter; */ - /* */ - /* error = FT_Open_Face( library, &open_args, index, &face ); */ - /* ... */ - /* } */ - /* */ +/*************************************************************************/ +/* */ +/* If you define TT_CONFIG_OPTION_UNPATENTED_HINTING, a special version */ +/* of the TrueType bytecode interpreter is used that doesn't implement */ +/* any of the patented opcodes and algorithms. The patents related to */ +/* TrueType hinting have expired worldwide since May 2010; this option */ +/* is now deprecated. */ +/* */ +/* Note that the TT_CONFIG_OPTION_UNPATENTED_HINTING macro is *ignored* */ +/* if you define TT_CONFIG_OPTION_BYTECODE_INTERPRETER; in other words, */ +/* either define TT_CONFIG_OPTION_BYTECODE_INTERPRETER or */ +/* TT_CONFIG_OPTION_UNPATENTED_HINTING but not both at the same time. */ +/* */ +/* This macro is only useful for a small number of font files (mostly */ +/* for Asian scripts) that require bytecode interpretation to properly */ +/* load glyphs. For all other fonts, this produces unpleasant results, */ +/* thus the unpatented interpreter is never used to load glyphs from */ +/* TrueType fonts unless one of the following two options is used. */ +/* */ +/* - The unpatented interpreter is explicitly activated by the user */ +/* through the FT_PARAM_TAG_UNPATENTED_HINTING parameter tag */ +/* when opening the FT_Face. */ +/* */ +/* - FreeType detects that the FT_Face corresponds to one of the */ +/* `trick' fonts (e.g., `Mingliu') it knows about. The font engine */ +/* contains a hard-coded list of font names and other matching */ +/* parameters (see function `tt_face_init' in file */ +/* `src/truetype/ttobjs.c'). */ +/* */ +/* Here a sample code snippet for using FT_PARAM_TAG_UNPATENTED_HINTING. */ +/* */ +/* { */ +/* FT_Parameter parameter; */ +/* FT_Open_Args open_args; */ +/* */ +/* */ +/* parameter.tag = FT_PARAM_TAG_UNPATENTED_HINTING; */ +/* */ +/* open_args.flags = FT_OPEN_PATHNAME | FT_OPEN_PARAMS; */ +/* open_args.pathname = my_font_pathname; */ +/* open_args.num_params = 1; */ +/* open_args.params = ¶meter; */ +/* */ +/* error = FT_Open_Face( library, &open_args, index, &face ); */ +/* ... */ +/* } */ +/* */ /* #define TT_CONFIG_OPTION_UNPATENTED_HINTING */ - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_INTERPRETER_SWITCH to compile the TrueType */ - /* bytecode interpreter with a huge switch statement, rather than a call */ - /* table. This results in smaller and faster code for a number of */ - /* architectures. */ - /* */ - /* Note however that on some compiler/processor combinations, undefining */ - /* this macro will generate faster, though larger, code. */ - /* */ +/*************************************************************************/ +/* */ +/* Define TT_CONFIG_OPTION_INTERPRETER_SWITCH to compile the TrueType */ +/* bytecode interpreter with a huge switch statement, rather than a call */ +/* table. This results in smaller and faster code for a number of */ +/* architectures. */ +/* */ +/* Note however that on some compiler/processor combinations, undefining */ +/* this macro will generate faster, though larger, code. */ +/* */ #define TT_CONFIG_OPTION_INTERPRETER_SWITCH - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED to compile the */ - /* TrueType glyph loader to use Apple's definition of how to handle */ - /* component offsets in composite glyphs. */ - /* */ - /* Apple and MS disagree on the default behavior of component offsets */ - /* in composites. Apple says that they should be scaled by the scaling */ - /* factors in the transformation matrix (roughly, it's more complex) */ - /* while MS says they should not. OpenType defines two bits in the */ - /* composite flags array which can be used to disambiguate, but old */ - /* fonts will not have them. */ - /* */ - /* http://www.microsoft.com/typography/otspec/glyf.htm */ - /* http://fonts.apple.com/TTRefMan/RM06/Chap6glyf.html */ - /* */ +/*************************************************************************/ +/* */ +/* Define TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED to compile the */ +/* TrueType glyph loader to use Apple's definition of how to handle */ +/* component offsets in composite glyphs. */ +/* */ +/* Apple and MS disagree on the default behavior of component offsets */ +/* in composites. Apple says that they should be scaled by the scaling */ +/* factors in the transformation matrix (roughly, it's more complex) */ +/* while MS says they should not. OpenType defines two bits in the */ +/* composite flags array which can be used to disambiguate, but old */ +/* fonts will not have them. */ +/* */ +/* http://www.microsoft.com/typography/otspec/glyf.htm */ +/* http://fonts.apple.com/TTRefMan/RM06/Chap6glyf.html */ +/* */ #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 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 - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_BDF if you want to include support for */ - /* an embedded `BDF ' table within SFNT-based bitmap formats. */ - /* */ +/*************************************************************************/ +/* */ +/* Define TT_CONFIG_OPTION_BDF if you want to include support for */ +/* an embedded `BDF ' table within SFNT-based bitmap formats. */ +/* */ #define TT_CONFIG_OPTION_BDF - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** T Y P E 1 D R I V E R C O N F I G U R A T I O N ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ +/*************************************************************************/ +/*************************************************************************/ +/**** ****/ +/**** T Y P E 1 D R I V E R C O N F I G U R A T I O N ****/ +/**** ****/ +/*************************************************************************/ +/*************************************************************************/ - /*************************************************************************/ - /* */ - /* T1_MAX_DICT_DEPTH is the maximum depth of nest dictionaries and */ - /* arrays in the Type 1 stream (see t1load.c). A minimum of 4 is */ - /* required. */ - /* */ +/*************************************************************************/ +/* */ +/* T1_MAX_DICT_DEPTH is the maximum depth of nest dictionaries and */ +/* arrays in the Type 1 stream (see t1load.c). A minimum of 4 is */ +/* required. */ +/* */ #define T1_MAX_DICT_DEPTH 5 - /*************************************************************************/ - /* */ - /* T1_MAX_SUBRS_CALLS details the maximum number of nested sub-routine */ - /* calls during glyph loading. */ - /* */ +/*************************************************************************/ +/* */ +/* T1_MAX_SUBRS_CALLS details the maximum number of nested sub-routine */ +/* calls during glyph loading. */ +/* */ #define T1_MAX_SUBRS_CALLS 16 - /*************************************************************************/ - /* */ - /* T1_MAX_CHARSTRING_OPERANDS is the charstring stack's capacity. A */ - /* minimum of 16 is required. */ - /* */ - /* The Chinese font MingTiEG-Medium (CNS 11643 character set) needs 256. */ - /* */ +/*************************************************************************/ +/* */ +/* T1_MAX_CHARSTRING_OPERANDS is the charstring stack's capacity. A */ +/* minimum of 16 is required. */ +/* */ +/* The Chinese font MingTiEG-Medium (CNS 11643 character set) needs 256. */ +/* */ #define T1_MAX_CHARSTRINGS_OPERANDS 256 - /*************************************************************************/ - /* */ - /* Define this configuration macro if you want to prevent the */ - /* compilation of `t1afm', which is in charge of reading Type 1 AFM */ - /* files into an existing face. Note that if set, the T1 driver will be */ - /* unable to produce kerning distances. */ - /* */ +/*************************************************************************/ +/* */ +/* Define this configuration macro if you want to prevent the */ +/* compilation of `t1afm', which is in charge of reading Type 1 AFM */ +/* files into an existing face. Note that if set, the T1 driver will be */ +/* unable to produce kerning distances. */ +/* */ #undef T1_CONFIG_OPTION_NO_AFM - /*************************************************************************/ - /* */ - /* Define this configuration macro if you want to prevent the */ - /* compilation of the Multiple Masters font support in the Type 1 */ - /* driver. */ - /* */ +/*************************************************************************/ +/* */ +/* Define this configuration macro if you want to prevent the */ +/* compilation of the Multiple Masters font support in the Type 1 */ +/* driver. */ +/* */ #undef T1_CONFIG_OPTION_NO_MM_SUPPORT - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** A U T O F I T M O D U L E C O N F I G U R A T I O N ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ +/*************************************************************************/ +/*************************************************************************/ +/**** ****/ +/**** A U T O F I T M O D U L E C O N F I G U R A T I O N ****/ +/**** ****/ +/*************************************************************************/ +/*************************************************************************/ - /*************************************************************************/ - /* */ - /* Compile autofit module with CJK (Chinese, Japanese, Korean) script */ - /* support. */ - /* */ +/*************************************************************************/ +/* */ +/* Compile autofit module with CJK (Chinese, Japanese, Korean) script */ +/* support. */ +/* */ #define AF_CONFIG_OPTION_CJK - /*************************************************************************/ - /* */ - /* Compile autofit module with Indic script support. */ - /* */ +/*************************************************************************/ +/* */ +/* Compile autofit module with Indic script support. */ +/* */ #define AF_CONFIG_OPTION_INDIC - /*************************************************************************/ - /* */ - /* Compile autofit module with warp hinting. The idea of the warping */ - /* code is to slightly scale and shift a glyph within a single dimension */ - /* so that as much of its segments are aligned (more or less) on the */ - /* grid. To find out the optimal scaling and shifting value, various */ - /* parameter combinations are tried and scored. */ - /* */ - /* This experimental option is only active if the render mode is */ - /* FT_RENDER_MODE_LIGHT. */ - /* */ +/*************************************************************************/ +/* */ +/* Compile autofit module with warp hinting. The idea of the warping */ +/* code is to slightly scale and shift a glyph within a single dimension */ +/* so that as much of its segments are aligned (more or less) on the */ +/* grid. To find out the optimal scaling and shifting value, various */ +/* parameter combinations are tried and scored. */ +/* */ +/* This experimental option is only active if the render mode is */ +/* FT_RENDER_MODE_LIGHT. */ +/* */ /* #define AF_CONFIG_OPTION_USE_WARPER */ - /* */ +/* */ - /* - * Define this variable if you want to keep the layout of internal - * structures that was used prior to FreeType 2.2. This also compiles in - * a few obsolete functions to avoid linking problems on typical Unix - * distributions. - * - * For embedded systems or building a new distribution from scratch, it - * is recommended to disable the macro since it reduces the library's code - * size and activates a few memory-saving optimizations as well. - */ +/* + * Define this variable if you want to keep the layout of internal + * structures that was used prior to FreeType 2.2. This also compiles in + * a few obsolete functions to avoid linking problems on typical Unix + * distributions. + * + * For embedded systems or building a new distribution from scratch, it + * is recommended to disable the macro since it reduces the library's code + * size and activates a few memory-saving optimizations as well. + */ /* #define FT_CONFIG_OPTION_OLD_INTERNALS */ - /* - * To detect legacy cache-lookup call from a rogue client (<= 2.1.7), - * we restrict the number of charmaps in a font. The current API of - * FTC_CMapCache_Lookup() takes cmap_index & charcode, but old API - * takes charcode only. To determine the passed value is for cmap_index - * or charcode, the possible cmap_index is restricted not to exceed - * the minimum possible charcode by a rogue client. It is also very - * unlikely that a rogue client is interested in Unicode values 0 to 15. - * - * NOTE: The original threshold was 4 deduced from popular number of - * cmap subtables in UCS-4 TrueType fonts, but now it is not - * irregular for OpenType fonts to have more than 4 subtables, - * because variation selector subtables are available for Apple - * and Microsoft platforms. - */ +/* + * To detect legacy cache-lookup call from a rogue client (<= 2.1.7), + * we restrict the number of charmaps in a font. The current API of + * FTC_CMapCache_Lookup() takes cmap_index & charcode, but old API + * takes charcode only. To determine the passed value is for cmap_index + * or charcode, the possible cmap_index is restricted not to exceed + * the minimum possible charcode by a rogue client. It is also very + * unlikely that a rogue client is interested in Unicode values 0 to 15. + * + * NOTE: The original threshold was 4 deduced from popular number of + * cmap subtables in UCS-4 TrueType fonts, but now it is not + * irregular for OpenType fonts to have more than 4 subtables, + * because variation selector subtables are available for Apple + * and Microsoft platforms. + */ #ifdef FT_CONFIG_OPTION_OLD_INTERNALS #define FT_MAX_CHARMAP_CACHEABLE 15 #endif - /* - * This macro is defined if either unpatented or native TrueType - * hinting is requested by the definitions above. - */ +/* + * This macro is defined if either unpatented or native TrueType + * hinting is requested by the definitions above. + */ #ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER #define TT_USE_BYTECODE_INTERPRETER #undef TT_CONFIG_OPTION_UNPATENTED_HINTING diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/config/ftstdlib.h b/thirdparties/common/include/libfreetype/freetype2/freetype/config/ftstdlib.h index b940efc..55da6be 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/config/ftstdlib.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/config/ftstdlib.h @@ -17,16 +17,16 @@ /***************************************************************************/ - /*************************************************************************/ - /* */ - /* This file is used to group all #includes to the ANSI C library that */ - /* FreeType normally requires. It also defines macros to rename the */ - /* standard functions within the FreeType source code. */ - /* */ - /* Load a file which defines __FTSTDLIB_H__ before this one to override */ - /* it. */ - /* */ - /*************************************************************************/ +/*************************************************************************/ +/* */ +/* This file is used to group all #includes to the ANSI C library that */ +/* FreeType normally requires. It also defines macros to rename the */ +/* standard functions within the FreeType source code. */ +/* */ +/* Load a file which defines __FTSTDLIB_H__ before this one to override */ +/* it. */ +/* */ +/*************************************************************************/ #ifndef __FTSTDLIB_H__ @@ -38,23 +38,23 @@ #define ft_ptrdiff_t ptrdiff_t - /**********************************************************************/ - /* */ - /* integer limits */ - /* */ - /* UINT_MAX and ULONG_MAX are used to automatically compute the size */ - /* of `int' and `long' in bytes at compile-time. So far, this works */ - /* for all platforms the library has been tested on. */ - /* */ - /* Note that on the extremely rare platforms that do not provide */ - /* integer types that are _exactly_ 16 and 32 bits wide (e.g. some */ - /* old Crays where `int' is 36 bits), we do not make any guarantee */ - /* about the correct behaviour of FT2 with all fonts. */ - /* */ - /* In these case, `ftconfig.h' will refuse to compile anyway with a */ - /* message like `couldn't find 32-bit type' or something similar. */ - /* */ - /**********************************************************************/ +/**********************************************************************/ +/* */ +/* integer limits */ +/* */ +/* UINT_MAX and ULONG_MAX are used to automatically compute the size */ +/* of `int' and `long' in bytes at compile-time. So far, this works */ +/* for all platforms the library has been tested on. */ +/* */ +/* Note that on the extremely rare platforms that do not provide */ +/* integer types that are _exactly_ 16 and 32 bits wide (e.g. some */ +/* old Crays where `int' is 36 bits), we do not make any guarantee */ +/* about the correct behaviour of FT2 with all fonts. */ +/* */ +/* In these case, `ftconfig.h' will refuse to compile anyway with a */ +/* message like `couldn't find 32-bit type' or something similar. */ +/* */ +/**********************************************************************/ #include <limits.h> @@ -67,11 +67,11 @@ #define FT_ULONG_MAX ULONG_MAX - /**********************************************************************/ - /* */ - /* character and string processing */ - /* */ - /**********************************************************************/ +/**********************************************************************/ +/* */ +/* character and string processing */ +/* */ +/**********************************************************************/ #include <string.h> @@ -91,11 +91,11 @@ #define ft_strstr strstr - /**********************************************************************/ - /* */ - /* file handling */ - /* */ - /**********************************************************************/ +/**********************************************************************/ +/* */ +/* file handling */ +/* */ +/**********************************************************************/ #include <stdio.h> @@ -109,11 +109,11 @@ #define ft_sprintf sprintf - /**********************************************************************/ - /* */ - /* sorting */ - /* */ - /**********************************************************************/ +/**********************************************************************/ +/* */ +/* sorting */ +/* */ +/**********************************************************************/ #include <stdlib.h> @@ -121,11 +121,11 @@ #define ft_qsort qsort - /**********************************************************************/ - /* */ - /* memory allocation */ - /* */ - /**********************************************************************/ +/**********************************************************************/ +/* */ +/* memory allocation */ +/* */ +/**********************************************************************/ #define ft_scalloc calloc @@ -134,36 +134,36 @@ #define ft_srealloc realloc - /**********************************************************************/ - /* */ - /* miscellaneous */ - /* */ - /**********************************************************************/ +/**********************************************************************/ +/* */ +/* miscellaneous */ +/* */ +/**********************************************************************/ #define ft_atol atol #define ft_labs labs - /**********************************************************************/ - /* */ - /* execution control */ - /* */ - /**********************************************************************/ +/**********************************************************************/ +/* */ +/* execution control */ +/* */ +/**********************************************************************/ #include <setjmp.h> #define ft_jmp_buf jmp_buf /* note: this cannot be a typedef since */ - /* jmp_buf is defined as a macro */ - /* on certain platforms */ +/* jmp_buf is defined as a macro */ +/* on certain platforms */ #define ft_longjmp longjmp #define ft_setjmp( b ) setjmp( *(ft_jmp_buf*) &(b) ) /* same thing here */ - /* the following is only used for debugging purposes, i.e., if */ - /* FT_DEBUG_LEVEL_ERROR or FT_DEBUG_LEVEL_TRACE are defined */ +/* the following is only used for debugging purposes, i.e., if */ +/* FT_DEBUG_LEVEL_ERROR or FT_DEBUG_LEVEL_TRACE are defined */ #include <stdarg.h> diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/freetype.h b/thirdparties/common/include/libfreetype/freetype2/freetype/freetype.h index 57a03a7..c502ec3 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/freetype.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/freetype.h @@ -39,210 +39,209 @@ FT_BEGIN_HEADER - /*************************************************************************/ - /* */ - /* <Section> */ - /* user_allocation */ - /* */ - /* <Title> */ - /* User allocation */ - /* */ - /* <Abstract> */ - /* How client applications should allocate FreeType data structures. */ - /* */ - /* <Description> */ - /* FreeType assumes that structures allocated by the user and passed */ - /* as arguments are zeroed out except for the actual data. In other */ - /* words, it is recommended to use `calloc' (or variants of it) */ - /* instead of `malloc' for allocation. */ - /* */ - /*************************************************************************/ - - - - /*************************************************************************/ - /*************************************************************************/ - /* */ - /* B A S I C T Y P E S */ - /* */ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* base_interface */ - /* */ - /* <Title> */ - /* Base Interface */ - /* */ - /* <Abstract> */ - /* The FreeType~2 base font interface. */ - /* */ - /* <Description> */ - /* This section describes the public high-level API of FreeType~2. */ - /* */ - /* <Order> */ - /* FT_Library */ - /* FT_Face */ - /* FT_Size */ - /* FT_GlyphSlot */ - /* FT_CharMap */ - /* FT_Encoding */ - /* */ - /* FT_FaceRec */ - /* */ - /* FT_FACE_FLAG_SCALABLE */ - /* FT_FACE_FLAG_FIXED_SIZES */ - /* FT_FACE_FLAG_FIXED_WIDTH */ - /* FT_FACE_FLAG_HORIZONTAL */ - /* FT_FACE_FLAG_VERTICAL */ - /* FT_FACE_FLAG_SFNT */ - /* FT_FACE_FLAG_KERNING */ - /* FT_FACE_FLAG_MULTIPLE_MASTERS */ - /* FT_FACE_FLAG_GLYPH_NAMES */ - /* FT_FACE_FLAG_EXTERNAL_STREAM */ - /* FT_FACE_FLAG_FAST_GLYPHS */ - /* FT_FACE_FLAG_HINTER */ - /* */ - /* FT_STYLE_FLAG_BOLD */ - /* FT_STYLE_FLAG_ITALIC */ - /* */ - /* FT_SizeRec */ - /* FT_Size_Metrics */ - /* */ - /* FT_GlyphSlotRec */ - /* FT_Glyph_Metrics */ - /* FT_SubGlyph */ - /* */ - /* FT_Bitmap_Size */ - /* */ - /* FT_Init_FreeType */ - /* FT_Done_FreeType */ - /* */ - /* FT_New_Face */ - /* FT_Done_Face */ - /* FT_New_Memory_Face */ - /* FT_Open_Face */ - /* FT_Open_Args */ - /* FT_Parameter */ - /* FT_Attach_File */ - /* FT_Attach_Stream */ - /* */ - /* FT_Set_Char_Size */ - /* FT_Set_Pixel_Sizes */ - /* FT_Request_Size */ - /* FT_Select_Size */ - /* FT_Size_Request_Type */ - /* FT_Size_Request */ - /* FT_Set_Transform */ - /* FT_Load_Glyph */ - /* FT_Get_Char_Index */ - /* FT_Get_Name_Index */ - /* FT_Load_Char */ - /* */ - /* FT_OPEN_MEMORY */ - /* FT_OPEN_STREAM */ - /* FT_OPEN_PATHNAME */ - /* FT_OPEN_DRIVER */ - /* FT_OPEN_PARAMS */ - /* */ - /* FT_LOAD_DEFAULT */ - /* FT_LOAD_RENDER */ - /* FT_LOAD_MONOCHROME */ - /* FT_LOAD_LINEAR_DESIGN */ - /* FT_LOAD_NO_SCALE */ - /* FT_LOAD_NO_HINTING */ - /* FT_LOAD_NO_BITMAP */ - /* FT_LOAD_CROP_BITMAP */ - /* */ - /* FT_LOAD_VERTICAL_LAYOUT */ - /* FT_LOAD_IGNORE_TRANSFORM */ - /* FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH */ - /* FT_LOAD_FORCE_AUTOHINT */ - /* FT_LOAD_NO_RECURSE */ - /* FT_LOAD_PEDANTIC */ - /* */ - /* FT_LOAD_TARGET_NORMAL */ - /* FT_LOAD_TARGET_LIGHT */ - /* FT_LOAD_TARGET_MONO */ - /* FT_LOAD_TARGET_LCD */ - /* FT_LOAD_TARGET_LCD_V */ - /* */ - /* FT_Render_Glyph */ - /* FT_Render_Mode */ - /* FT_Get_Kerning */ - /* FT_Kerning_Mode */ - /* FT_Get_Track_Kerning */ - /* FT_Get_Glyph_Name */ - /* FT_Get_Postscript_Name */ - /* */ - /* FT_CharMapRec */ - /* FT_Select_Charmap */ - /* FT_Set_Charmap */ - /* FT_Get_Charmap_Index */ - /* */ - /* FT_FSTYPE_INSTALLABLE_EMBEDDING */ - /* FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING */ - /* FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING */ - /* FT_FSTYPE_EDITABLE_EMBEDDING */ - /* FT_FSTYPE_NO_SUBSETTING */ - /* FT_FSTYPE_BITMAP_EMBEDDING_ONLY */ - /* */ - /* FT_Get_FSType_Flags */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Glyph_Metrics */ - /* */ - /* <Description> */ - /* A structure used to model the metrics of a single glyph. The */ - /* values are expressed in 26.6 fractional pixel format; if the flag */ - /* @FT_LOAD_NO_SCALE has been used while loading the glyph, values */ - /* are expressed in font units instead. */ - /* */ - /* <Fields> */ - /* width :: */ - /* The glyph's width. */ - /* */ - /* height :: */ - /* The glyph's height. */ - /* */ - /* horiBearingX :: */ - /* Left side bearing for horizontal layout. */ - /* */ - /* horiBearingY :: */ - /* Top side bearing for horizontal layout. */ - /* */ - /* horiAdvance :: */ - /* Advance width for horizontal layout. */ - /* */ - /* vertBearingX :: */ - /* Left side bearing for vertical layout. */ - /* */ - /* vertBearingY :: */ - /* Top side bearing for vertical layout. Larger positive values */ - /* mean further below the vertical glyph origin. */ - /* */ - /* vertAdvance :: */ - /* Advance height for vertical layout. Positive values mean the */ - /* glyph has a positive advance downward. */ - /* */ - /* <Note> */ - /* If not disabled with @FT_LOAD_NO_HINTING, the values represent */ - /* dimensions of the hinted glyph (in case hinting is applicable). */ - /* */ - /* Stroking a glyph with an outside border does not increase */ - /* `horiAdvance' or `vertAdvance'; you have to manually adjust these */ - /* values to account for the added width and height. */ - /* */ - typedef struct FT_Glyph_Metrics_ - { +/*************************************************************************/ +/* */ +/* <Section> */ +/* user_allocation */ +/* */ +/* <Title> */ +/* User allocation */ +/* */ +/* <Abstract> */ +/* How client applications should allocate FreeType data structures. */ +/* */ +/* <Description> */ +/* FreeType assumes that structures allocated by the user and passed */ +/* as arguments are zeroed out except for the actual data. In other */ +/* words, it is recommended to use `calloc' (or variants of it) */ +/* instead of `malloc' for allocation. */ +/* */ +/*************************************************************************/ + + + +/*************************************************************************/ +/*************************************************************************/ +/* */ +/* B A S I C T Y P E S */ +/* */ +/*************************************************************************/ +/*************************************************************************/ + + +/*************************************************************************/ +/* */ +/* <Section> */ +/* base_interface */ +/* */ +/* <Title> */ +/* Base Interface */ +/* */ +/* <Abstract> */ +/* The FreeType~2 base font interface. */ +/* */ +/* <Description> */ +/* This section describes the public high-level API of FreeType~2. */ +/* */ +/* <Order> */ +/* FT_Library */ +/* FT_Face */ +/* FT_Size */ +/* FT_GlyphSlot */ +/* FT_CharMap */ +/* FT_Encoding */ +/* */ +/* FT_FaceRec */ +/* */ +/* FT_FACE_FLAG_SCALABLE */ +/* FT_FACE_FLAG_FIXED_SIZES */ +/* FT_FACE_FLAG_FIXED_WIDTH */ +/* FT_FACE_FLAG_HORIZONTAL */ +/* FT_FACE_FLAG_VERTICAL */ +/* FT_FACE_FLAG_SFNT */ +/* FT_FACE_FLAG_KERNING */ +/* FT_FACE_FLAG_MULTIPLE_MASTERS */ +/* FT_FACE_FLAG_GLYPH_NAMES */ +/* FT_FACE_FLAG_EXTERNAL_STREAM */ +/* FT_FACE_FLAG_FAST_GLYPHS */ +/* FT_FACE_FLAG_HINTER */ +/* */ +/* FT_STYLE_FLAG_BOLD */ +/* FT_STYLE_FLAG_ITALIC */ +/* */ +/* FT_SizeRec */ +/* FT_Size_Metrics */ +/* */ +/* FT_GlyphSlotRec */ +/* FT_Glyph_Metrics */ +/* FT_SubGlyph */ +/* */ +/* FT_Bitmap_Size */ +/* */ +/* FT_Init_FreeType */ +/* FT_Done_FreeType */ +/* */ +/* FT_New_Face */ +/* FT_Done_Face */ +/* FT_New_Memory_Face */ +/* FT_Open_Face */ +/* FT_Open_Args */ +/* FT_Parameter */ +/* FT_Attach_File */ +/* FT_Attach_Stream */ +/* */ +/* FT_Set_Char_Size */ +/* FT_Set_Pixel_Sizes */ +/* FT_Request_Size */ +/* FT_Select_Size */ +/* FT_Size_Request_Type */ +/* FT_Size_Request */ +/* FT_Set_Transform */ +/* FT_Load_Glyph */ +/* FT_Get_Char_Index */ +/* FT_Get_Name_Index */ +/* FT_Load_Char */ +/* */ +/* FT_OPEN_MEMORY */ +/* FT_OPEN_STREAM */ +/* FT_OPEN_PATHNAME */ +/* FT_OPEN_DRIVER */ +/* FT_OPEN_PARAMS */ +/* */ +/* FT_LOAD_DEFAULT */ +/* FT_LOAD_RENDER */ +/* FT_LOAD_MONOCHROME */ +/* FT_LOAD_LINEAR_DESIGN */ +/* FT_LOAD_NO_SCALE */ +/* FT_LOAD_NO_HINTING */ +/* FT_LOAD_NO_BITMAP */ +/* FT_LOAD_CROP_BITMAP */ +/* */ +/* FT_LOAD_VERTICAL_LAYOUT */ +/* FT_LOAD_IGNORE_TRANSFORM */ +/* FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH */ +/* FT_LOAD_FORCE_AUTOHINT */ +/* FT_LOAD_NO_RECURSE */ +/* FT_LOAD_PEDANTIC */ +/* */ +/* FT_LOAD_TARGET_NORMAL */ +/* FT_LOAD_TARGET_LIGHT */ +/* FT_LOAD_TARGET_MONO */ +/* FT_LOAD_TARGET_LCD */ +/* FT_LOAD_TARGET_LCD_V */ +/* */ +/* FT_Render_Glyph */ +/* FT_Render_Mode */ +/* FT_Get_Kerning */ +/* FT_Kerning_Mode */ +/* FT_Get_Track_Kerning */ +/* FT_Get_Glyph_Name */ +/* FT_Get_Postscript_Name */ +/* */ +/* FT_CharMapRec */ +/* FT_Select_Charmap */ +/* FT_Set_Charmap */ +/* FT_Get_Charmap_Index */ +/* */ +/* FT_FSTYPE_INSTALLABLE_EMBEDDING */ +/* FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING */ +/* FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING */ +/* FT_FSTYPE_EDITABLE_EMBEDDING */ +/* FT_FSTYPE_NO_SUBSETTING */ +/* FT_FSTYPE_BITMAP_EMBEDDING_ONLY */ +/* */ +/* FT_Get_FSType_Flags */ +/* */ +/*************************************************************************/ + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* FT_Glyph_Metrics */ +/* */ +/* <Description> */ +/* A structure used to model the metrics of a single glyph. The */ +/* values are expressed in 26.6 fractional pixel format; if the flag */ +/* @FT_LOAD_NO_SCALE has been used while loading the glyph, values */ +/* are expressed in font units instead. */ +/* */ +/* <Fields> */ +/* width :: */ +/* The glyph's width. */ +/* */ +/* height :: */ +/* The glyph's height. */ +/* */ +/* horiBearingX :: */ +/* Left side bearing for horizontal layout. */ +/* */ +/* horiBearingY :: */ +/* Top side bearing for horizontal layout. */ +/* */ +/* horiAdvance :: */ +/* Advance width for horizontal layout. */ +/* */ +/* vertBearingX :: */ +/* Left side bearing for vertical layout. */ +/* */ +/* vertBearingY :: */ +/* Top side bearing for vertical layout. Larger positive values */ +/* mean further below the vertical glyph origin. */ +/* */ +/* vertAdvance :: */ +/* Advance height for vertical layout. Positive values mean the */ +/* glyph has a positive advance downward. */ +/* */ +/* <Note> */ +/* If not disabled with @FT_LOAD_NO_HINTING, the values represent */ +/* dimensions of the hinted glyph (in case hinting is applicable). */ +/* */ +/* Stroking a glyph with an outside border does not increase */ +/* `horiAdvance' or `vertAdvance'; you have to manually adjust these */ +/* values to account for the added width and height. */ +/* */ +typedef struct FT_Glyph_Metrics_ { FT_Pos width; FT_Pos height; @@ -254,49 +253,48 @@ FT_BEGIN_HEADER FT_Pos vertBearingY; FT_Pos vertAdvance; - } FT_Glyph_Metrics; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Bitmap_Size */ - /* */ - /* <Description> */ - /* This structure models the metrics of a bitmap strike (i.e., a set */ - /* of glyphs for a given point size and resolution) in a bitmap font. */ - /* It is used for the `available_sizes' field of @FT_Face. */ - /* */ - /* <Fields> */ - /* height :: The vertical distance, in pixels, between two */ - /* consecutive baselines. It is always positive. */ - /* */ - /* width :: The average width, in pixels, of all glyphs in the */ - /* strike. */ - /* */ - /* size :: The nominal size of the strike in 26.6 fractional */ - /* points. This field is not very useful. */ - /* */ - /* x_ppem :: The horizontal ppem (nominal width) in 26.6 fractional */ - /* pixels. */ - /* */ - /* y_ppem :: The vertical ppem (nominal height) in 26.6 fractional */ - /* pixels. */ - /* */ - /* <Note> */ - /* Windows FNT: */ - /* The nominal size given in a FNT font is not reliable. Thus when */ - /* the driver finds it incorrect, it sets `size' to some calculated */ - /* values and sets `x_ppem' and `y_ppem' to the pixel width and */ - /* height given in the font, respectively. */ - /* */ - /* TrueType embedded bitmaps: */ - /* `size', `width', and `height' values are not contained in the */ - /* bitmap strike itself. They are computed from the global font */ - /* parameters. */ - /* */ - typedef struct FT_Bitmap_Size_ - { +} FT_Glyph_Metrics; + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* FT_Bitmap_Size */ +/* */ +/* <Description> */ +/* This structure models the metrics of a bitmap strike (i.e., a set */ +/* of glyphs for a given point size and resolution) in a bitmap font. */ +/* It is used for the `available_sizes' field of @FT_Face. */ +/* */ +/* <Fields> */ +/* height :: The vertical distance, in pixels, between two */ +/* consecutive baselines. It is always positive. */ +/* */ +/* width :: The average width, in pixels, of all glyphs in the */ +/* strike. */ +/* */ +/* size :: The nominal size of the strike in 26.6 fractional */ +/* points. This field is not very useful. */ +/* */ +/* x_ppem :: The horizontal ppem (nominal width) in 26.6 fractional */ +/* pixels. */ +/* */ +/* y_ppem :: The vertical ppem (nominal height) in 26.6 fractional */ +/* pixels. */ +/* */ +/* <Note> */ +/* Windows FNT: */ +/* The nominal size given in a FNT font is not reliable. Thus when */ +/* the driver finds it incorrect, it sets `size' to some calculated */ +/* values and sets `x_ppem' and `y_ppem' to the pixel width and */ +/* height given in the font, respectively. */ +/* */ +/* TrueType embedded bitmaps: */ +/* `size', `width', and `height' values are not contained in the */ +/* bitmap strike itself. They are computed from the global font */ +/* parameters. */ +/* */ +typedef struct FT_Bitmap_Size_ { FT_Short height; FT_Short width; @@ -305,207 +303,207 @@ FT_BEGIN_HEADER FT_Pos x_ppem; FT_Pos y_ppem; - } FT_Bitmap_Size; - - - /*************************************************************************/ - /*************************************************************************/ - /* */ - /* O B J E C T C L A S S E S */ - /* */ - /*************************************************************************/ - /*************************************************************************/ - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Library */ - /* */ - /* <Description> */ - /* A handle to a FreeType library instance. Each `library' is */ - /* completely independent from the others; it is the `root' of a set */ - /* of objects like fonts, faces, sizes, etc. */ - /* */ - /* It also embeds a memory manager (see @FT_Memory), as well as a */ - /* scan-line converter object (see @FT_Raster). */ - /* */ - /* For multi-threading applications each thread should have its own */ - /* FT_Library object. */ - /* */ - /* <Note> */ - /* Library objects are normally created by @FT_Init_FreeType, and */ - /* destroyed with @FT_Done_FreeType. */ - /* */ - typedef struct FT_LibraryRec_ *FT_Library; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Module */ - /* */ - /* <Description> */ - /* A handle to a given FreeType module object. Each module can be a */ - /* font driver, a renderer, or anything else that provides services */ - /* to the formers. */ - /* */ - typedef struct FT_ModuleRec_* FT_Module; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Driver */ - /* */ - /* <Description> */ - /* A handle to a given FreeType font driver object. Each font driver */ - /* is a special module capable of creating faces from font files. */ - /* */ - typedef struct FT_DriverRec_* FT_Driver; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Renderer */ - /* */ - /* <Description> */ - /* A handle to a given FreeType renderer. A renderer is a special */ - /* module in charge of converting a glyph image to a bitmap, when */ - /* necessary. Each renderer supports a given glyph image format, and */ - /* one or more target surface depths. */ - /* */ - typedef struct FT_RendererRec_* FT_Renderer; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Face */ - /* */ - /* <Description> */ - /* A handle to a given typographic face object. A face object models */ - /* a given typeface, in a given style. */ - /* */ - /* <Note> */ - /* Each face object also owns a single @FT_GlyphSlot object, as well */ - /* as one or more @FT_Size objects. */ - /* */ - /* Use @FT_New_Face or @FT_Open_Face to create a new face object from */ - /* a given filepathname or a custom input stream. */ - /* */ - /* Use @FT_Done_Face to destroy it (along with its slot and sizes). */ - /* */ - /* <Also> */ - /* See @FT_FaceRec for the publicly accessible fields of a given face */ - /* object. */ - /* */ - typedef struct FT_FaceRec_* FT_Face; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Size */ - /* */ - /* <Description> */ - /* A handle to an object used to model a face scaled to a given */ - /* character size. */ - /* */ - /* <Note> */ - /* Each @FT_Face has an _active_ @FT_Size object that is used by */ - /* functions like @FT_Load_Glyph to determine the scaling */ - /* transformation which is used to load and hint glyphs and metrics. */ - /* */ - /* You can use @FT_Set_Char_Size, @FT_Set_Pixel_Sizes, */ - /* @FT_Request_Size or even @FT_Select_Size to change the content */ - /* (i.e., the scaling values) of the active @FT_Size. */ - /* */ - /* You can use @FT_New_Size to create additional size objects for a */ - /* given @FT_Face, but they won't be used by other functions until */ - /* you activate it through @FT_Activate_Size. Only one size can be */ - /* activated at any given time per face. */ - /* */ - /* <Also> */ - /* See @FT_SizeRec for the publicly accessible fields of a given size */ - /* object. */ - /* */ - typedef struct FT_SizeRec_* FT_Size; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_GlyphSlot */ - /* */ - /* <Description> */ - /* A handle to a given `glyph slot'. A slot is a container where it */ - /* is possible to load any of the glyphs contained in its parent */ - /* face. */ - /* */ - /* In other words, each time you call @FT_Load_Glyph or */ - /* @FT_Load_Char, the slot's content is erased by the new glyph data, */ - /* i.e., the glyph's metrics, its image (bitmap or outline), and */ - /* other control information. */ - /* */ - /* <Also> */ - /* See @FT_GlyphSlotRec for the publicly accessible glyph fields. */ - /* */ - typedef struct FT_GlyphSlotRec_* FT_GlyphSlot; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_CharMap */ - /* */ - /* <Description> */ - /* A handle to a given character map. A charmap is used to translate */ - /* character codes in a given encoding into glyph indexes for its */ - /* parent's face. Some font formats may provide several charmaps per */ - /* font. */ - /* */ - /* Each face object owns zero or more charmaps, but only one of them */ - /* can be `active' and used by @FT_Get_Char_Index or @FT_Load_Char. */ - /* */ - /* The list of available charmaps in a face is available through the */ - /* `face->num_charmaps' and `face->charmaps' fields of @FT_FaceRec. */ - /* */ - /* The currently active charmap is available as `face->charmap'. */ - /* You should call @FT_Set_Charmap to change it. */ - /* */ - /* <Note> */ - /* When a new face is created (either through @FT_New_Face or */ - /* @FT_Open_Face), the library looks for a Unicode charmap within */ - /* the list and automatically activates it. */ - /* */ - /* <Also> */ - /* See @FT_CharMapRec for the publicly accessible fields of a given */ - /* character map. */ - /* */ - typedef struct FT_CharMapRec_* FT_CharMap; - - - /*************************************************************************/ - /* */ - /* <Macro> */ - /* FT_ENC_TAG */ - /* */ - /* <Description> */ - /* This macro converts four-letter tags into an unsigned long. It is */ - /* used to define `encoding' identifiers (see @FT_Encoding). */ - /* */ - /* <Note> */ - /* Since many 16-bit compilers don't like 32-bit enumerations, you */ - /* should redefine this macro in case of problems to something like */ - /* this: */ - /* */ - /* { */ - /* #define FT_ENC_TAG( value, a, b, c, d ) value */ - /* } */ - /* */ - /* to get a simple enumeration without assigning special numbers. */ - /* */ +} FT_Bitmap_Size; + + +/*************************************************************************/ +/*************************************************************************/ +/* */ +/* O B J E C T C L A S S E S */ +/* */ +/*************************************************************************/ +/*************************************************************************/ + +/*************************************************************************/ +/* */ +/* <Type> */ +/* FT_Library */ +/* */ +/* <Description> */ +/* A handle to a FreeType library instance. Each `library' is */ +/* completely independent from the others; it is the `root' of a set */ +/* of objects like fonts, faces, sizes, etc. */ +/* */ +/* It also embeds a memory manager (see @FT_Memory), as well as a */ +/* scan-line converter object (see @FT_Raster). */ +/* */ +/* For multi-threading applications each thread should have its own */ +/* FT_Library object. */ +/* */ +/* <Note> */ +/* Library objects are normally created by @FT_Init_FreeType, and */ +/* destroyed with @FT_Done_FreeType. */ +/* */ +typedef struct FT_LibraryRec_ *FT_Library; + + +/*************************************************************************/ +/* */ +/* <Type> */ +/* FT_Module */ +/* */ +/* <Description> */ +/* A handle to a given FreeType module object. Each module can be a */ +/* font driver, a renderer, or anything else that provides services */ +/* to the formers. */ +/* */ +typedef struct FT_ModuleRec_* FT_Module; + + +/*************************************************************************/ +/* */ +/* <Type> */ +/* FT_Driver */ +/* */ +/* <Description> */ +/* A handle to a given FreeType font driver object. Each font driver */ +/* is a special module capable of creating faces from font files. */ +/* */ +typedef struct FT_DriverRec_* FT_Driver; + + +/*************************************************************************/ +/* */ +/* <Type> */ +/* FT_Renderer */ +/* */ +/* <Description> */ +/* A handle to a given FreeType renderer. A renderer is a special */ +/* module in charge of converting a glyph image to a bitmap, when */ +/* necessary. Each renderer supports a given glyph image format, and */ +/* one or more target surface depths. */ +/* */ +typedef struct FT_RendererRec_* FT_Renderer; + + +/*************************************************************************/ +/* */ +/* <Type> */ +/* FT_Face */ +/* */ +/* <Description> */ +/* A handle to a given typographic face object. A face object models */ +/* a given typeface, in a given style. */ +/* */ +/* <Note> */ +/* Each face object also owns a single @FT_GlyphSlot object, as well */ +/* as one or more @FT_Size objects. */ +/* */ +/* Use @FT_New_Face or @FT_Open_Face to create a new face object from */ +/* a given filepathname or a custom input stream. */ +/* */ +/* Use @FT_Done_Face to destroy it (along with its slot and sizes). */ +/* */ +/* <Also> */ +/* See @FT_FaceRec for the publicly accessible fields of a given face */ +/* object. */ +/* */ +typedef struct FT_FaceRec_* FT_Face; + + +/*************************************************************************/ +/* */ +/* <Type> */ +/* FT_Size */ +/* */ +/* <Description> */ +/* A handle to an object used to model a face scaled to a given */ +/* character size. */ +/* */ +/* <Note> */ +/* Each @FT_Face has an _active_ @FT_Size object that is used by */ +/* functions like @FT_Load_Glyph to determine the scaling */ +/* transformation which is used to load and hint glyphs and metrics. */ +/* */ +/* You can use @FT_Set_Char_Size, @FT_Set_Pixel_Sizes, */ +/* @FT_Request_Size or even @FT_Select_Size to change the content */ +/* (i.e., the scaling values) of the active @FT_Size. */ +/* */ +/* You can use @FT_New_Size to create additional size objects for a */ +/* given @FT_Face, but they won't be used by other functions until */ +/* you activate it through @FT_Activate_Size. Only one size can be */ +/* activated at any given time per face. */ +/* */ +/* <Also> */ +/* See @FT_SizeRec for the publicly accessible fields of a given size */ +/* object. */ +/* */ +typedef struct FT_SizeRec_* FT_Size; + + +/*************************************************************************/ +/* */ +/* <Type> */ +/* FT_GlyphSlot */ +/* */ +/* <Description> */ +/* A handle to a given `glyph slot'. A slot is a container where it */ +/* is possible to load any of the glyphs contained in its parent */ +/* face. */ +/* */ +/* In other words, each time you call @FT_Load_Glyph or */ +/* @FT_Load_Char, the slot's content is erased by the new glyph data, */ +/* i.e., the glyph's metrics, its image (bitmap or outline), and */ +/* other control information. */ +/* */ +/* <Also> */ +/* See @FT_GlyphSlotRec for the publicly accessible glyph fields. */ +/* */ +typedef struct FT_GlyphSlotRec_* FT_GlyphSlot; + + +/*************************************************************************/ +/* */ +/* <Type> */ +/* FT_CharMap */ +/* */ +/* <Description> */ +/* A handle to a given character map. A charmap is used to translate */ +/* character codes in a given encoding into glyph indexes for its */ +/* parent's face. Some font formats may provide several charmaps per */ +/* font. */ +/* */ +/* Each face object owns zero or more charmaps, but only one of them */ +/* can be `active' and used by @FT_Get_Char_Index or @FT_Load_Char. */ +/* */ +/* The list of available charmaps in a face is available through the */ +/* `face->num_charmaps' and `face->charmaps' fields of @FT_FaceRec. */ +/* */ +/* The currently active charmap is available as `face->charmap'. */ +/* You should call @FT_Set_Charmap to change it. */ +/* */ +/* <Note> */ +/* When a new face is created (either through @FT_New_Face or */ +/* @FT_Open_Face), the library looks for a Unicode charmap within */ +/* the list and automatically activates it. */ +/* */ +/* <Also> */ +/* See @FT_CharMapRec for the publicly accessible fields of a given */ +/* character map. */ +/* */ +typedef struct FT_CharMapRec_* FT_CharMap; + + +/*************************************************************************/ +/* */ +/* <Macro> */ +/* FT_ENC_TAG */ +/* */ +/* <Description> */ +/* This macro converts four-letter tags into an unsigned long. It is */ +/* used to define `encoding' identifiers (see @FT_Encoding). */ +/* */ +/* <Note> */ +/* Since many 16-bit compilers don't like 32-bit enumerations, you */ +/* should redefine this macro in case of problems to something like */ +/* this: */ +/* */ +/* { */ +/* #define FT_ENC_TAG( value, a, b, c, d ) value */ +/* } */ +/* */ +/* to get a simple enumeration without assigning special numbers. */ +/* */ #ifndef FT_ENC_TAG #define FT_ENC_TAG( value, a, b, c, d ) \ @@ -517,147 +515,146 @@ FT_BEGIN_HEADER #endif /* FT_ENC_TAG */ - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_Encoding */ - /* */ - /* <Description> */ - /* An enumeration used to specify character sets supported by */ - /* charmaps. Used in the @FT_Select_Charmap API function. */ - /* */ - /* <Note> */ - /* Despite the name, this enumeration lists specific character */ - /* repertories (i.e., charsets), and not text encoding methods (e.g., */ - /* UTF-8, UTF-16, etc.). */ - /* */ - /* Other encodings might be defined in the future. */ - /* */ - /* <Values> */ - /* FT_ENCODING_NONE :: */ - /* The encoding value~0 is reserved. */ - /* */ - /* FT_ENCODING_UNICODE :: */ - /* Corresponds to the Unicode character set. This value covers */ - /* all versions of the Unicode repertoire, including ASCII and */ - /* Latin-1. Most fonts include a Unicode charmap, but not all */ - /* of them. */ - /* */ - /* For example, if you want to access Unicode value U+1F028 (and */ - /* the font contains it), use value 0x1F028 as the input value for */ - /* @FT_Get_Char_Index. */ - /* */ - /* FT_ENCODING_MS_SYMBOL :: */ - /* Corresponds to the Microsoft Symbol encoding, used to encode */ - /* mathematical symbols in the 32..255 character code range. For */ - /* more information, see `http://www.ceviz.net/symbol.htm'. */ - /* */ - /* FT_ENCODING_SJIS :: */ - /* Corresponds to Japanese SJIS encoding. More info at */ - /* at `http://langsupport.japanreference.com/encoding.shtml'. */ - /* See note on multi-byte encodings below. */ - /* */ - /* FT_ENCODING_GB2312 :: */ - /* Corresponds to an encoding system for Simplified Chinese as used */ - /* used in mainland China. */ - /* */ - /* FT_ENCODING_BIG5 :: */ - /* Corresponds to an encoding system for Traditional Chinese as */ - /* used in Taiwan and Hong Kong. */ - /* */ - /* FT_ENCODING_WANSUNG :: */ - /* Corresponds to the Korean encoding system known as Wansung. */ - /* For more information see */ - /* `http://www.microsoft.com/typography/unicode/949.txt'. */ - /* */ - /* FT_ENCODING_JOHAB :: */ - /* The Korean standard character set (KS~C 5601-1992), which */ - /* corresponds to MS Windows code page 1361. This character set */ - /* includes all possible Hangeul character combinations. */ - /* */ - /* FT_ENCODING_ADOBE_LATIN_1 :: */ - /* Corresponds to a Latin-1 encoding as defined in a Type~1 */ - /* PostScript font. It is limited to 256 character codes. */ - /* */ - /* FT_ENCODING_ADOBE_STANDARD :: */ - /* Corresponds to the Adobe Standard encoding, as found in Type~1, */ - /* CFF, and OpenType/CFF fonts. It is limited to 256 character */ - /* codes. */ - /* */ - /* FT_ENCODING_ADOBE_EXPERT :: */ - /* Corresponds to the Adobe Expert encoding, as found in Type~1, */ - /* CFF, and OpenType/CFF fonts. It is limited to 256 character */ - /* codes. */ - /* */ - /* FT_ENCODING_ADOBE_CUSTOM :: */ - /* Corresponds to a custom encoding, as found in Type~1, CFF, and */ - /* OpenType/CFF fonts. It is limited to 256 character codes. */ - /* */ - /* FT_ENCODING_APPLE_ROMAN :: */ - /* Corresponds to the 8-bit Apple roman encoding. Many TrueType */ - /* and OpenType fonts contain a charmap for this encoding, since */ - /* older versions of Mac OS are able to use it. */ - /* */ - /* FT_ENCODING_OLD_LATIN_2 :: */ - /* This value is deprecated and was never used nor reported by */ - /* FreeType. Don't use or test for it. */ - /* */ - /* FT_ENCODING_MS_SJIS :: */ - /* Same as FT_ENCODING_SJIS. Deprecated. */ - /* */ - /* FT_ENCODING_MS_GB2312 :: */ - /* Same as FT_ENCODING_GB2312. Deprecated. */ - /* */ - /* FT_ENCODING_MS_BIG5 :: */ - /* Same as FT_ENCODING_BIG5. Deprecated. */ - /* */ - /* FT_ENCODING_MS_WANSUNG :: */ - /* Same as FT_ENCODING_WANSUNG. Deprecated. */ - /* */ - /* FT_ENCODING_MS_JOHAB :: */ - /* Same as FT_ENCODING_JOHAB. Deprecated. */ - /* */ - /* <Note> */ - /* By default, FreeType automatically synthesizes a Unicode charmap */ - /* for PostScript fonts, using their glyph names dictionaries. */ - /* However, it also reports the encodings defined explicitly in the */ - /* font file, for the cases when they are needed, with the Adobe */ - /* values as well. */ - /* */ - /* FT_ENCODING_NONE is set by the BDF and PCF drivers if the charmap */ - /* is neither Unicode nor ISO-8859-1 (otherwise it is set to */ - /* FT_ENCODING_UNICODE). Use @FT_Get_BDF_Charset_ID to find out */ - /* which encoding is really present. If, for example, the */ - /* `cs_registry' field is `KOI8' and the `cs_encoding' field is `R', */ - /* the font is encoded in KOI8-R. */ - /* */ - /* FT_ENCODING_NONE is always set (with a single exception) by the */ - /* winfonts driver. Use @FT_Get_WinFNT_Header and examine the */ - /* `charset' field of the @FT_WinFNT_HeaderRec structure to find out */ - /* which encoding is really present. For example, */ - /* @FT_WinFNT_ID_CP1251 (204) means Windows code page 1251 (for */ - /* Russian). */ - /* */ - /* FT_ENCODING_NONE is set if `platform_id' is @TT_PLATFORM_MACINTOSH */ - /* and `encoding_id' is not @TT_MAC_ID_ROMAN (otherwise it is set to */ - /* FT_ENCODING_APPLE_ROMAN). */ - /* */ - /* If `platform_id' is @TT_PLATFORM_MACINTOSH, use the function */ - /* @FT_Get_CMap_Language_ID to query the Mac language ID which may */ - /* be needed to be able to distinguish Apple encoding variants. See */ - /* */ - /* http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/README.TXT */ - /* */ - /* to get an idea how to do that. Basically, if the language ID */ - /* is~0, don't use it, otherwise subtract 1 from the language ID. */ - /* Then examine `encoding_id'. If, for example, `encoding_id' is */ - /* @TT_MAC_ID_ROMAN and the language ID (minus~1) is */ - /* `TT_MAC_LANGID_GREEK', it is the Greek encoding, not Roman. */ - /* @TT_MAC_ID_ARABIC with `TT_MAC_LANGID_FARSI' means the Farsi */ - /* variant the Arabic encoding. */ - /* */ - typedef enum FT_Encoding_ - { +/*************************************************************************/ +/* */ +/* <Enum> */ +/* FT_Encoding */ +/* */ +/* <Description> */ +/* An enumeration used to specify character sets supported by */ +/* charmaps. Used in the @FT_Select_Charmap API function. */ +/* */ +/* <Note> */ +/* Despite the name, this enumeration lists specific character */ +/* repertories (i.e., charsets), and not text encoding methods (e.g., */ +/* UTF-8, UTF-16, etc.). */ +/* */ +/* Other encodings might be defined in the future. */ +/* */ +/* <Values> */ +/* FT_ENCODING_NONE :: */ +/* The encoding value~0 is reserved. */ +/* */ +/* FT_ENCODING_UNICODE :: */ +/* Corresponds to the Unicode character set. This value covers */ +/* all versions of the Unicode repertoire, including ASCII and */ +/* Latin-1. Most fonts include a Unicode charmap, but not all */ +/* of them. */ +/* */ +/* For example, if you want to access Unicode value U+1F028 (and */ +/* the font contains it), use value 0x1F028 as the input value for */ +/* @FT_Get_Char_Index. */ +/* */ +/* FT_ENCODING_MS_SYMBOL :: */ +/* Corresponds to the Microsoft Symbol encoding, used to encode */ +/* mathematical symbols in the 32..255 character code range. For */ +/* more information, see `http://www.ceviz.net/symbol.htm'. */ +/* */ +/* FT_ENCODING_SJIS :: */ +/* Corresponds to Japanese SJIS encoding. More info at */ +/* at `http://langsupport.japanreference.com/encoding.shtml'. */ +/* See note on multi-byte encodings below. */ +/* */ +/* FT_ENCODING_GB2312 :: */ +/* Corresponds to an encoding system for Simplified Chinese as used */ +/* used in mainland China. */ +/* */ +/* FT_ENCODING_BIG5 :: */ +/* Corresponds to an encoding system for Traditional Chinese as */ +/* used in Taiwan and Hong Kong. */ +/* */ +/* FT_ENCODING_WANSUNG :: */ +/* Corresponds to the Korean encoding system known as Wansung. */ +/* For more information see */ +/* `http://www.microsoft.com/typography/unicode/949.txt'. */ +/* */ +/* FT_ENCODING_JOHAB :: */ +/* The Korean standard character set (KS~C 5601-1992), which */ +/* corresponds to MS Windows code page 1361. This character set */ +/* includes all possible Hangeul character combinations. */ +/* */ +/* FT_ENCODING_ADOBE_LATIN_1 :: */ +/* Corresponds to a Latin-1 encoding as defined in a Type~1 */ +/* PostScript font. It is limited to 256 character codes. */ +/* */ +/* FT_ENCODING_ADOBE_STANDARD :: */ +/* Corresponds to the Adobe Standard encoding, as found in Type~1, */ +/* CFF, and OpenType/CFF fonts. It is limited to 256 character */ +/* codes. */ +/* */ +/* FT_ENCODING_ADOBE_EXPERT :: */ +/* Corresponds to the Adobe Expert encoding, as found in Type~1, */ +/* CFF, and OpenType/CFF fonts. It is limited to 256 character */ +/* codes. */ +/* */ +/* FT_ENCODING_ADOBE_CUSTOM :: */ +/* Corresponds to a custom encoding, as found in Type~1, CFF, and */ +/* OpenType/CFF fonts. It is limited to 256 character codes. */ +/* */ +/* FT_ENCODING_APPLE_ROMAN :: */ +/* Corresponds to the 8-bit Apple roman encoding. Many TrueType */ +/* and OpenType fonts contain a charmap for this encoding, since */ +/* older versions of Mac OS are able to use it. */ +/* */ +/* FT_ENCODING_OLD_LATIN_2 :: */ +/* This value is deprecated and was never used nor reported by */ +/* FreeType. Don't use or test for it. */ +/* */ +/* FT_ENCODING_MS_SJIS :: */ +/* Same as FT_ENCODING_SJIS. Deprecated. */ +/* */ +/* FT_ENCODING_MS_GB2312 :: */ +/* Same as FT_ENCODING_GB2312. Deprecated. */ +/* */ +/* FT_ENCODING_MS_BIG5 :: */ +/* Same as FT_ENCODING_BIG5. Deprecated. */ +/* */ +/* FT_ENCODING_MS_WANSUNG :: */ +/* Same as FT_ENCODING_WANSUNG. Deprecated. */ +/* */ +/* FT_ENCODING_MS_JOHAB :: */ +/* Same as FT_ENCODING_JOHAB. Deprecated. */ +/* */ +/* <Note> */ +/* By default, FreeType automatically synthesizes a Unicode charmap */ +/* for PostScript fonts, using their glyph names dictionaries. */ +/* However, it also reports the encodings defined explicitly in the */ +/* font file, for the cases when they are needed, with the Adobe */ +/* values as well. */ +/* */ +/* FT_ENCODING_NONE is set by the BDF and PCF drivers if the charmap */ +/* is neither Unicode nor ISO-8859-1 (otherwise it is set to */ +/* FT_ENCODING_UNICODE). Use @FT_Get_BDF_Charset_ID to find out */ +/* which encoding is really present. If, for example, the */ +/* `cs_registry' field is `KOI8' and the `cs_encoding' field is `R', */ +/* the font is encoded in KOI8-R. */ +/* */ +/* FT_ENCODING_NONE is always set (with a single exception) by the */ +/* winfonts driver. Use @FT_Get_WinFNT_Header and examine the */ +/* `charset' field of the @FT_WinFNT_HeaderRec structure to find out */ +/* which encoding is really present. For example, */ +/* @FT_WinFNT_ID_CP1251 (204) means Windows code page 1251 (for */ +/* Russian). */ +/* */ +/* FT_ENCODING_NONE is set if `platform_id' is @TT_PLATFORM_MACINTOSH */ +/* and `encoding_id' is not @TT_MAC_ID_ROMAN (otherwise it is set to */ +/* FT_ENCODING_APPLE_ROMAN). */ +/* */ +/* If `platform_id' is @TT_PLATFORM_MACINTOSH, use the function */ +/* @FT_Get_CMap_Language_ID to query the Mac language ID which may */ +/* be needed to be able to distinguish Apple encoding variants. See */ +/* */ +/* http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/README.TXT */ +/* */ +/* to get an idea how to do that. Basically, if the language ID */ +/* is~0, don't use it, otherwise subtract 1 from the language ID. */ +/* Then examine `encoding_id'. If, for example, `encoding_id' is */ +/* @TT_MAC_ID_ROMAN and the language ID (minus~1) is */ +/* `TT_MAC_LANGID_GREEK', it is the Greek encoding, not Roman. */ +/* @TT_MAC_ID_ARABIC with `TT_MAC_LANGID_FARSI' means the Farsi */ +/* variant the Arabic encoding. */ +/* */ +typedef enum FT_Encoding_ { FT_ENC_TAG( FT_ENCODING_NONE, 0, 0, 0, 0 ), FT_ENC_TAG( FT_ENCODING_MS_SYMBOL, 's', 'y', 'm', 'b' ), @@ -685,18 +682,18 @@ FT_BEGIN_HEADER FT_ENC_TAG( FT_ENCODING_APPLE_ROMAN, 'a', 'r', 'm', 'n' ) - } FT_Encoding; +} FT_Encoding; - /*************************************************************************/ - /* */ - /* <Enum> */ - /* ft_encoding_xxx */ - /* */ - /* <Description> */ - /* These constants are deprecated; use the corresponding @FT_Encoding */ - /* values instead. */ - /* */ +/*************************************************************************/ +/* */ +/* <Enum> */ +/* ft_encoding_xxx */ +/* */ +/* <Description> */ +/* These constants are deprecated; use the corresponding @FT_Encoding */ +/* values instead. */ +/* */ #define ft_encoding_none FT_ENCODING_NONE #define ft_encoding_unicode FT_ENCODING_UNICODE #define ft_encoding_symbol FT_ENCODING_MS_SYMBOL @@ -714,210 +711,208 @@ FT_BEGIN_HEADER #define ft_encoding_apple_roman FT_ENCODING_APPLE_ROMAN - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_CharMapRec */ - /* */ - /* <Description> */ - /* The base charmap structure. */ - /* */ - /* <Fields> */ - /* face :: A handle to the parent face object. */ - /* */ - /* encoding :: An @FT_Encoding tag identifying the charmap. Use */ - /* this with @FT_Select_Charmap. */ - /* */ - /* platform_id :: An ID number describing the platform for the */ - /* following encoding ID. This comes directly from */ - /* the TrueType specification and should be emulated */ - /* for other formats. */ - /* */ - /* encoding_id :: A platform specific encoding number. This also */ - /* comes from the TrueType specification and should be */ - /* emulated similarly. */ - /* */ - typedef struct FT_CharMapRec_ - { +/*************************************************************************/ +/* */ +/* <Struct> */ +/* FT_CharMapRec */ +/* */ +/* <Description> */ +/* The base charmap structure. */ +/* */ +/* <Fields> */ +/* face :: A handle to the parent face object. */ +/* */ +/* encoding :: An @FT_Encoding tag identifying the charmap. Use */ +/* this with @FT_Select_Charmap. */ +/* */ +/* platform_id :: An ID number describing the platform for the */ +/* following encoding ID. This comes directly from */ +/* the TrueType specification and should be emulated */ +/* for other formats. */ +/* */ +/* encoding_id :: A platform specific encoding number. This also */ +/* comes from the TrueType specification and should be */ +/* emulated similarly. */ +/* */ +typedef struct FT_CharMapRec_ { FT_Face face; FT_Encoding encoding; FT_UShort platform_id; FT_UShort encoding_id; - } FT_CharMapRec; - - - /*************************************************************************/ - /*************************************************************************/ - /* */ - /* B A S E O B J E C T C L A S S E S */ - /* */ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Face_Internal */ - /* */ - /* <Description> */ - /* An opaque handle to an `FT_Face_InternalRec' structure, used to */ - /* model private data of a given @FT_Face object. */ - /* */ - /* This structure might change between releases of FreeType~2 and is */ - /* not generally available to client applications. */ - /* */ - typedef struct FT_Face_InternalRec_* FT_Face_Internal; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_FaceRec */ - /* */ - /* <Description> */ - /* FreeType root face class structure. A face object models a */ - /* typeface in a font file. */ - /* */ - /* <Fields> */ - /* num_faces :: The number of faces in the font file. Some */ - /* font formats can have multiple faces in */ - /* a font file. */ - /* */ - /* face_index :: The index of the face in the font file. It */ - /* is set to~0 if there is only one face in */ - /* the font file. */ - /* */ - /* face_flags :: A set of bit flags that give important */ - /* information about the face; see */ - /* @FT_FACE_FLAG_XXX for the details. */ - /* */ - /* style_flags :: A set of bit flags indicating the style of */ - /* the face; see @FT_STYLE_FLAG_XXX for the */ - /* details. */ - /* */ - /* num_glyphs :: The number of glyphs in the face. If the */ - /* face is scalable and has sbits (see */ - /* `num_fixed_sizes'), it is set to the number */ - /* of outline glyphs. */ - /* */ - /* For CID-keyed fonts, this value gives the */ - /* highest CID used in the font. */ - /* */ - /* family_name :: The face's family name. This is an ASCII */ - /* string, usually in English, which describes */ - /* the typeface's family (like `Times New */ - /* Roman', `Bodoni', `Garamond', etc). This */ - /* is a least common denominator used to list */ - /* fonts. Some formats (TrueType & OpenType) */ - /* provide localized and Unicode versions of */ - /* this string. Applications should use the */ - /* format specific interface to access them. */ - /* Can be NULL (e.g., in fonts embedded in a */ - /* PDF file). */ - /* */ - /* style_name :: The face's style name. This is an ASCII */ - /* string, usually in English, which describes */ - /* the typeface's style (like `Italic', */ - /* `Bold', `Condensed', etc). Not all font */ - /* formats provide a style name, so this field */ - /* is optional, and can be set to NULL. As */ - /* for `family_name', some formats provide */ - /* localized and Unicode versions of this */ - /* string. Applications should use the format */ - /* specific interface to access them. */ - /* */ - /* num_fixed_sizes :: The number of bitmap strikes in the face. */ - /* Even if the face is scalable, there might */ - /* still be bitmap strikes, which are called */ - /* `sbits' in that case. */ - /* */ - /* available_sizes :: An array of @FT_Bitmap_Size for all bitmap */ - /* strikes in the face. It is set to NULL if */ - /* there is no bitmap strike. */ - /* */ - /* num_charmaps :: The number of charmaps in the face. */ - /* */ - /* charmaps :: An array of the charmaps of the face. */ - /* */ - /* generic :: A field reserved for client uses. See the */ - /* @FT_Generic type description. */ - /* */ - /* bbox :: The font bounding box. Coordinates are */ - /* expressed in font units (see */ - /* `units_per_EM'). The box is large enough */ - /* to contain any glyph from the font. Thus, */ - /* `bbox.yMax' can be seen as the `maximum */ - /* ascender', and `bbox.yMin' as the `minimum */ - /* descender'. Only relevant for scalable */ - /* formats. */ - /* */ - /* Note that the bounding box might be off by */ - /* (at least) one pixel for hinted fonts. See */ - /* @FT_Size_Metrics for further discussion. */ - /* */ - /* units_per_EM :: The number of font units per EM square for */ - /* this face. This is typically 2048 for */ - /* TrueType fonts, and 1000 for Type~1 fonts. */ - /* Only relevant for scalable formats. */ - /* */ - /* ascender :: The typographic ascender of the face, */ - /* expressed in font units. For font formats */ - /* not having this information, it is set to */ - /* `bbox.yMax'. Only relevant for scalable */ - /* formats. */ - /* */ - /* descender :: The typographic descender of the face, */ - /* expressed in font units. For font formats */ - /* not having this information, it is set to */ - /* `bbox.yMin'. Note that this field is */ - /* usually negative. Only relevant for */ - /* scalable formats. */ - /* */ - /* height :: This value is the vertical distance */ - /* between two consecutive baselines, */ - /* expressed in font units. It is always */ - /* positive. Only relevant for scalable */ - /* formats. */ - /* */ - /* If you want the global glyph height, use */ - /* `ascender - descender'. */ - /* */ - /* max_advance_width :: The maximum advance width, in font units, */ - /* for all glyphs in this face. This can be */ - /* used to make word wrapping computations */ - /* faster. Only relevant for scalable */ - /* formats. */ - /* */ - /* max_advance_height :: The maximum advance height, in font units, */ - /* for all glyphs in this face. This is only */ - /* relevant for vertical layouts, and is set */ - /* to `height' for fonts that do not provide */ - /* vertical metrics. Only relevant for */ - /* scalable formats. */ - /* */ - /* underline_position :: The position, in font units, of the */ - /* underline line for this face. It is the */ - /* center of the underlining stem. Only */ - /* relevant for scalable formats. */ - /* */ - /* underline_thickness :: The thickness, in font units, of the */ - /* underline for this face. Only relevant for */ - /* scalable formats. */ - /* */ - /* glyph :: The face's associated glyph slot(s). */ - /* */ - /* size :: The current active size for this face. */ - /* */ - /* charmap :: The current active charmap for this face. */ - /* */ - /* <Note> */ - /* Fields may be changed after a call to @FT_Attach_File or */ - /* @FT_Attach_Stream. */ - /* */ - typedef struct FT_FaceRec_ - { +} FT_CharMapRec; + + +/*************************************************************************/ +/*************************************************************************/ +/* */ +/* B A S E O B J E C T C L A S S E S */ +/* */ +/*************************************************************************/ +/*************************************************************************/ + + +/*************************************************************************/ +/* */ +/* <Type> */ +/* FT_Face_Internal */ +/* */ +/* <Description> */ +/* An opaque handle to an `FT_Face_InternalRec' structure, used to */ +/* model private data of a given @FT_Face object. */ +/* */ +/* This structure might change between releases of FreeType~2 and is */ +/* not generally available to client applications. */ +/* */ +typedef struct FT_Face_InternalRec_* FT_Face_Internal; + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* FT_FaceRec */ +/* */ +/* <Description> */ +/* FreeType root face class structure. A face object models a */ +/* typeface in a font file. */ +/* */ +/* <Fields> */ +/* num_faces :: The number of faces in the font file. Some */ +/* font formats can have multiple faces in */ +/* a font file. */ +/* */ +/* face_index :: The index of the face in the font file. It */ +/* is set to~0 if there is only one face in */ +/* the font file. */ +/* */ +/* face_flags :: A set of bit flags that give important */ +/* information about the face; see */ +/* @FT_FACE_FLAG_XXX for the details. */ +/* */ +/* style_flags :: A set of bit flags indicating the style of */ +/* the face; see @FT_STYLE_FLAG_XXX for the */ +/* details. */ +/* */ +/* num_glyphs :: The number of glyphs in the face. If the */ +/* face is scalable and has sbits (see */ +/* `num_fixed_sizes'), it is set to the number */ +/* of outline glyphs. */ +/* */ +/* For CID-keyed fonts, this value gives the */ +/* highest CID used in the font. */ +/* */ +/* family_name :: The face's family name. This is an ASCII */ +/* string, usually in English, which describes */ +/* the typeface's family (like `Times New */ +/* Roman', `Bodoni', `Garamond', etc). This */ +/* is a least common denominator used to list */ +/* fonts. Some formats (TrueType & OpenType) */ +/* provide localized and Unicode versions of */ +/* this string. Applications should use the */ +/* format specific interface to access them. */ +/* Can be NULL (e.g., in fonts embedded in a */ +/* PDF file). */ +/* */ +/* style_name :: The face's style name. This is an ASCII */ +/* string, usually in English, which describes */ +/* the typeface's style (like `Italic', */ +/* `Bold', `Condensed', etc). Not all font */ +/* formats provide a style name, so this field */ +/* is optional, and can be set to NULL. As */ +/* for `family_name', some formats provide */ +/* localized and Unicode versions of this */ +/* string. Applications should use the format */ +/* specific interface to access them. */ +/* */ +/* num_fixed_sizes :: The number of bitmap strikes in the face. */ +/* Even if the face is scalable, there might */ +/* still be bitmap strikes, which are called */ +/* `sbits' in that case. */ +/* */ +/* available_sizes :: An array of @FT_Bitmap_Size for all bitmap */ +/* strikes in the face. It is set to NULL if */ +/* there is no bitmap strike. */ +/* */ +/* num_charmaps :: The number of charmaps in the face. */ +/* */ +/* charmaps :: An array of the charmaps of the face. */ +/* */ +/* generic :: A field reserved for client uses. See the */ +/* @FT_Generic type description. */ +/* */ +/* bbox :: The font bounding box. Coordinates are */ +/* expressed in font units (see */ +/* `units_per_EM'). The box is large enough */ +/* to contain any glyph from the font. Thus, */ +/* `bbox.yMax' can be seen as the `maximum */ +/* ascender', and `bbox.yMin' as the `minimum */ +/* descender'. Only relevant for scalable */ +/* formats. */ +/* */ +/* Note that the bounding box might be off by */ +/* (at least) one pixel for hinted fonts. See */ +/* @FT_Size_Metrics for further discussion. */ +/* */ +/* units_per_EM :: The number of font units per EM square for */ +/* this face. This is typically 2048 for */ +/* TrueType fonts, and 1000 for Type~1 fonts. */ +/* Only relevant for scalable formats. */ +/* */ +/* ascender :: The typographic ascender of the face, */ +/* expressed in font units. For font formats */ +/* not having this information, it is set to */ +/* `bbox.yMax'. Only relevant for scalable */ +/* formats. */ +/* */ +/* descender :: The typographic descender of the face, */ +/* expressed in font units. For font formats */ +/* not having this information, it is set to */ +/* `bbox.yMin'. Note that this field is */ +/* usually negative. Only relevant for */ +/* scalable formats. */ +/* */ +/* height :: This value is the vertical distance */ +/* between two consecutive baselines, */ +/* expressed in font units. It is always */ +/* positive. Only relevant for scalable */ +/* formats. */ +/* */ +/* If you want the global glyph height, use */ +/* `ascender - descender'. */ +/* */ +/* max_advance_width :: The maximum advance width, in font units, */ +/* for all glyphs in this face. This can be */ +/* used to make word wrapping computations */ +/* faster. Only relevant for scalable */ +/* formats. */ +/* */ +/* max_advance_height :: The maximum advance height, in font units, */ +/* for all glyphs in this face. This is only */ +/* relevant for vertical layouts, and is set */ +/* to `height' for fonts that do not provide */ +/* vertical metrics. Only relevant for */ +/* scalable formats. */ +/* */ +/* underline_position :: The position, in font units, of the */ +/* underline line for this face. It is the */ +/* center of the underlining stem. Only */ +/* relevant for scalable formats. */ +/* */ +/* underline_thickness :: The thickness, in font units, of the */ +/* underline for this face. Only relevant for */ +/* scalable formats. */ +/* */ +/* glyph :: The face's associated glyph slot(s). */ +/* */ +/* size :: The current active size for this face. */ +/* */ +/* charmap :: The current active charmap for this face. */ +/* */ +/* <Note> */ +/* Fields may be changed after a call to @FT_Attach_File or */ +/* @FT_Attach_Stream. */ +/* */ +typedef struct FT_FaceRec_ { FT_Long num_faces; FT_Long face_index; @@ -972,107 +967,107 @@ FT_BEGIN_HEADER /*@private end */ - } FT_FaceRec; - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_FACE_FLAG_XXX */ - /* */ - /* <Description> */ - /* A list of bit flags used in the `face_flags' field of the */ - /* @FT_FaceRec structure. They inform client applications of */ - /* properties of the corresponding face. */ - /* */ - /* <Values> */ - /* FT_FACE_FLAG_SCALABLE :: */ - /* Indicates that the face contains outline glyphs. This doesn't */ - /* prevent bitmap strikes, i.e., a face can have both this and */ - /* and @FT_FACE_FLAG_FIXED_SIZES set. */ - /* */ - /* FT_FACE_FLAG_FIXED_SIZES :: */ - /* Indicates that the face contains bitmap strikes. See also the */ - /* `num_fixed_sizes' and `available_sizes' fields of @FT_FaceRec. */ - /* */ - /* FT_FACE_FLAG_FIXED_WIDTH :: */ - /* Indicates that the face contains fixed-width characters (like */ - /* Courier, Lucido, MonoType, etc.). */ - /* */ - /* FT_FACE_FLAG_SFNT :: */ - /* Indicates that the face uses the `sfnt' storage scheme. For */ - /* now, this means TrueType and OpenType. */ - /* */ - /* FT_FACE_FLAG_HORIZONTAL :: */ - /* Indicates that the face contains horizontal glyph metrics. This */ - /* should be set for all common formats. */ - /* */ - /* FT_FACE_FLAG_VERTICAL :: */ - /* Indicates that the face contains vertical glyph metrics. This */ - /* is only available in some formats, not all of them. */ - /* */ - /* FT_FACE_FLAG_KERNING :: */ - /* Indicates that the face contains kerning information. If set, */ - /* the kerning distance can be retrieved through the function */ - /* @FT_Get_Kerning. Otherwise the function always return the */ - /* vector (0,0). Note that FreeType doesn't handle kerning data */ - /* from the `GPOS' table (as present in some OpenType fonts). */ - /* */ - /* FT_FACE_FLAG_FAST_GLYPHS :: */ - /* THIS FLAG IS DEPRECATED. DO NOT USE OR TEST IT. */ - /* */ - /* FT_FACE_FLAG_MULTIPLE_MASTERS :: */ - /* Indicates that the font contains multiple masters and is capable */ - /* of interpolating between them. See the multiple-masters */ - /* specific API for details. */ - /* */ - /* FT_FACE_FLAG_GLYPH_NAMES :: */ - /* Indicates that the font contains glyph names that can be */ - /* retrieved through @FT_Get_Glyph_Name. Note that some TrueType */ - /* fonts contain broken glyph name tables. Use the function */ - /* @FT_Has_PS_Glyph_Names when needed. */ - /* */ - /* FT_FACE_FLAG_EXTERNAL_STREAM :: */ - /* Used internally by FreeType to indicate that a face's stream was */ - /* provided by the client application and should not be destroyed */ - /* when @FT_Done_Face is called. Don't read or test this flag. */ - /* */ - /* FT_FACE_FLAG_HINTER :: */ - /* Set if the font driver has a hinting machine of its own. For */ - /* example, with TrueType fonts, it makes sense to use data from */ - /* the SFNT `gasp' table only if the native TrueType hinting engine */ - /* (with the bytecode interpreter) is available and active. */ - /* */ - /* FT_FACE_FLAG_CID_KEYED :: */ - /* Set if the font is CID-keyed. In that case, the font is not */ - /* accessed by glyph indices but by CID values. For subsetted */ - /* CID-keyed fonts this has the consequence that not all index */ - /* values are a valid argument to FT_Load_Glyph. Only the CID */ - /* values for which corresponding glyphs in the subsetted font */ - /* exist make FT_Load_Glyph return successfully; in all other cases */ - /* you get an `FT_Err_Invalid_Argument' error. */ - /* */ - /* Note that CID-keyed fonts which are in an SFNT wrapper don't */ - /* have this flag set since the glyphs are accessed in the normal */ - /* way (using contiguous indices); the `CID-ness' isn't visible to */ - /* the application. */ - /* */ - /* FT_FACE_FLAG_TRICKY :: */ - /* Set if the font is `tricky', this is, it always needs the */ - /* font format's native hinting engine to get a reasonable result. */ - /* A typical example is the Chinese font `mingli.ttf' which uses */ - /* TrueType bytecode instructions to move and scale all of its */ - /* subglyphs. */ - /* */ - /* It is not possible to autohint such fonts using */ - /* @FT_LOAD_FORCE_AUTOHINT; it will also ignore */ - /* @FT_LOAD_NO_HINTING. You have to set both @FT_LOAD_NO_HINTING */ - /* and @FT_LOAD_NO_AUTOHINT to really disable hinting; however, you */ - /* probably never want this except for demonstration purposes. */ - /* */ - /* Currently, there are about a dozen TrueType fonts in the list of */ - /* tricky fonts; they are hard-coded in file `ttobjs.c'. */ - /* */ +} FT_FaceRec; + + +/*************************************************************************/ +/* */ +/* <Enum> */ +/* FT_FACE_FLAG_XXX */ +/* */ +/* <Description> */ +/* A list of bit flags used in the `face_flags' field of the */ +/* @FT_FaceRec structure. They inform client applications of */ +/* properties of the corresponding face. */ +/* */ +/* <Values> */ +/* FT_FACE_FLAG_SCALABLE :: */ +/* Indicates that the face contains outline glyphs. This doesn't */ +/* prevent bitmap strikes, i.e., a face can have both this and */ +/* and @FT_FACE_FLAG_FIXED_SIZES set. */ +/* */ +/* FT_FACE_FLAG_FIXED_SIZES :: */ +/* Indicates that the face contains bitmap strikes. See also the */ +/* `num_fixed_sizes' and `available_sizes' fields of @FT_FaceRec. */ +/* */ +/* FT_FACE_FLAG_FIXED_WIDTH :: */ +/* Indicates that the face contains fixed-width characters (like */ +/* Courier, Lucido, MonoType, etc.). */ +/* */ +/* FT_FACE_FLAG_SFNT :: */ +/* Indicates that the face uses the `sfnt' storage scheme. For */ +/* now, this means TrueType and OpenType. */ +/* */ +/* FT_FACE_FLAG_HORIZONTAL :: */ +/* Indicates that the face contains horizontal glyph metrics. This */ +/* should be set for all common formats. */ +/* */ +/* FT_FACE_FLAG_VERTICAL :: */ +/* Indicates that the face contains vertical glyph metrics. This */ +/* is only available in some formats, not all of them. */ +/* */ +/* FT_FACE_FLAG_KERNING :: */ +/* Indicates that the face contains kerning information. If set, */ +/* the kerning distance can be retrieved through the function */ +/* @FT_Get_Kerning. Otherwise the function always return the */ +/* vector (0,0). Note that FreeType doesn't handle kerning data */ +/* from the `GPOS' table (as present in some OpenType fonts). */ +/* */ +/* FT_FACE_FLAG_FAST_GLYPHS :: */ +/* THIS FLAG IS DEPRECATED. DO NOT USE OR TEST IT. */ +/* */ +/* FT_FACE_FLAG_MULTIPLE_MASTERS :: */ +/* Indicates that the font contains multiple masters and is capable */ +/* of interpolating between them. See the multiple-masters */ +/* specific API for details. */ +/* */ +/* FT_FACE_FLAG_GLYPH_NAMES :: */ +/* Indicates that the font contains glyph names that can be */ +/* retrieved through @FT_Get_Glyph_Name. Note that some TrueType */ +/* fonts contain broken glyph name tables. Use the function */ +/* @FT_Has_PS_Glyph_Names when needed. */ +/* */ +/* FT_FACE_FLAG_EXTERNAL_STREAM :: */ +/* Used internally by FreeType to indicate that a face's stream was */ +/* provided by the client application and should not be destroyed */ +/* when @FT_Done_Face is called. Don't read or test this flag. */ +/* */ +/* FT_FACE_FLAG_HINTER :: */ +/* Set if the font driver has a hinting machine of its own. For */ +/* example, with TrueType fonts, it makes sense to use data from */ +/* the SFNT `gasp' table only if the native TrueType hinting engine */ +/* (with the bytecode interpreter) is available and active. */ +/* */ +/* FT_FACE_FLAG_CID_KEYED :: */ +/* Set if the font is CID-keyed. In that case, the font is not */ +/* accessed by glyph indices but by CID values. For subsetted */ +/* CID-keyed fonts this has the consequence that not all index */ +/* values are a valid argument to FT_Load_Glyph. Only the CID */ +/* values for which corresponding glyphs in the subsetted font */ +/* exist make FT_Load_Glyph return successfully; in all other cases */ +/* you get an `FT_Err_Invalid_Argument' error. */ +/* */ +/* Note that CID-keyed fonts which are in an SFNT wrapper don't */ +/* have this flag set since the glyphs are accessed in the normal */ +/* way (using contiguous indices); the `CID-ness' isn't visible to */ +/* the application. */ +/* */ +/* FT_FACE_FLAG_TRICKY :: */ +/* Set if the font is `tricky', this is, it always needs the */ +/* font format's native hinting engine to get a reasonable result. */ +/* A typical example is the Chinese font `mingli.ttf' which uses */ +/* TrueType bytecode instructions to move and scale all of its */ +/* subglyphs. */ +/* */ +/* It is not possible to autohint such fonts using */ +/* @FT_LOAD_FORCE_AUTOHINT; it will also ignore */ +/* @FT_LOAD_NO_HINTING. You have to set both @FT_LOAD_NO_HINTING */ +/* and @FT_LOAD_NO_AUTOHINT to really disable hinting; however, you */ +/* probably never want this except for demonstration purposes. */ +/* */ +/* Currently, there are about a dozen TrueType fonts in the list of */ +/* tricky fonts; they are hard-coded in file `ttobjs.c'. */ +/* */ #define FT_FACE_FLAG_SCALABLE ( 1L << 0 ) #define FT_FACE_FLAG_FIXED_SIZES ( 1L << 1 ) #define FT_FACE_FLAG_FIXED_WIDTH ( 1L << 2 ) @@ -1089,283 +1084,282 @@ FT_BEGIN_HEADER #define FT_FACE_FLAG_TRICKY ( 1L << 13 ) - /************************************************************************* - * - * @macro: - * FT_HAS_HORIZONTAL( face ) - * - * @description: - * A macro that returns true whenever a face object contains - * horizontal metrics (this is true for all font formats though). - * - * @also: - * @FT_HAS_VERTICAL can be used to check for vertical metrics. - * - */ +/************************************************************************* + * + * @macro: + * FT_HAS_HORIZONTAL( face ) + * + * @description: + * A macro that returns true whenever a face object contains + * horizontal metrics (this is true for all font formats though). + * + * @also: + * @FT_HAS_VERTICAL can be used to check for vertical metrics. + * + */ #define FT_HAS_HORIZONTAL( face ) \ ( face->face_flags & FT_FACE_FLAG_HORIZONTAL ) - /************************************************************************* - * - * @macro: - * FT_HAS_VERTICAL( face ) - * - * @description: - * A macro that returns true whenever a face object contains real - * vertical metrics (and not only synthesized ones). - * - */ +/************************************************************************* + * + * @macro: + * FT_HAS_VERTICAL( face ) + * + * @description: + * A macro that returns true whenever a face object contains real + * vertical metrics (and not only synthesized ones). + * + */ #define FT_HAS_VERTICAL( face ) \ ( face->face_flags & FT_FACE_FLAG_VERTICAL ) - /************************************************************************* - * - * @macro: - * FT_HAS_KERNING( face ) - * - * @description: - * A macro that returns true whenever a face object contains kerning - * data that can be accessed with @FT_Get_Kerning. - * - */ +/************************************************************************* + * + * @macro: + * FT_HAS_KERNING( face ) + * + * @description: + * A macro that returns true whenever a face object contains kerning + * data that can be accessed with @FT_Get_Kerning. + * + */ #define FT_HAS_KERNING( face ) \ ( face->face_flags & FT_FACE_FLAG_KERNING ) - /************************************************************************* - * - * @macro: - * FT_IS_SCALABLE( face ) - * - * @description: - * A macro that returns true whenever a face object contains a scalable - * font face (true for TrueType, Type~1, Type~42, CID, OpenType/CFF, - * and PFR font formats. - * - */ +/************************************************************************* + * + * @macro: + * FT_IS_SCALABLE( face ) + * + * @description: + * A macro that returns true whenever a face object contains a scalable + * font face (true for TrueType, Type~1, Type~42, CID, OpenType/CFF, + * and PFR font formats. + * + */ #define FT_IS_SCALABLE( face ) \ ( face->face_flags & FT_FACE_FLAG_SCALABLE ) - /************************************************************************* - * - * @macro: - * FT_IS_SFNT( face ) - * - * @description: - * A macro that returns true whenever a face object contains a font - * whose format is based on the SFNT storage scheme. This usually - * means: TrueType fonts, OpenType fonts, as well as SFNT-based embedded - * bitmap fonts. - * - * If this macro is true, all functions defined in @FT_SFNT_NAMES_H and - * @FT_TRUETYPE_TABLES_H are available. - * - */ +/************************************************************************* + * + * @macro: + * FT_IS_SFNT( face ) + * + * @description: + * A macro that returns true whenever a face object contains a font + * whose format is based on the SFNT storage scheme. This usually + * means: TrueType fonts, OpenType fonts, as well as SFNT-based embedded + * bitmap fonts. + * + * If this macro is true, all functions defined in @FT_SFNT_NAMES_H and + * @FT_TRUETYPE_TABLES_H are available. + * + */ #define FT_IS_SFNT( face ) \ ( face->face_flags & FT_FACE_FLAG_SFNT ) - /************************************************************************* - * - * @macro: - * FT_IS_FIXED_WIDTH( face ) - * - * @description: - * A macro that returns true whenever a face object contains a font face - * that contains fixed-width (or `monospace', `fixed-pitch', etc.) - * glyphs. - * - */ +/************************************************************************* + * + * @macro: + * FT_IS_FIXED_WIDTH( face ) + * + * @description: + * A macro that returns true whenever a face object contains a font face + * that contains fixed-width (or `monospace', `fixed-pitch', etc.) + * glyphs. + * + */ #define FT_IS_FIXED_WIDTH( face ) \ ( face->face_flags & FT_FACE_FLAG_FIXED_WIDTH ) - /************************************************************************* - * - * @macro: - * FT_HAS_FIXED_SIZES( face ) - * - * @description: - * A macro that returns true whenever a face object contains some - * embedded bitmaps. See the `available_sizes' field of the - * @FT_FaceRec structure. - * - */ +/************************************************************************* + * + * @macro: + * FT_HAS_FIXED_SIZES( face ) + * + * @description: + * A macro that returns true whenever a face object contains some + * embedded bitmaps. See the `available_sizes' field of the + * @FT_FaceRec structure. + * + */ #define FT_HAS_FIXED_SIZES( face ) \ ( face->face_flags & FT_FACE_FLAG_FIXED_SIZES ) - /************************************************************************* - * - * @macro: - * FT_HAS_FAST_GLYPHS( face ) - * - * @description: - * Deprecated. - * - */ +/************************************************************************* + * + * @macro: + * FT_HAS_FAST_GLYPHS( face ) + * + * @description: + * Deprecated. + * + */ #define FT_HAS_FAST_GLYPHS( face ) 0 - /************************************************************************* - * - * @macro: - * FT_HAS_GLYPH_NAMES( face ) - * - * @description: - * A macro that returns true whenever a face object contains some glyph - * names that can be accessed through @FT_Get_Glyph_Name. - * - */ +/************************************************************************* + * + * @macro: + * FT_HAS_GLYPH_NAMES( face ) + * + * @description: + * A macro that returns true whenever a face object contains some glyph + * names that can be accessed through @FT_Get_Glyph_Name. + * + */ #define FT_HAS_GLYPH_NAMES( face ) \ ( face->face_flags & FT_FACE_FLAG_GLYPH_NAMES ) - /************************************************************************* - * - * @macro: - * FT_HAS_MULTIPLE_MASTERS( face ) - * - * @description: - * A macro that returns true whenever a face object contains some - * multiple masters. The functions provided by @FT_MULTIPLE_MASTERS_H - * are then available to choose the exact design you want. - * - */ +/************************************************************************* + * + * @macro: + * FT_HAS_MULTIPLE_MASTERS( face ) + * + * @description: + * A macro that returns true whenever a face object contains some + * multiple masters. The functions provided by @FT_MULTIPLE_MASTERS_H + * are then available to choose the exact design you want. + * + */ #define FT_HAS_MULTIPLE_MASTERS( face ) \ ( face->face_flags & FT_FACE_FLAG_MULTIPLE_MASTERS ) - /************************************************************************* - * - * @macro: - * FT_IS_CID_KEYED( face ) - * - * @description: - * A macro that returns true whenever a face object contains a CID-keyed - * font. See the discussion of @FT_FACE_FLAG_CID_KEYED for more - * details. - * - * If this macro is true, all functions defined in @FT_CID_H are - * available. - * - */ +/************************************************************************* + * + * @macro: + * FT_IS_CID_KEYED( face ) + * + * @description: + * A macro that returns true whenever a face object contains a CID-keyed + * font. See the discussion of @FT_FACE_FLAG_CID_KEYED for more + * details. + * + * If this macro is true, all functions defined in @FT_CID_H are + * available. + * + */ #define FT_IS_CID_KEYED( face ) \ ( face->face_flags & FT_FACE_FLAG_CID_KEYED ) - /************************************************************************* - * - * @macro: - * FT_IS_TRICKY( face ) - * - * @description: - * A macro that returns true whenever a face represents a `tricky' font. - * See the discussion of @FT_FACE_FLAG_TRICKY for more details. - * - */ +/************************************************************************* + * + * @macro: + * FT_IS_TRICKY( face ) + * + * @description: + * A macro that returns true whenever a face represents a `tricky' font. + * See the discussion of @FT_FACE_FLAG_TRICKY for more details. + * + */ #define FT_IS_TRICKY( face ) \ ( face->face_flags & FT_FACE_FLAG_TRICKY ) - /*************************************************************************/ - /* */ - /* <Const> */ - /* FT_STYLE_FLAG_XXX */ - /* */ - /* <Description> */ - /* A list of bit-flags used to indicate the style of a given face. */ - /* These are used in the `style_flags' field of @FT_FaceRec. */ - /* */ - /* <Values> */ - /* FT_STYLE_FLAG_ITALIC :: */ - /* Indicates that a given face style is italic or oblique. */ - /* */ - /* FT_STYLE_FLAG_BOLD :: */ - /* Indicates that a given face is bold. */ - /* */ - /* <Note> */ - /* The style information as provided by FreeType is very basic. More */ - /* details are beyond the scope and should be done on a higher level */ - /* (for example, by analyzing various fields of the `OS/2' table in */ - /* SFNT based fonts). */ - /* */ +/*************************************************************************/ +/* */ +/* <Const> */ +/* FT_STYLE_FLAG_XXX */ +/* */ +/* <Description> */ +/* A list of bit-flags used to indicate the style of a given face. */ +/* These are used in the `style_flags' field of @FT_FaceRec. */ +/* */ +/* <Values> */ +/* FT_STYLE_FLAG_ITALIC :: */ +/* Indicates that a given face style is italic or oblique. */ +/* */ +/* FT_STYLE_FLAG_BOLD :: */ +/* Indicates that a given face is bold. */ +/* */ +/* <Note> */ +/* The style information as provided by FreeType is very basic. More */ +/* details are beyond the scope and should be done on a higher level */ +/* (for example, by analyzing various fields of the `OS/2' table in */ +/* SFNT based fonts). */ +/* */ #define FT_STYLE_FLAG_ITALIC ( 1 << 0 ) #define FT_STYLE_FLAG_BOLD ( 1 << 1 ) - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Size_Internal */ - /* */ - /* <Description> */ - /* An opaque handle to an `FT_Size_InternalRec' structure, used to */ - /* model private data of a given @FT_Size object. */ - /* */ - typedef struct FT_Size_InternalRec_* FT_Size_Internal; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Size_Metrics */ - /* */ - /* <Description> */ - /* The size metrics structure gives the metrics of a size object. */ - /* */ - /* <Fields> */ - /* x_ppem :: The width of the scaled EM square in pixels, hence */ - /* the term `ppem' (pixels per EM). It is also */ - /* referred to as `nominal width'. */ - /* */ - /* y_ppem :: The height of the scaled EM square in pixels, */ - /* hence the term `ppem' (pixels per EM). It is also */ - /* referred to as `nominal height'. */ - /* */ - /* x_scale :: A 16.16 fractional scaling value used to convert */ - /* horizontal metrics from font units to 26.6 */ - /* fractional pixels. Only relevant for scalable */ - /* font formats. */ - /* */ - /* y_scale :: A 16.16 fractional scaling value used to convert */ - /* vertical metrics from font units to 26.6 */ - /* fractional pixels. Only relevant for scalable */ - /* font formats. */ - /* */ - /* ascender :: The ascender in 26.6 fractional pixels. See */ - /* @FT_FaceRec for the details. */ - /* */ - /* descender :: The descender in 26.6 fractional pixels. See */ - /* @FT_FaceRec for the details. */ - /* */ - /* height :: The height in 26.6 fractional pixels. See */ - /* @FT_FaceRec for the details. */ - /* */ - /* max_advance :: The maximum advance width in 26.6 fractional */ - /* pixels. See @FT_FaceRec for the details. */ - /* */ - /* <Note> */ - /* The scaling values, if relevant, are determined first during a */ - /* size changing operation. The remaining fields are then set by the */ - /* driver. For scalable formats, they are usually set to scaled */ - /* values of the corresponding fields in @FT_FaceRec. */ - /* */ - /* Note that due to glyph hinting, these values might not be exact */ - /* for certain fonts. Thus they must be treated as unreliable */ - /* with an error margin of at least one pixel! */ - /* */ - /* Indeed, the only way to get the exact metrics is to render _all_ */ - /* glyphs. As this would be a definite performance hit, it is up to */ - /* client applications to perform such computations. */ - /* */ - /* The FT_Size_Metrics structure is valid for bitmap fonts also. */ - /* */ - typedef struct FT_Size_Metrics_ - { +/*************************************************************************/ +/* */ +/* <Type> */ +/* FT_Size_Internal */ +/* */ +/* <Description> */ +/* An opaque handle to an `FT_Size_InternalRec' structure, used to */ +/* model private data of a given @FT_Size object. */ +/* */ +typedef struct FT_Size_InternalRec_* FT_Size_Internal; + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* FT_Size_Metrics */ +/* */ +/* <Description> */ +/* The size metrics structure gives the metrics of a size object. */ +/* */ +/* <Fields> */ +/* x_ppem :: The width of the scaled EM square in pixels, hence */ +/* the term `ppem' (pixels per EM). It is also */ +/* referred to as `nominal width'. */ +/* */ +/* y_ppem :: The height of the scaled EM square in pixels, */ +/* hence the term `ppem' (pixels per EM). It is also */ +/* referred to as `nominal height'. */ +/* */ +/* x_scale :: A 16.16 fractional scaling value used to convert */ +/* horizontal metrics from font units to 26.6 */ +/* fractional pixels. Only relevant for scalable */ +/* font formats. */ +/* */ +/* y_scale :: A 16.16 fractional scaling value used to convert */ +/* vertical metrics from font units to 26.6 */ +/* fractional pixels. Only relevant for scalable */ +/* font formats. */ +/* */ +/* ascender :: The ascender in 26.6 fractional pixels. See */ +/* @FT_FaceRec for the details. */ +/* */ +/* descender :: The descender in 26.6 fractional pixels. See */ +/* @FT_FaceRec for the details. */ +/* */ +/* height :: The height in 26.6 fractional pixels. See */ +/* @FT_FaceRec for the details. */ +/* */ +/* max_advance :: The maximum advance width in 26.6 fractional */ +/* pixels. See @FT_FaceRec for the details. */ +/* */ +/* <Note> */ +/* The scaling values, if relevant, are determined first during a */ +/* size changing operation. The remaining fields are then set by the */ +/* driver. For scalable formats, they are usually set to scaled */ +/* values of the corresponding fields in @FT_FaceRec. */ +/* */ +/* Note that due to glyph hinting, these values might not be exact */ +/* for certain fonts. Thus they must be treated as unreliable */ +/* with an error margin of at least one pixel! */ +/* */ +/* Indeed, the only way to get the exact metrics is to render _all_ */ +/* glyphs. As this would be a definite performance hit, it is up to */ +/* client applications to perform such computations. */ +/* */ +/* The FT_Size_Metrics structure is valid for bitmap fonts also. */ +/* */ +typedef struct FT_Size_Metrics_ { FT_UShort x_ppem; /* horizontal pixels per EM */ FT_UShort y_ppem; /* vertical pixels per EM */ @@ -1377,240 +1371,238 @@ FT_BEGIN_HEADER FT_Pos height; /* text height in 26.6 frac. pixels */ FT_Pos max_advance; /* max horizontal advance, in 26.6 pixels */ - } FT_Size_Metrics; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_SizeRec */ - /* */ - /* <Description> */ - /* FreeType root size class structure. A size object models a face */ - /* object at a given size. */ - /* */ - /* <Fields> */ - /* face :: Handle to the parent face object. */ - /* */ - /* generic :: A typeless pointer, which is unused by the FreeType */ - /* library or any of its drivers. It can be used by */ - /* client applications to link their own data to each size */ - /* object. */ - /* */ - /* metrics :: Metrics for this size object. This field is read-only. */ - /* */ - typedef struct FT_SizeRec_ - { +} FT_Size_Metrics; + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* FT_SizeRec */ +/* */ +/* <Description> */ +/* FreeType root size class structure. A size object models a face */ +/* object at a given size. */ +/* */ +/* <Fields> */ +/* face :: Handle to the parent face object. */ +/* */ +/* generic :: A typeless pointer, which is unused by the FreeType */ +/* library or any of its drivers. It can be used by */ +/* client applications to link their own data to each size */ +/* object. */ +/* */ +/* metrics :: Metrics for this size object. This field is read-only. */ +/* */ +typedef struct FT_SizeRec_ { FT_Face face; /* parent face object */ FT_Generic generic; /* generic pointer for client uses */ FT_Size_Metrics metrics; /* size metrics */ FT_Size_Internal internal; - } FT_SizeRec; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_SubGlyph */ - /* */ - /* <Description> */ - /* The subglyph structure is an internal object used to describe */ - /* subglyphs (for example, in the case of composites). */ - /* */ - /* <Note> */ - /* The subglyph implementation is not part of the high-level API, */ - /* hence the forward structure declaration. */ - /* */ - /* You can however retrieve subglyph information with */ - /* @FT_Get_SubGlyph_Info. */ - /* */ - typedef struct FT_SubGlyphRec_* FT_SubGlyph; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Slot_Internal */ - /* */ - /* <Description> */ - /* An opaque handle to an `FT_Slot_InternalRec' structure, used to */ - /* model private data of a given @FT_GlyphSlot object. */ - /* */ - typedef struct FT_Slot_InternalRec_* FT_Slot_Internal; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_GlyphSlotRec */ - /* */ - /* <Description> */ - /* FreeType root glyph slot class structure. A glyph slot is a */ - /* container where individual glyphs can be loaded, be they in */ - /* outline or bitmap format. */ - /* */ - /* <Fields> */ - /* library :: A handle to the FreeType library instance */ - /* this slot belongs to. */ - /* */ - /* face :: A handle to the parent face object. */ - /* */ - /* next :: In some cases (like some font tools), several */ - /* glyph slots per face object can be a good */ - /* thing. As this is rare, the glyph slots are */ - /* listed through a direct, single-linked list */ - /* using its `next' field. */ - /* */ - /* generic :: A typeless pointer which is unused by the */ - /* FreeType library or any of its drivers. It */ - /* can be used by client applications to link */ - /* their own data to each glyph slot object. */ - /* */ - /* metrics :: The metrics of the last loaded glyph in the */ - /* slot. The returned values depend on the last */ - /* load flags (see the @FT_Load_Glyph API */ - /* function) and can be expressed either in 26.6 */ - /* fractional pixels or font units. */ - /* */ - /* Note that even when the glyph image is */ - /* transformed, the metrics are not. */ - /* */ - /* linearHoriAdvance :: The advance width of the unhinted glyph. */ - /* Its value is expressed in 16.16 fractional */ - /* pixels, unless @FT_LOAD_LINEAR_DESIGN is set */ - /* when loading the glyph. This field can be */ - /* important to perform correct WYSIWYG layout. */ - /* Only relevant for outline glyphs. */ - /* */ - /* linearVertAdvance :: The advance height of the unhinted glyph. */ - /* Its value is expressed in 16.16 fractional */ - /* pixels, unless @FT_LOAD_LINEAR_DESIGN is set */ - /* when loading the glyph. This field can be */ - /* important to perform correct WYSIWYG layout. */ - /* Only relevant for outline glyphs. */ - /* */ - /* advance :: This shorthand is, depending on */ - /* @FT_LOAD_IGNORE_TRANSFORM, the transformed */ - /* advance width for the glyph (in 26.6 */ - /* fractional pixel format). As specified with */ - /* @FT_LOAD_VERTICAL_LAYOUT, it uses either the */ - /* `horiAdvance' or the `vertAdvance' value of */ - /* `metrics' field. */ - /* */ - /* format :: This field indicates the format of the image */ - /* contained in the glyph slot. Typically */ - /* @FT_GLYPH_FORMAT_BITMAP, */ - /* @FT_GLYPH_FORMAT_OUTLINE, or */ - /* @FT_GLYPH_FORMAT_COMPOSITE, but others are */ - /* possible. */ - /* */ - /* bitmap :: This field is used as a bitmap descriptor */ - /* when the slot format is */ - /* @FT_GLYPH_FORMAT_BITMAP. Note that the */ - /* address and content of the bitmap buffer can */ - /* change between calls of @FT_Load_Glyph and a */ - /* few other functions. */ - /* */ - /* bitmap_left :: This is the bitmap's left bearing expressed */ - /* in integer pixels. Of course, this is only */ - /* valid if the format is */ - /* @FT_GLYPH_FORMAT_BITMAP. */ - /* */ - /* bitmap_top :: This is the bitmap's top bearing expressed in */ - /* integer pixels. Remember that this is the */ - /* distance from the baseline to the top-most */ - /* glyph scanline, upwards y~coordinates being */ - /* *positive*. */ - /* */ - /* outline :: The outline descriptor for the current glyph */ - /* image if its format is */ - /* @FT_GLYPH_FORMAT_OUTLINE. Once a glyph is */ - /* loaded, `outline' can be transformed, */ - /* distorted, embolded, etc. However, it must */ - /* not be freed. */ - /* */ - /* num_subglyphs :: The number of subglyphs in a composite glyph. */ - /* This field is only valid for the composite */ - /* glyph format that should normally only be */ - /* loaded with the @FT_LOAD_NO_RECURSE flag. */ - /* For now this is internal to FreeType. */ - /* */ - /* subglyphs :: An array of subglyph descriptors for */ - /* composite glyphs. There are `num_subglyphs' */ - /* elements in there. Currently internal to */ - /* FreeType. */ - /* */ - /* control_data :: Certain font drivers can also return the */ - /* control data for a given glyph image (e.g. */ - /* TrueType bytecode, Type~1 charstrings, etc.). */ - /* This field is a pointer to such data. */ - /* */ - /* control_len :: This is the length in bytes of the control */ - /* data. */ - /* */ - /* other :: Really wicked formats can use this pointer to */ - /* present their own glyph image to client */ - /* applications. Note that the application */ - /* needs 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 */ - /* its native format (e.g., an outline glyph for TrueType and Type~1 */ - /* formats). */ - /* */ - /* This image can later be converted into a bitmap by calling */ - /* @FT_Render_Glyph. This function finds the current renderer for */ - /* the native image's format, then invokes it. */ - /* */ - /* The renderer is in charge of transforming the native image through */ - /* the slot's face transformation fields, then converting it into a */ - /* bitmap that is returned in `slot->bitmap'. */ - /* */ - /* Note that `slot->bitmap_left' and `slot->bitmap_top' are also used */ - /* to specify the position of the bitmap relative to the current pen */ - /* 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_SizeRec; + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* FT_SubGlyph */ +/* */ +/* <Description> */ +/* The subglyph structure is an internal object used to describe */ +/* subglyphs (for example, in the case of composites). */ +/* */ +/* <Note> */ +/* The subglyph implementation is not part of the high-level API, */ +/* hence the forward structure declaration. */ +/* */ +/* You can however retrieve subglyph information with */ +/* @FT_Get_SubGlyph_Info. */ +/* */ +typedef struct FT_SubGlyphRec_* FT_SubGlyph; + + +/*************************************************************************/ +/* */ +/* <Type> */ +/* FT_Slot_Internal */ +/* */ +/* <Description> */ +/* An opaque handle to an `FT_Slot_InternalRec' structure, used to */ +/* model private data of a given @FT_GlyphSlot object. */ +/* */ +typedef struct FT_Slot_InternalRec_* FT_Slot_Internal; + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* FT_GlyphSlotRec */ +/* */ +/* <Description> */ +/* FreeType root glyph slot class structure. A glyph slot is a */ +/* container where individual glyphs can be loaded, be they in */ +/* outline or bitmap format. */ +/* */ +/* <Fields> */ +/* library :: A handle to the FreeType library instance */ +/* this slot belongs to. */ +/* */ +/* face :: A handle to the parent face object. */ +/* */ +/* next :: In some cases (like some font tools), several */ +/* glyph slots per face object can be a good */ +/* thing. As this is rare, the glyph slots are */ +/* listed through a direct, single-linked list */ +/* using its `next' field. */ +/* */ +/* generic :: A typeless pointer which is unused by the */ +/* FreeType library or any of its drivers. It */ +/* can be used by client applications to link */ +/* their own data to each glyph slot object. */ +/* */ +/* metrics :: The metrics of the last loaded glyph in the */ +/* slot. The returned values depend on the last */ +/* load flags (see the @FT_Load_Glyph API */ +/* function) and can be expressed either in 26.6 */ +/* fractional pixels or font units. */ +/* */ +/* Note that even when the glyph image is */ +/* transformed, the metrics are not. */ +/* */ +/* linearHoriAdvance :: The advance width of the unhinted glyph. */ +/* Its value is expressed in 16.16 fractional */ +/* pixels, unless @FT_LOAD_LINEAR_DESIGN is set */ +/* when loading the glyph. This field can be */ +/* important to perform correct WYSIWYG layout. */ +/* Only relevant for outline glyphs. */ +/* */ +/* linearVertAdvance :: The advance height of the unhinted glyph. */ +/* Its value is expressed in 16.16 fractional */ +/* pixels, unless @FT_LOAD_LINEAR_DESIGN is set */ +/* when loading the glyph. This field can be */ +/* important to perform correct WYSIWYG layout. */ +/* Only relevant for outline glyphs. */ +/* */ +/* advance :: This shorthand is, depending on */ +/* @FT_LOAD_IGNORE_TRANSFORM, the transformed */ +/* advance width for the glyph (in 26.6 */ +/* fractional pixel format). As specified with */ +/* @FT_LOAD_VERTICAL_LAYOUT, it uses either the */ +/* `horiAdvance' or the `vertAdvance' value of */ +/* `metrics' field. */ +/* */ +/* format :: This field indicates the format of the image */ +/* contained in the glyph slot. Typically */ +/* @FT_GLYPH_FORMAT_BITMAP, */ +/* @FT_GLYPH_FORMAT_OUTLINE, or */ +/* @FT_GLYPH_FORMAT_COMPOSITE, but others are */ +/* possible. */ +/* */ +/* bitmap :: This field is used as a bitmap descriptor */ +/* when the slot format is */ +/* @FT_GLYPH_FORMAT_BITMAP. Note that the */ +/* address and content of the bitmap buffer can */ +/* change between calls of @FT_Load_Glyph and a */ +/* few other functions. */ +/* */ +/* bitmap_left :: This is the bitmap's left bearing expressed */ +/* in integer pixels. Of course, this is only */ +/* valid if the format is */ +/* @FT_GLYPH_FORMAT_BITMAP. */ +/* */ +/* bitmap_top :: This is the bitmap's top bearing expressed in */ +/* integer pixels. Remember that this is the */ +/* distance from the baseline to the top-most */ +/* glyph scanline, upwards y~coordinates being */ +/* *positive*. */ +/* */ +/* outline :: The outline descriptor for the current glyph */ +/* image if its format is */ +/* @FT_GLYPH_FORMAT_OUTLINE. Once a glyph is */ +/* loaded, `outline' can be transformed, */ +/* distorted, embolded, etc. However, it must */ +/* not be freed. */ +/* */ +/* num_subglyphs :: The number of subglyphs in a composite glyph. */ +/* This field is only valid for the composite */ +/* glyph format that should normally only be */ +/* loaded with the @FT_LOAD_NO_RECURSE flag. */ +/* For now this is internal to FreeType. */ +/* */ +/* subglyphs :: An array of subglyph descriptors for */ +/* composite glyphs. There are `num_subglyphs' */ +/* elements in there. Currently internal to */ +/* FreeType. */ +/* */ +/* control_data :: Certain font drivers can also return the */ +/* control data for a given glyph image (e.g. */ +/* TrueType bytecode, Type~1 charstrings, etc.). */ +/* This field is a pointer to such data. */ +/* */ +/* control_len :: This is the length in bytes of the control */ +/* data. */ +/* */ +/* other :: Really wicked formats can use this pointer to */ +/* present their own glyph image to client */ +/* applications. Note that the application */ +/* needs 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 */ +/* its native format (e.g., an outline glyph for TrueType and Type~1 */ +/* formats). */ +/* */ +/* This image can later be converted into a bitmap by calling */ +/* @FT_Render_Glyph. This function finds the current renderer for */ +/* the native image's format, then invokes it. */ +/* */ +/* The renderer is in charge of transforming the native image through */ +/* the slot's face transformation fields, then converting it into a */ +/* bitmap that is returned in `slot->bitmap'. */ +/* */ +/* Note that `slot->bitmap_left' and `slot->bitmap_top' are also used */ +/* to specify the position of the bitmap relative to the current pen */ +/* 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; FT_Face face; FT_GlyphSlot next; @@ -1643,99 +1635,99 @@ FT_BEGIN_HEADER FT_Slot_Internal internal; - } FT_GlyphSlotRec; - - - /*************************************************************************/ - /*************************************************************************/ - /* */ - /* F U N C T I O N S */ - /* */ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Init_FreeType */ - /* */ - /* <Description> */ - /* Initialize a new FreeType library object. The set of modules */ - /* that are registered by this function is determined at build time. */ - /* */ - /* <Output> */ - /* alibrary :: A handle to a new library object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* In case you want to provide your own memory allocating routines, */ - /* use @FT_New_Library instead, followed by a call to */ - /* @FT_Add_Default_Modules (or a series of calls to @FT_Add_Module). */ - /* */ - /* For multi-threading applications each thread should have its own */ - /* FT_Library object. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Init_FreeType( FT_Library *alibrary ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Done_FreeType */ - /* */ - /* <Description> */ - /* Destroy a given FreeType library object and all of its children, */ - /* including resources, drivers, faces, sizes, etc. */ - /* */ - /* <Input> */ - /* library :: A handle to the target library object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Done_FreeType( FT_Library library ); - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_OPEN_XXX */ - /* */ - /* <Description> */ - /* A list of bit-field constants used within the `flags' field of the */ - /* @FT_Open_Args structure. */ - /* */ - /* <Values> */ - /* FT_OPEN_MEMORY :: This is a memory-based stream. */ - /* */ - /* FT_OPEN_STREAM :: Copy the stream from the `stream' field. */ - /* */ - /* FT_OPEN_PATHNAME :: Create a new input stream from a C~path */ - /* name. */ - /* */ - /* FT_OPEN_DRIVER :: Use the `driver' field. */ - /* */ - /* FT_OPEN_PARAMS :: Use the `num_params' and `params' fields. */ - /* */ - /* ft_open_memory :: Deprecated; use @FT_OPEN_MEMORY instead. */ - /* */ - /* ft_open_stream :: Deprecated; use @FT_OPEN_STREAM instead. */ - /* */ - /* ft_open_pathname :: Deprecated; use @FT_OPEN_PATHNAME instead. */ - /* */ - /* ft_open_driver :: Deprecated; use @FT_OPEN_DRIVER instead. */ - /* */ - /* ft_open_params :: Deprecated; use @FT_OPEN_PARAMS instead. */ - /* */ - /* <Note> */ - /* The `FT_OPEN_MEMORY', `FT_OPEN_STREAM', and `FT_OPEN_PATHNAME' */ - /* flags are mutually exclusive. */ - /* */ +} FT_GlyphSlotRec; + + +/*************************************************************************/ +/*************************************************************************/ +/* */ +/* F U N C T I O N S */ +/* */ +/*************************************************************************/ +/*************************************************************************/ + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Init_FreeType */ +/* */ +/* <Description> */ +/* Initialize a new FreeType library object. The set of modules */ +/* that are registered by this function is determined at build time. */ +/* */ +/* <Output> */ +/* alibrary :: A handle to a new library object. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +/* <Note> */ +/* In case you want to provide your own memory allocating routines, */ +/* use @FT_New_Library instead, followed by a call to */ +/* @FT_Add_Default_Modules (or a series of calls to @FT_Add_Module). */ +/* */ +/* For multi-threading applications each thread should have its own */ +/* FT_Library object. */ +/* */ +FT_EXPORT( FT_Error ) +FT_Init_FreeType( FT_Library *alibrary ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Done_FreeType */ +/* */ +/* <Description> */ +/* Destroy a given FreeType library object and all of its children, */ +/* including resources, drivers, faces, sizes, etc. */ +/* */ +/* <Input> */ +/* library :: A handle to the target library object. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +FT_EXPORT( FT_Error ) +FT_Done_FreeType( FT_Library library ); + + +/*************************************************************************/ +/* */ +/* <Enum> */ +/* FT_OPEN_XXX */ +/* */ +/* <Description> */ +/* A list of bit-field constants used within the `flags' field of the */ +/* @FT_Open_Args structure. */ +/* */ +/* <Values> */ +/* FT_OPEN_MEMORY :: This is a memory-based stream. */ +/* */ +/* FT_OPEN_STREAM :: Copy the stream from the `stream' field. */ +/* */ +/* FT_OPEN_PATHNAME :: Create a new input stream from a C~path */ +/* name. */ +/* */ +/* FT_OPEN_DRIVER :: Use the `driver' field. */ +/* */ +/* FT_OPEN_PARAMS :: Use the `num_params' and `params' fields. */ +/* */ +/* ft_open_memory :: Deprecated; use @FT_OPEN_MEMORY instead. */ +/* */ +/* ft_open_stream :: Deprecated; use @FT_OPEN_STREAM instead. */ +/* */ +/* ft_open_pathname :: Deprecated; use @FT_OPEN_PATHNAME instead. */ +/* */ +/* ft_open_driver :: Deprecated; use @FT_OPEN_DRIVER instead. */ +/* */ +/* ft_open_params :: Deprecated; use @FT_OPEN_PARAMS instead. */ +/* */ +/* <Note> */ +/* The `FT_OPEN_MEMORY', `FT_OPEN_STREAM', and `FT_OPEN_PATHNAME' */ +/* flags are mutually exclusive. */ +/* */ #define FT_OPEN_MEMORY 0x1 #define FT_OPEN_STREAM 0x2 #define FT_OPEN_PATHNAME 0x4 @@ -1749,92 +1741,90 @@ FT_BEGIN_HEADER #define ft_open_params FT_OPEN_PARAMS /* deprecated */ - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Parameter */ - /* */ - /* <Description> */ - /* A simple structure used to pass more or less generic parameters to */ - /* @FT_Open_Face. */ - /* */ - /* <Fields> */ - /* tag :: A four-byte identification tag. */ - /* */ - /* data :: A pointer to the parameter data. */ - /* */ - /* <Note> */ - /* The ID and function of parameters are driver-specific. See the */ - /* various FT_PARAM_TAG_XXX flags for more information. */ - /* */ - typedef struct FT_Parameter_ - { +/*************************************************************************/ +/* */ +/* <Struct> */ +/* FT_Parameter */ +/* */ +/* <Description> */ +/* A simple structure used to pass more or less generic parameters to */ +/* @FT_Open_Face. */ +/* */ +/* <Fields> */ +/* tag :: A four-byte identification tag. */ +/* */ +/* data :: A pointer to the parameter data. */ +/* */ +/* <Note> */ +/* The ID and function of parameters are driver-specific. See the */ +/* various FT_PARAM_TAG_XXX flags for more information. */ +/* */ +typedef struct FT_Parameter_ { FT_ULong tag; FT_Pointer data; - } FT_Parameter; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Open_Args */ - /* */ - /* <Description> */ - /* A structure used to indicate how to open a new font file or */ - /* stream. A pointer to such a structure can be used as a parameter */ - /* for the functions @FT_Open_Face and @FT_Attach_Stream. */ - /* */ - /* <Fields> */ - /* flags :: A set of bit flags indicating how to use the */ - /* structure. */ - /* */ - /* memory_base :: The first byte of the file in memory. */ - /* */ - /* memory_size :: The size in bytes of the file in memory. */ - /* */ - /* pathname :: A pointer to an 8-bit file pathname. */ - /* */ - /* stream :: A handle to a source stream object. */ - /* */ - /* driver :: This field is exclusively used by @FT_Open_Face; */ - /* it simply specifies the font driver to use to open */ - /* the face. If set to~0, FreeType tries to load the */ - /* face with each one of the drivers in its list. */ - /* */ - /* num_params :: The number of extra parameters. */ - /* */ - /* params :: Extra parameters passed to the font driver when */ - /* opening a new face. */ - /* */ - /* <Note> */ - /* The stream type is determined by the contents of `flags' which */ - /* are tested in the following order by @FT_Open_Face: */ - /* */ - /* If the `FT_OPEN_MEMORY' bit is set, assume that this is a */ - /* memory file of `memory_size' bytes, located at `memory_address'. */ - /* The data are are not copied, and the client is responsible for */ - /* releasing and destroying them _after_ the corresponding call to */ - /* @FT_Done_Face. */ - /* */ - /* Otherwise, if the `FT_OPEN_STREAM' bit is set, assume that a */ - /* custom input stream `stream' is used. */ - /* */ - /* Otherwise, if the `FT_OPEN_PATHNAME' bit is set, assume that this */ - /* is a normal file and use `pathname' to open it. */ - /* */ - /* If the `FT_OPEN_DRIVER' bit is set, @FT_Open_Face only tries to */ - /* open the file with the driver whose handler is in `driver'. */ - /* */ - /* If the `FT_OPEN_PARAMS' bit is set, the parameters given by */ - /* `num_params' and `params' is used. They are ignored otherwise. */ - /* */ - /* Ideally, both the `pathname' and `params' fields should be tagged */ - /* as `const'; this is missing for API backwards compatibility. In */ - /* other words, applications should treat them as read-only. */ - /* */ - typedef struct FT_Open_Args_ - { +} FT_Parameter; + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* FT_Open_Args */ +/* */ +/* <Description> */ +/* A structure used to indicate how to open a new font file or */ +/* stream. A pointer to such a structure can be used as a parameter */ +/* for the functions @FT_Open_Face and @FT_Attach_Stream. */ +/* */ +/* <Fields> */ +/* flags :: A set of bit flags indicating how to use the */ +/* structure. */ +/* */ +/* memory_base :: The first byte of the file in memory. */ +/* */ +/* memory_size :: The size in bytes of the file in memory. */ +/* */ +/* pathname :: A pointer to an 8-bit file pathname. */ +/* */ +/* stream :: A handle to a source stream object. */ +/* */ +/* driver :: This field is exclusively used by @FT_Open_Face; */ +/* it simply specifies the font driver to use to open */ +/* the face. If set to~0, FreeType tries to load the */ +/* face with each one of the drivers in its list. */ +/* */ +/* num_params :: The number of extra parameters. */ +/* */ +/* params :: Extra parameters passed to the font driver when */ +/* opening a new face. */ +/* */ +/* <Note> */ +/* The stream type is determined by the contents of `flags' which */ +/* are tested in the following order by @FT_Open_Face: */ +/* */ +/* If the `FT_OPEN_MEMORY' bit is set, assume that this is a */ +/* memory file of `memory_size' bytes, located at `memory_address'. */ +/* The data are are not copied, and the client is responsible for */ +/* releasing and destroying them _after_ the corresponding call to */ +/* @FT_Done_Face. */ +/* */ +/* Otherwise, if the `FT_OPEN_STREAM' bit is set, assume that a */ +/* custom input stream `stream' is used. */ +/* */ +/* Otherwise, if the `FT_OPEN_PATHNAME' bit is set, assume that this */ +/* is a normal file and use `pathname' to open it. */ +/* */ +/* If the `FT_OPEN_DRIVER' bit is set, @FT_Open_Face only tries to */ +/* open the file with the driver whose handler is in `driver'. */ +/* */ +/* If the `FT_OPEN_PARAMS' bit is set, the parameters given by */ +/* `num_params' and `params' is used. They are ignored otherwise. */ +/* */ +/* Ideally, both the `pathname' and `params' fields should be tagged */ +/* as `const'; this is missing for API backwards compatibility. In */ +/* other words, applications should treat them as read-only. */ +/* */ +typedef struct FT_Open_Args_ { FT_UInt flags; const FT_Byte* memory_base; FT_Long memory_size; @@ -1844,313 +1834,312 @@ FT_BEGIN_HEADER FT_Int num_params; FT_Parameter* params; - } FT_Open_Args; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_New_Face */ - /* */ - /* <Description> */ - /* This function calls @FT_Open_Face to open a font by its pathname. */ - /* */ - /* <InOut> */ - /* library :: A handle to the library resource. */ - /* */ - /* <Input> */ - /* pathname :: A path to the font file. */ - /* */ - /* face_index :: The index of the face within the font. The first */ - /* face has index~0. */ - /* */ - /* <Output> */ - /* aface :: A handle to a new face object. If `face_index' is */ - /* greater than or equal to zero, it must be non-NULL. */ - /* See @FT_Open_Face for more details. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_New_Face( FT_Library library, - const char* filepathname, - FT_Long face_index, - FT_Face *aface ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_New_Memory_Face */ - /* */ - /* <Description> */ - /* This function calls @FT_Open_Face to open a font which has been */ - /* loaded into memory. */ - /* */ - /* <InOut> */ - /* library :: A handle to the library resource. */ - /* */ - /* <Input> */ - /* file_base :: A pointer to the beginning of the font data. */ - /* */ - /* file_size :: The size of the memory chunk used by the font data. */ - /* */ - /* face_index :: The index of the face within the font. The first */ - /* face has index~0. */ - /* */ - /* <Output> */ - /* aface :: A handle to a new face object. If `face_index' is */ - /* greater than or equal to zero, it must be non-NULL. */ - /* See @FT_Open_Face for more details. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* You must not deallocate the memory before calling @FT_Done_Face. */ - /* */ - FT_EXPORT( FT_Error ) - FT_New_Memory_Face( FT_Library library, - const FT_Byte* file_base, - FT_Long file_size, - FT_Long face_index, - FT_Face *aface ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Open_Face */ - /* */ - /* <Description> */ - /* Create a face object from a given resource described by */ - /* @FT_Open_Args. */ - /* */ - /* <InOut> */ - /* library :: A handle to the library resource. */ - /* */ - /* <Input> */ - /* args :: A pointer to an `FT_Open_Args' structure which must */ - /* be filled by the caller. */ - /* */ - /* face_index :: The index of the face within the font. The first */ - /* face has index~0. */ - /* */ - /* <Output> */ - /* aface :: A handle to a new face object. If `face_index' is */ - /* greater than or equal to zero, it must be non-NULL. */ - /* See note below. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* Unlike FreeType 1.x, this function automatically creates a glyph */ - /* slot for the face object which can be accessed directly through */ - /* `face->glyph'. */ - /* */ - /* FT_Open_Face can be used to quickly check whether the font */ - /* format of a given font resource is supported by FreeType. If the */ - /* `face_index' field is negative, the function's return value is~0 */ - /* if the font format is recognized, or non-zero otherwise; */ - /* the function returns a more or less empty face handle in `*aface' */ - /* (if `aface' isn't NULL). The only useful field in this special */ - /* case is `face->num_faces' which gives the number of faces within */ - /* the font file. After examination, the returned @FT_Face structure */ - /* should be deallocated with a call to @FT_Done_Face. */ - /* */ - /* Each new face object created with this function also owns a */ - /* default @FT_Size object, accessible as `face->size'. */ - /* */ - /* One @FT_Library instance can have multiple face objects, this is, */ - /* @FT_Open_Face and its siblings can be called multiple times using */ - /* the same `library' argument. */ - /* */ - /* See the discussion of reference counters in the description of */ - /* @FT_Reference_Face. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Open_Face( FT_Library library, - const FT_Open_Args* args, - FT_Long face_index, - FT_Face *aface ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Attach_File */ - /* */ - /* <Description> */ - /* This function calls @FT_Attach_Stream to attach a file. */ - /* */ - /* <InOut> */ - /* face :: The target face object. */ - /* */ - /* <Input> */ - /* filepathname :: The pathname. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Attach_File( FT_Face face, - const char* filepathname ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Attach_Stream */ - /* */ - /* <Description> */ - /* `Attach' data to a face object. Normally, this is used to read */ - /* additional information for the face object. For example, you can */ - /* attach an AFM file that comes with a Type~1 font to get the */ - /* kerning values and other metrics. */ - /* */ - /* <InOut> */ - /* face :: The target face object. */ - /* */ - /* <Input> */ - /* parameters :: A pointer to @FT_Open_Args which must be filled by */ - /* the caller. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* The meaning of the `attach' (i.e., what really happens when the */ - /* new file is read) is not fixed by FreeType itself. It really */ - /* depends on the font format (and thus the font driver). */ - /* */ - /* Client applications are expected to know what they are doing */ - /* when invoking this function. Most drivers simply do not implement */ - /* file attachments. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Attach_Stream( FT_Face face, - FT_Open_Args* parameters ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Reference_Face */ - /* */ - /* <Description> */ - /* A counter gets initialized to~1 at the time an @FT_Face structure */ - /* is created. This function increments the counter. @FT_Done_Face */ - /* then only destroys a face if the counter is~1, otherwise it simply */ - /* decrements the counter. */ - /* */ - /* This function helps in managing life-cycles of structures which */ - /* reference @FT_Face objects. */ - /* */ - /* <Input> */ - /* face :: A handle to a target face object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Since> */ - /* 2.4.2 */ - /* */ - FT_EXPORT( FT_Error ) - FT_Reference_Face( FT_Face face ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Done_Face */ - /* */ - /* <Description> */ - /* Discard a given face object, as well as all of its child slots and */ - /* sizes. */ - /* */ - /* <Input> */ - /* face :: A handle to a target face object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* See the discussion of reference counters in the description of */ - /* @FT_Reference_Face. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Done_Face( FT_Face face ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Select_Size */ - /* */ - /* <Description> */ - /* Select a bitmap strike. */ - /* */ - /* <InOut> */ - /* face :: A handle to a target face object. */ - /* */ - /* <Input> */ - /* strike_index :: The index of the bitmap strike in the */ - /* `available_sizes' field of @FT_FaceRec structure. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Select_Size( FT_Face face, - FT_Int strike_index ); - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_Size_Request_Type */ - /* */ - /* <Description> */ - /* An enumeration type that lists the supported size request types. */ - /* */ - /* <Values> */ - /* FT_SIZE_REQUEST_TYPE_NOMINAL :: */ - /* The nominal size. The `units_per_EM' field of @FT_FaceRec is */ - /* used to determine both scaling values. */ - /* */ - /* FT_SIZE_REQUEST_TYPE_REAL_DIM :: */ - /* The real dimension. The sum of the the `ascender' and (minus */ - /* of) the `descender' fields of @FT_FaceRec are used to determine */ - /* both scaling values. */ - /* */ - /* FT_SIZE_REQUEST_TYPE_BBOX :: */ - /* The font bounding box. The width and height of the `bbox' field */ - /* of @FT_FaceRec are used to determine the horizontal and vertical */ - /* scaling value, respectively. */ - /* */ - /* FT_SIZE_REQUEST_TYPE_CELL :: */ - /* The `max_advance_width' field of @FT_FaceRec is used to */ - /* determine the horizontal scaling value; the vertical scaling */ - /* value is determined the same way as */ - /* @FT_SIZE_REQUEST_TYPE_REAL_DIM does. Finally, both scaling */ - /* values are set to the smaller one. This type is useful if you */ - /* want to specify the font size for, say, a window of a given */ - /* dimension and 80x24 cells. */ - /* */ - /* FT_SIZE_REQUEST_TYPE_SCALES :: */ - /* Specify the scaling values directly. */ - /* */ - /* <Note> */ - /* The above descriptions only apply to scalable formats. For bitmap */ - /* formats, the behaviour is up to the driver. */ - /* */ - /* See the note section of @FT_Size_Metrics if you wonder how size */ - /* requesting relates to scaling values. */ - /* */ - typedef enum FT_Size_Request_Type_ - { +} FT_Open_Args; + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_New_Face */ +/* */ +/* <Description> */ +/* This function calls @FT_Open_Face to open a font by its pathname. */ +/* */ +/* <InOut> */ +/* library :: A handle to the library resource. */ +/* */ +/* <Input> */ +/* pathname :: A path to the font file. */ +/* */ +/* face_index :: The index of the face within the font. The first */ +/* face has index~0. */ +/* */ +/* <Output> */ +/* aface :: A handle to a new face object. If `face_index' is */ +/* greater than or equal to zero, it must be non-NULL. */ +/* See @FT_Open_Face for more details. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +FT_EXPORT( FT_Error ) +FT_New_Face( FT_Library library, + const char* filepathname, + FT_Long face_index, + FT_Face *aface ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_New_Memory_Face */ +/* */ +/* <Description> */ +/* This function calls @FT_Open_Face to open a font which has been */ +/* loaded into memory. */ +/* */ +/* <InOut> */ +/* library :: A handle to the library resource. */ +/* */ +/* <Input> */ +/* file_base :: A pointer to the beginning of the font data. */ +/* */ +/* file_size :: The size of the memory chunk used by the font data. */ +/* */ +/* face_index :: The index of the face within the font. The first */ +/* face has index~0. */ +/* */ +/* <Output> */ +/* aface :: A handle to a new face object. If `face_index' is */ +/* greater than or equal to zero, it must be non-NULL. */ +/* See @FT_Open_Face for more details. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +/* <Note> */ +/* You must not deallocate the memory before calling @FT_Done_Face. */ +/* */ +FT_EXPORT( FT_Error ) +FT_New_Memory_Face( FT_Library library, + const FT_Byte* file_base, + FT_Long file_size, + FT_Long face_index, + FT_Face *aface ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Open_Face */ +/* */ +/* <Description> */ +/* Create a face object from a given resource described by */ +/* @FT_Open_Args. */ +/* */ +/* <InOut> */ +/* library :: A handle to the library resource. */ +/* */ +/* <Input> */ +/* args :: A pointer to an `FT_Open_Args' structure which must */ +/* be filled by the caller. */ +/* */ +/* face_index :: The index of the face within the font. The first */ +/* face has index~0. */ +/* */ +/* <Output> */ +/* aface :: A handle to a new face object. If `face_index' is */ +/* greater than or equal to zero, it must be non-NULL. */ +/* See note below. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +/* <Note> */ +/* Unlike FreeType 1.x, this function automatically creates a glyph */ +/* slot for the face object which can be accessed directly through */ +/* `face->glyph'. */ +/* */ +/* FT_Open_Face can be used to quickly check whether the font */ +/* format of a given font resource is supported by FreeType. If the */ +/* `face_index' field is negative, the function's return value is~0 */ +/* if the font format is recognized, or non-zero otherwise; */ +/* the function returns a more or less empty face handle in `*aface' */ +/* (if `aface' isn't NULL). The only useful field in this special */ +/* case is `face->num_faces' which gives the number of faces within */ +/* the font file. After examination, the returned @FT_Face structure */ +/* should be deallocated with a call to @FT_Done_Face. */ +/* */ +/* Each new face object created with this function also owns a */ +/* default @FT_Size object, accessible as `face->size'. */ +/* */ +/* One @FT_Library instance can have multiple face objects, this is, */ +/* @FT_Open_Face and its siblings can be called multiple times using */ +/* the same `library' argument. */ +/* */ +/* See the discussion of reference counters in the description of */ +/* @FT_Reference_Face. */ +/* */ +FT_EXPORT( FT_Error ) +FT_Open_Face( FT_Library library, + const FT_Open_Args* args, + FT_Long face_index, + FT_Face *aface ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Attach_File */ +/* */ +/* <Description> */ +/* This function calls @FT_Attach_Stream to attach a file. */ +/* */ +/* <InOut> */ +/* face :: The target face object. */ +/* */ +/* <Input> */ +/* filepathname :: The pathname. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +FT_EXPORT( FT_Error ) +FT_Attach_File( FT_Face face, + const char* filepathname ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Attach_Stream */ +/* */ +/* <Description> */ +/* `Attach' data to a face object. Normally, this is used to read */ +/* additional information for the face object. For example, you can */ +/* attach an AFM file that comes with a Type~1 font to get the */ +/* kerning values and other metrics. */ +/* */ +/* <InOut> */ +/* face :: The target face object. */ +/* */ +/* <Input> */ +/* parameters :: A pointer to @FT_Open_Args which must be filled by */ +/* the caller. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +/* <Note> */ +/* The meaning of the `attach' (i.e., what really happens when the */ +/* new file is read) is not fixed by FreeType itself. It really */ +/* depends on the font format (and thus the font driver). */ +/* */ +/* Client applications are expected to know what they are doing */ +/* when invoking this function. Most drivers simply do not implement */ +/* file attachments. */ +/* */ +FT_EXPORT( FT_Error ) +FT_Attach_Stream( FT_Face face, + FT_Open_Args* parameters ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Reference_Face */ +/* */ +/* <Description> */ +/* A counter gets initialized to~1 at the time an @FT_Face structure */ +/* is created. This function increments the counter. @FT_Done_Face */ +/* then only destroys a face if the counter is~1, otherwise it simply */ +/* decrements the counter. */ +/* */ +/* This function helps in managing life-cycles of structures which */ +/* reference @FT_Face objects. */ +/* */ +/* <Input> */ +/* face :: A handle to a target face object. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +/* <Since> */ +/* 2.4.2 */ +/* */ +FT_EXPORT( FT_Error ) +FT_Reference_Face( FT_Face face ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Done_Face */ +/* */ +/* <Description> */ +/* Discard a given face object, as well as all of its child slots and */ +/* sizes. */ +/* */ +/* <Input> */ +/* face :: A handle to a target face object. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +/* <Note> */ +/* See the discussion of reference counters in the description of */ +/* @FT_Reference_Face. */ +/* */ +FT_EXPORT( FT_Error ) +FT_Done_Face( FT_Face face ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Select_Size */ +/* */ +/* <Description> */ +/* Select a bitmap strike. */ +/* */ +/* <InOut> */ +/* face :: A handle to a target face object. */ +/* */ +/* <Input> */ +/* strike_index :: The index of the bitmap strike in the */ +/* `available_sizes' field of @FT_FaceRec structure. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +FT_EXPORT( FT_Error ) +FT_Select_Size( FT_Face face, + FT_Int strike_index ); + + +/*************************************************************************/ +/* */ +/* <Enum> */ +/* FT_Size_Request_Type */ +/* */ +/* <Description> */ +/* An enumeration type that lists the supported size request types. */ +/* */ +/* <Values> */ +/* FT_SIZE_REQUEST_TYPE_NOMINAL :: */ +/* The nominal size. The `units_per_EM' field of @FT_FaceRec is */ +/* used to determine both scaling values. */ +/* */ +/* FT_SIZE_REQUEST_TYPE_REAL_DIM :: */ +/* The real dimension. The sum of the the `ascender' and (minus */ +/* of) the `descender' fields of @FT_FaceRec are used to determine */ +/* both scaling values. */ +/* */ +/* FT_SIZE_REQUEST_TYPE_BBOX :: */ +/* The font bounding box. The width and height of the `bbox' field */ +/* of @FT_FaceRec are used to determine the horizontal and vertical */ +/* scaling value, respectively. */ +/* */ +/* FT_SIZE_REQUEST_TYPE_CELL :: */ +/* The `max_advance_width' field of @FT_FaceRec is used to */ +/* determine the horizontal scaling value; the vertical scaling */ +/* value is determined the same way as */ +/* @FT_SIZE_REQUEST_TYPE_REAL_DIM does. Finally, both scaling */ +/* values are set to the smaller one. This type is useful if you */ +/* want to specify the font size for, say, a window of a given */ +/* dimension and 80x24 cells. */ +/* */ +/* FT_SIZE_REQUEST_TYPE_SCALES :: */ +/* Specify the scaling values directly. */ +/* */ +/* <Note> */ +/* The above descriptions only apply to scalable formats. For bitmap */ +/* formats, the behaviour is up to the driver. */ +/* */ +/* See the note section of @FT_Size_Metrics if you wonder how size */ +/* requesting relates to scaling values. */ +/* */ +typedef enum FT_Size_Request_Type_ { FT_SIZE_REQUEST_TYPE_NOMINAL, FT_SIZE_REQUEST_TYPE_REAL_DIM, FT_SIZE_REQUEST_TYPE_BBOX, @@ -2159,392 +2148,391 @@ FT_BEGIN_HEADER FT_SIZE_REQUEST_TYPE_MAX - } FT_Size_Request_Type; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Size_RequestRec */ - /* */ - /* <Description> */ - /* A structure used to model a size request. */ - /* */ - /* <Fields> */ - /* type :: See @FT_Size_Request_Type. */ - /* */ - /* width :: The desired width. */ - /* */ - /* height :: The desired height. */ - /* */ - /* horiResolution :: The horizontal resolution. If set to zero, */ - /* `width' is treated as a 26.6 fractional pixel */ - /* value. */ - /* */ - /* vertResolution :: The vertical resolution. If set to zero, */ - /* `height' is treated as a 26.6 fractional pixel */ - /* value. */ - /* */ - /* <Note> */ - /* If `width' is zero, then the horizontal scaling value is set equal */ - /* to the vertical scaling value, and vice versa. */ - /* */ - typedef struct FT_Size_RequestRec_ - { +} FT_Size_Request_Type; + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* FT_Size_RequestRec */ +/* */ +/* <Description> */ +/* A structure used to model a size request. */ +/* */ +/* <Fields> */ +/* type :: See @FT_Size_Request_Type. */ +/* */ +/* width :: The desired width. */ +/* */ +/* height :: The desired height. */ +/* */ +/* horiResolution :: The horizontal resolution. If set to zero, */ +/* `width' is treated as a 26.6 fractional pixel */ +/* value. */ +/* */ +/* vertResolution :: The vertical resolution. If set to zero, */ +/* `height' is treated as a 26.6 fractional pixel */ +/* value. */ +/* */ +/* <Note> */ +/* If `width' is zero, then the horizontal scaling value is set equal */ +/* to the vertical scaling value, and vice versa. */ +/* */ +typedef struct FT_Size_RequestRec_ { FT_Size_Request_Type type; FT_Long width; FT_Long height; FT_UInt horiResolution; FT_UInt vertResolution; - } FT_Size_RequestRec; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Size_Request */ - /* */ - /* <Description> */ - /* A handle to a size request structure. */ - /* */ - typedef struct FT_Size_RequestRec_ *FT_Size_Request; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Request_Size */ - /* */ - /* <Description> */ - /* Resize the scale of the active @FT_Size object in a face. */ - /* */ - /* <InOut> */ - /* face :: A handle to a target face object. */ - /* */ - /* <Input> */ - /* req :: A pointer to a @FT_Size_RequestRec. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* Although drivers may select the bitmap strike matching the */ - /* request, you should not rely on this if you intend to select a */ - /* particular bitmap strike. Use @FT_Select_Size instead in that */ - /* case. */ - /* */ - /* The relation between the requested size and the resulting glyph */ - /* size is dependent entirely on how the size is defined in the */ - /* source face. The font designer chooses the final size of each */ - /* glyph relative to this size. For more information refer to */ - /* `http://www.freetype.org/freetype2/docs/glyphs/glyphs-2.html' */ - /* */ - FT_EXPORT( FT_Error ) - FT_Request_Size( FT_Face face, - FT_Size_Request req ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Set_Char_Size */ - /* */ - /* <Description> */ - /* This function calls @FT_Request_Size to request the nominal size */ - /* (in points). */ - /* */ - /* <InOut> */ - /* face :: A handle to a target face object. */ - /* */ - /* <Input> */ - /* char_width :: The nominal width, in 26.6 fractional points. */ - /* */ - /* char_height :: The nominal height, in 26.6 fractional points. */ - /* */ - /* horz_resolution :: The horizontal resolution in dpi. */ - /* */ - /* vert_resolution :: The vertical resolution in dpi. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* If either the character width or height is zero, it is set equal */ - /* to the other value. */ - /* */ - /* If either the horizontal or vertical resolution is zero, it is set */ - /* equal to the other value. */ - /* */ - /* A character width or height smaller than 1pt is set to 1pt; if */ - /* both resolution values are zero, they are set to 72dpi. */ - /* */ - /* Don't use this function if you are using the FreeType cache API. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Set_Char_Size( FT_Face face, - FT_F26Dot6 char_width, - FT_F26Dot6 char_height, - FT_UInt horz_resolution, - FT_UInt vert_resolution ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Set_Pixel_Sizes */ - /* */ - /* <Description> */ - /* This function calls @FT_Request_Size to request the nominal size */ - /* (in pixels). */ - /* */ - /* <InOut> */ - /* face :: A handle to the target face object. */ - /* */ - /* <Input> */ - /* pixel_width :: The nominal width, in pixels. */ - /* */ - /* pixel_height :: The nominal height, in pixels. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* You should not rely on the resulting glyphs matching, or being */ - /* constrained, to this pixel size. Refer to @FT_Request_Size to */ - /* understand how requested sizes relate to actual sizes. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Set_Pixel_Sizes( FT_Face face, - FT_UInt pixel_width, - FT_UInt pixel_height ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Load_Glyph */ - /* */ - /* <Description> */ - /* A function used to load a single glyph into the glyph slot of a */ - /* face object. */ - /* */ - /* <InOut> */ - /* face :: A handle to the target face object where the glyph */ - /* is loaded. */ - /* */ - /* <Input> */ - /* glyph_index :: The index of the glyph in the font file. For */ - /* CID-keyed fonts (either in PS or in CFF format) */ - /* this argument specifies the CID value. */ - /* */ - /* load_flags :: A flag indicating what to load for this glyph. The */ - /* @FT_LOAD_XXX constants can be used to control the */ - /* glyph loading process (e.g., whether the outline */ - /* should be scaled, whether to load bitmaps or not, */ - /* whether to hint the outline, etc). */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* The loaded glyph may be transformed. See @FT_Set_Transform for */ - /* the details. */ - /* */ - /* For subsetted CID-keyed fonts, `FT_Err_Invalid_Argument' is */ - /* returned for invalid CID values (this is, for CID values which */ - /* don't have a corresponding glyph in the font). See the discussion */ - /* of the @FT_FACE_FLAG_CID_KEYED flag for more details. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Load_Glyph( FT_Face face, - FT_UInt glyph_index, - FT_Int32 load_flags ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Load_Char */ - /* */ - /* <Description> */ - /* A function used to load a single glyph into the glyph slot of a */ - /* face object, according to its character code. */ - /* */ - /* <InOut> */ - /* face :: A handle to a target face object where the glyph */ - /* is loaded. */ - /* */ - /* <Input> */ - /* char_code :: The glyph's character code, according to the */ - /* current charmap used in the face. */ - /* */ - /* load_flags :: A flag indicating what to load for this glyph. The */ - /* @FT_LOAD_XXX constants can be used to control the */ - /* glyph loading process (e.g., whether the outline */ - /* should be scaled, whether to load bitmaps or not, */ - /* whether to hint the outline, etc). */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* This function simply calls @FT_Get_Char_Index and @FT_Load_Glyph. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Load_Char( FT_Face face, - FT_ULong char_code, - FT_Int32 load_flags ); - - - /************************************************************************* - * - * @enum: - * FT_LOAD_XXX - * - * @description: - * A list of bit-field constants used with @FT_Load_Glyph to indicate - * what kind of operations to perform during glyph loading. - * - * @values: - * FT_LOAD_DEFAULT :: - * Corresponding to~0, this value is used as the default glyph load - * operation. In this case, the following happens: - * - * 1. FreeType looks for a bitmap for the glyph corresponding to the - * face's current size. If one is found, the function returns. - * The bitmap data can be accessed from the glyph slot (see note - * below). - * - * 2. If no embedded bitmap is searched or found, FreeType looks for a - * scalable outline. If one is found, it is loaded from the font - * file, scaled to device pixels, then `hinted' to the pixel grid - * in order to optimize it. The outline data can be accessed from - * the glyph slot (see note below). - * - * Note that by default, the glyph loader doesn't render outlines into - * bitmaps. The following flags are used to modify this default - * behaviour to more specific and useful cases. - * - * FT_LOAD_NO_SCALE :: - * Don't scale the loaded outline glyph but keep it in font units. - * - * This flag implies @FT_LOAD_NO_HINTING and @FT_LOAD_NO_BITMAP, and - * unsets @FT_LOAD_RENDER. - * - * If the font is `tricky' (see @FT_FACE_FLAG_TRICKY for more), using - * FT_LOAD_NO_SCALE usually yields meaningless outlines because the - * subglyphs must be scaled and positioned with hinting instructions. - * This can be solved by loading the font without FT_LOAD_NO_SCALE and - * setting the character size to `font->units_per_EM'. - * - * FT_LOAD_NO_HINTING :: - * Disable hinting. This generally generates `blurrier' bitmap glyphs - * when the glyph are rendered in any of the anti-aliased modes. See - * also the note below. - * - * This flag is implied by @FT_LOAD_NO_SCALE. - * - * FT_LOAD_RENDER :: - * Call @FT_Render_Glyph after the glyph is loaded. By default, the - * glyph is rendered in @FT_RENDER_MODE_NORMAL mode. This can be - * overridden by @FT_LOAD_TARGET_XXX or @FT_LOAD_MONOCHROME. - * - * This flag is unset by @FT_LOAD_NO_SCALE. - * - * FT_LOAD_NO_BITMAP :: - * Ignore bitmap strikes when loading. Bitmap-only fonts ignore this - * flag. - * - * @FT_LOAD_NO_SCALE always sets this flag. - * - * FT_LOAD_VERTICAL_LAYOUT :: - * Load the glyph for vertical text layout. In particular, the - * `advance' value in the @FT_GlyphSlotRec structure is set to the - * `vertAdvance' value of the `metrics' field. - * - * In case @FT_HAS_VERTICAL doesn't return true, you shouldn't use - * this flag currently. Reason is that in this case vertical metrics - * get synthesized, and those values are not always consistent across - * various font formats. - * - * FT_LOAD_FORCE_AUTOHINT :: - * Indicates that the auto-hinter is preferred over the font's native - * hinter. See also the note below. - * - * FT_LOAD_CROP_BITMAP :: - * Indicates that the font driver should crop the loaded bitmap glyph - * (i.e., remove all space around its black bits). Not all drivers - * implement this. - * - * FT_LOAD_PEDANTIC :: - * Indicates that the font driver should perform pedantic verifications - * during glyph loading. This is mostly used to detect broken glyphs - * in fonts. By default, FreeType tries to handle broken fonts also. - * - * In particular, errors from the TrueType bytecode engine are not - * passed to the application if this flag is not set; this might - * result in partially hinted or distorted glyphs in case a glyph's - * bytecode is buggy. - * - * FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH :: - * Ignored. Deprecated. - * - * FT_LOAD_NO_RECURSE :: - * This flag is only used internally. It merely indicates that the - * font driver should not load composite glyphs recursively. Instead, - * it should set the `num_subglyph' and `subglyphs' values of the - * glyph slot accordingly, and set `glyph->format' to - * @FT_GLYPH_FORMAT_COMPOSITE. - * - * The description of sub-glyphs is not available to client - * applications for now. - * - * This flag implies @FT_LOAD_NO_SCALE and @FT_LOAD_IGNORE_TRANSFORM. - * - * FT_LOAD_IGNORE_TRANSFORM :: - * Indicates that the transform matrix set by @FT_Set_Transform should - * be ignored. - * - * FT_LOAD_MONOCHROME :: - * This flag is used with @FT_LOAD_RENDER to indicate that you want to - * render an outline glyph to a 1-bit monochrome bitmap glyph, with - * 8~pixels packed into each byte of the bitmap data. - * - * Note that this has no effect on the hinting algorithm used. You - * should rather use @FT_LOAD_TARGET_MONO so that the - * monochrome-optimized hinting algorithm is used. - * - * FT_LOAD_LINEAR_DESIGN :: - * Indicates that the `linearHoriAdvance' and `linearVertAdvance' - * fields of @FT_GlyphSlotRec should be kept in font units. See - * @FT_GlyphSlotRec for details. - * - * FT_LOAD_NO_AUTOHINT :: - * Disable auto-hinter. See also the note below. - * - * @note: - * By default, hinting is enabled and the font's native hinter (see - * @FT_FACE_FLAG_HINTER) is preferred over the auto-hinter. You can - * disable hinting by setting @FT_LOAD_NO_HINTING or change the - * precedence by setting @FT_LOAD_FORCE_AUTOHINT. You can also set - * @FT_LOAD_NO_AUTOHINT in case you don't want the auto-hinter to be - * used at all. - * - * See the description of @FT_FACE_FLAG_TRICKY for a special exception - * (affecting only a handful of Asian fonts). - * - * Besides deciding which hinter to use, you can also decide which - * hinting algorithm to use. See @FT_LOAD_TARGET_XXX for details. - * - * Note that the auto-hinter needs a valid Unicode cmap (either a native - * one or synthesized by FreeType) for producing correct results. If a - * font provides an incorrect mapping (for example, assigning the - * character code U+005A, LATIN CAPITAL LETTER Z, to a glyph depicting a - * mathematical integral sign), the auto-hinter might produce useless - * results. - * - */ +} FT_Size_RequestRec; + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* FT_Size_Request */ +/* */ +/* <Description> */ +/* A handle to a size request structure. */ +/* */ +typedef struct FT_Size_RequestRec_ *FT_Size_Request; + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Request_Size */ +/* */ +/* <Description> */ +/* Resize the scale of the active @FT_Size object in a face. */ +/* */ +/* <InOut> */ +/* face :: A handle to a target face object. */ +/* */ +/* <Input> */ +/* req :: A pointer to a @FT_Size_RequestRec. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +/* <Note> */ +/* Although drivers may select the bitmap strike matching the */ +/* request, you should not rely on this if you intend to select a */ +/* particular bitmap strike. Use @FT_Select_Size instead in that */ +/* case. */ +/* */ +/* The relation between the requested size and the resulting glyph */ +/* size is dependent entirely on how the size is defined in the */ +/* source face. The font designer chooses the final size of each */ +/* glyph relative to this size. For more information refer to */ +/* `http://www.freetype.org/freetype2/docs/glyphs/glyphs-2.html' */ +/* */ +FT_EXPORT( FT_Error ) +FT_Request_Size( FT_Face face, + FT_Size_Request req ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Set_Char_Size */ +/* */ +/* <Description> */ +/* This function calls @FT_Request_Size to request the nominal size */ +/* (in points). */ +/* */ +/* <InOut> */ +/* face :: A handle to a target face object. */ +/* */ +/* <Input> */ +/* char_width :: The nominal width, in 26.6 fractional points. */ +/* */ +/* char_height :: The nominal height, in 26.6 fractional points. */ +/* */ +/* horz_resolution :: The horizontal resolution in dpi. */ +/* */ +/* vert_resolution :: The vertical resolution in dpi. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +/* <Note> */ +/* If either the character width or height is zero, it is set equal */ +/* to the other value. */ +/* */ +/* If either the horizontal or vertical resolution is zero, it is set */ +/* equal to the other value. */ +/* */ +/* A character width or height smaller than 1pt is set to 1pt; if */ +/* both resolution values are zero, they are set to 72dpi. */ +/* */ +/* Don't use this function if you are using the FreeType cache API. */ +/* */ +FT_EXPORT( FT_Error ) +FT_Set_Char_Size( FT_Face face, + FT_F26Dot6 char_width, + FT_F26Dot6 char_height, + FT_UInt horz_resolution, + FT_UInt vert_resolution ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Set_Pixel_Sizes */ +/* */ +/* <Description> */ +/* This function calls @FT_Request_Size to request the nominal size */ +/* (in pixels). */ +/* */ +/* <InOut> */ +/* face :: A handle to the target face object. */ +/* */ +/* <Input> */ +/* pixel_width :: The nominal width, in pixels. */ +/* */ +/* pixel_height :: The nominal height, in pixels. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +/* <Note> */ +/* You should not rely on the resulting glyphs matching, or being */ +/* constrained, to this pixel size. Refer to @FT_Request_Size to */ +/* understand how requested sizes relate to actual sizes. */ +/* */ +FT_EXPORT( FT_Error ) +FT_Set_Pixel_Sizes( FT_Face face, + FT_UInt pixel_width, + FT_UInt pixel_height ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Load_Glyph */ +/* */ +/* <Description> */ +/* A function used to load a single glyph into the glyph slot of a */ +/* face object. */ +/* */ +/* <InOut> */ +/* face :: A handle to the target face object where the glyph */ +/* is loaded. */ +/* */ +/* <Input> */ +/* glyph_index :: The index of the glyph in the font file. For */ +/* CID-keyed fonts (either in PS or in CFF format) */ +/* this argument specifies the CID value. */ +/* */ +/* load_flags :: A flag indicating what to load for this glyph. The */ +/* @FT_LOAD_XXX constants can be used to control the */ +/* glyph loading process (e.g., whether the outline */ +/* should be scaled, whether to load bitmaps or not, */ +/* whether to hint the outline, etc). */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +/* <Note> */ +/* The loaded glyph may be transformed. See @FT_Set_Transform for */ +/* the details. */ +/* */ +/* For subsetted CID-keyed fonts, `FT_Err_Invalid_Argument' is */ +/* returned for invalid CID values (this is, for CID values which */ +/* don't have a corresponding glyph in the font). See the discussion */ +/* of the @FT_FACE_FLAG_CID_KEYED flag for more details. */ +/* */ +FT_EXPORT( FT_Error ) +FT_Load_Glyph( FT_Face face, + FT_UInt glyph_index, + FT_Int32 load_flags ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Load_Char */ +/* */ +/* <Description> */ +/* A function used to load a single glyph into the glyph slot of a */ +/* face object, according to its character code. */ +/* */ +/* <InOut> */ +/* face :: A handle to a target face object where the glyph */ +/* is loaded. */ +/* */ +/* <Input> */ +/* char_code :: The glyph's character code, according to the */ +/* current charmap used in the face. */ +/* */ +/* load_flags :: A flag indicating what to load for this glyph. The */ +/* @FT_LOAD_XXX constants can be used to control the */ +/* glyph loading process (e.g., whether the outline */ +/* should be scaled, whether to load bitmaps or not, */ +/* whether to hint the outline, etc). */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +/* <Note> */ +/* This function simply calls @FT_Get_Char_Index and @FT_Load_Glyph. */ +/* */ +FT_EXPORT( FT_Error ) +FT_Load_Char( FT_Face face, + FT_ULong char_code, + FT_Int32 load_flags ); + + +/************************************************************************* + * + * @enum: + * FT_LOAD_XXX + * + * @description: + * A list of bit-field constants used with @FT_Load_Glyph to indicate + * what kind of operations to perform during glyph loading. + * + * @values: + * FT_LOAD_DEFAULT :: + * Corresponding to~0, this value is used as the default glyph load + * operation. In this case, the following happens: + * + * 1. FreeType looks for a bitmap for the glyph corresponding to the + * face's current size. If one is found, the function returns. + * The bitmap data can be accessed from the glyph slot (see note + * below). + * + * 2. If no embedded bitmap is searched or found, FreeType looks for a + * scalable outline. If one is found, it is loaded from the font + * file, scaled to device pixels, then `hinted' to the pixel grid + * in order to optimize it. The outline data can be accessed from + * the glyph slot (see note below). + * + * Note that by default, the glyph loader doesn't render outlines into + * bitmaps. The following flags are used to modify this default + * behaviour to more specific and useful cases. + * + * FT_LOAD_NO_SCALE :: + * Don't scale the loaded outline glyph but keep it in font units. + * + * This flag implies @FT_LOAD_NO_HINTING and @FT_LOAD_NO_BITMAP, and + * unsets @FT_LOAD_RENDER. + * + * If the font is `tricky' (see @FT_FACE_FLAG_TRICKY for more), using + * FT_LOAD_NO_SCALE usually yields meaningless outlines because the + * subglyphs must be scaled and positioned with hinting instructions. + * This can be solved by loading the font without FT_LOAD_NO_SCALE and + * setting the character size to `font->units_per_EM'. + * + * FT_LOAD_NO_HINTING :: + * Disable hinting. This generally generates `blurrier' bitmap glyphs + * when the glyph are rendered in any of the anti-aliased modes. See + * also the note below. + * + * This flag is implied by @FT_LOAD_NO_SCALE. + * + * FT_LOAD_RENDER :: + * Call @FT_Render_Glyph after the glyph is loaded. By default, the + * glyph is rendered in @FT_RENDER_MODE_NORMAL mode. This can be + * overridden by @FT_LOAD_TARGET_XXX or @FT_LOAD_MONOCHROME. + * + * This flag is unset by @FT_LOAD_NO_SCALE. + * + * FT_LOAD_NO_BITMAP :: + * Ignore bitmap strikes when loading. Bitmap-only fonts ignore this + * flag. + * + * @FT_LOAD_NO_SCALE always sets this flag. + * + * FT_LOAD_VERTICAL_LAYOUT :: + * Load the glyph for vertical text layout. In particular, the + * `advance' value in the @FT_GlyphSlotRec structure is set to the + * `vertAdvance' value of the `metrics' field. + * + * In case @FT_HAS_VERTICAL doesn't return true, you shouldn't use + * this flag currently. Reason is that in this case vertical metrics + * get synthesized, and those values are not always consistent across + * various font formats. + * + * FT_LOAD_FORCE_AUTOHINT :: + * Indicates that the auto-hinter is preferred over the font's native + * hinter. See also the note below. + * + * FT_LOAD_CROP_BITMAP :: + * Indicates that the font driver should crop the loaded bitmap glyph + * (i.e., remove all space around its black bits). Not all drivers + * implement this. + * + * FT_LOAD_PEDANTIC :: + * Indicates that the font driver should perform pedantic verifications + * during glyph loading. This is mostly used to detect broken glyphs + * in fonts. By default, FreeType tries to handle broken fonts also. + * + * In particular, errors from the TrueType bytecode engine are not + * passed to the application if this flag is not set; this might + * result in partially hinted or distorted glyphs in case a glyph's + * bytecode is buggy. + * + * FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH :: + * Ignored. Deprecated. + * + * FT_LOAD_NO_RECURSE :: + * This flag is only used internally. It merely indicates that the + * font driver should not load composite glyphs recursively. Instead, + * it should set the `num_subglyph' and `subglyphs' values of the + * glyph slot accordingly, and set `glyph->format' to + * @FT_GLYPH_FORMAT_COMPOSITE. + * + * The description of sub-glyphs is not available to client + * applications for now. + * + * This flag implies @FT_LOAD_NO_SCALE and @FT_LOAD_IGNORE_TRANSFORM. + * + * FT_LOAD_IGNORE_TRANSFORM :: + * Indicates that the transform matrix set by @FT_Set_Transform should + * be ignored. + * + * FT_LOAD_MONOCHROME :: + * This flag is used with @FT_LOAD_RENDER to indicate that you want to + * render an outline glyph to a 1-bit monochrome bitmap glyph, with + * 8~pixels packed into each byte of the bitmap data. + * + * Note that this has no effect on the hinting algorithm used. You + * should rather use @FT_LOAD_TARGET_MONO so that the + * monochrome-optimized hinting algorithm is used. + * + * FT_LOAD_LINEAR_DESIGN :: + * Indicates that the `linearHoriAdvance' and `linearVertAdvance' + * fields of @FT_GlyphSlotRec should be kept in font units. See + * @FT_GlyphSlotRec for details. + * + * FT_LOAD_NO_AUTOHINT :: + * Disable auto-hinter. See also the note below. + * + * @note: + * By default, hinting is enabled and the font's native hinter (see + * @FT_FACE_FLAG_HINTER) is preferred over the auto-hinter. You can + * disable hinting by setting @FT_LOAD_NO_HINTING or change the + * precedence by setting @FT_LOAD_FORCE_AUTOHINT. You can also set + * @FT_LOAD_NO_AUTOHINT in case you don't want the auto-hinter to be + * used at all. + * + * See the description of @FT_FACE_FLAG_TRICKY for a special exception + * (affecting only a handful of Asian fonts). + * + * Besides deciding which hinter to use, you can also decide which + * hinting algorithm to use. See @FT_LOAD_TARGET_XXX for details. + * + * Note that the auto-hinter needs a valid Unicode cmap (either a native + * one or synthesized by FreeType) for producing correct results. If a + * font provides an incorrect mapping (for example, assigning the + * character code U+005A, LATIN CAPITAL LETTER Z, to a glyph depicting a + * mathematical integral sign), the auto-hinter might produce useless + * results. + * + */ #define FT_LOAD_DEFAULT 0x0 #define FT_LOAD_NO_SCALE ( 1L << 0 ) #define FT_LOAD_NO_HINTING ( 1L << 1 ) @@ -2561,78 +2549,78 @@ FT_BEGIN_HEADER #define FT_LOAD_LINEAR_DESIGN ( 1L << 13 ) #define FT_LOAD_NO_AUTOHINT ( 1L << 15 ) - /* */ +/* */ - /* used internally only by certain font drivers! */ +/* used internally only by certain font drivers! */ #define FT_LOAD_ADVANCE_ONLY ( 1L << 8 ) #define FT_LOAD_SBITS_ONLY ( 1L << 14 ) - /************************************************************************** - * - * @enum: - * FT_LOAD_TARGET_XXX - * - * @description: - * A list of values that are used to select a specific hinting algorithm - * to use by the hinter. You should OR one of these values to your - * `load_flags' when calling @FT_Load_Glyph. - * - * Note that font's native hinters may ignore the hinting algorithm you - * have specified (e.g., the TrueType bytecode interpreter). You can set - * @FT_LOAD_FORCE_AUTOHINT to ensure that the auto-hinter is used. - * - * Also note that @FT_LOAD_TARGET_LIGHT is an exception, in that it - * always implies @FT_LOAD_FORCE_AUTOHINT. - * - * @values: - * FT_LOAD_TARGET_NORMAL :: - * This corresponds to the default hinting algorithm, optimized for - * standard gray-level rendering. For monochrome output, use - * @FT_LOAD_TARGET_MONO instead. - * - * FT_LOAD_TARGET_LIGHT :: - * A lighter hinting algorithm for non-monochrome modes. Many - * generated glyphs are more fuzzy but better resemble its original - * shape. A bit like rendering on Mac OS~X. - * - * As a special exception, this target implies @FT_LOAD_FORCE_AUTOHINT. - * - * FT_LOAD_TARGET_MONO :: - * Strong hinting algorithm that should only be used for monochrome - * output. The result is probably unpleasant if the glyph is rendered - * in non-monochrome modes. - * - * FT_LOAD_TARGET_LCD :: - * A variant of @FT_LOAD_TARGET_NORMAL optimized for horizontally - * decimated LCD displays. - * - * FT_LOAD_TARGET_LCD_V :: - * A variant of @FT_LOAD_TARGET_NORMAL optimized for vertically - * decimated LCD displays. - * - * @note: - * You should use only _one_ of the FT_LOAD_TARGET_XXX values in your - * `load_flags'. They can't be ORed. - * - * If @FT_LOAD_RENDER is also set, the glyph is rendered in the - * corresponding mode (i.e., the mode which matches the used algorithm - * best). An exeption is FT_LOAD_TARGET_MONO since it implies - * @FT_LOAD_MONOCHROME. - * - * You can use a hinting algorithm that doesn't correspond to the same - * rendering mode. As an example, it is possible to use the `light' - * hinting algorithm and have the results rendered in horizontal LCD - * pixel mode, with code like - * - * { - * FT_Load_Glyph( face, glyph_index, - * load_flags | FT_LOAD_TARGET_LIGHT ); - * - * FT_Render_Glyph( face->glyph, FT_RENDER_MODE_LCD ); - * } - * - */ +/************************************************************************** + * + * @enum: + * FT_LOAD_TARGET_XXX + * + * @description: + * A list of values that are used to select a specific hinting algorithm + * to use by the hinter. You should OR one of these values to your + * `load_flags' when calling @FT_Load_Glyph. + * + * Note that font's native hinters may ignore the hinting algorithm you + * have specified (e.g., the TrueType bytecode interpreter). You can set + * @FT_LOAD_FORCE_AUTOHINT to ensure that the auto-hinter is used. + * + * Also note that @FT_LOAD_TARGET_LIGHT is an exception, in that it + * always implies @FT_LOAD_FORCE_AUTOHINT. + * + * @values: + * FT_LOAD_TARGET_NORMAL :: + * This corresponds to the default hinting algorithm, optimized for + * standard gray-level rendering. For monochrome output, use + * @FT_LOAD_TARGET_MONO instead. + * + * FT_LOAD_TARGET_LIGHT :: + * A lighter hinting algorithm for non-monochrome modes. Many + * generated glyphs are more fuzzy but better resemble its original + * shape. A bit like rendering on Mac OS~X. + * + * As a special exception, this target implies @FT_LOAD_FORCE_AUTOHINT. + * + * FT_LOAD_TARGET_MONO :: + * Strong hinting algorithm that should only be used for monochrome + * output. The result is probably unpleasant if the glyph is rendered + * in non-monochrome modes. + * + * FT_LOAD_TARGET_LCD :: + * A variant of @FT_LOAD_TARGET_NORMAL optimized for horizontally + * decimated LCD displays. + * + * FT_LOAD_TARGET_LCD_V :: + * A variant of @FT_LOAD_TARGET_NORMAL optimized for vertically + * decimated LCD displays. + * + * @note: + * You should use only _one_ of the FT_LOAD_TARGET_XXX values in your + * `load_flags'. They can't be ORed. + * + * If @FT_LOAD_RENDER is also set, the glyph is rendered in the + * corresponding mode (i.e., the mode which matches the used algorithm + * best). An exeption is FT_LOAD_TARGET_MONO since it implies + * @FT_LOAD_MONOCHROME. + * + * You can use a hinting algorithm that doesn't correspond to the same + * rendering mode. As an example, it is possible to use the `light' + * hinting algorithm and have the results rendered in horizontal LCD + * pixel mode, with code like + * + * { + * FT_Load_Glyph( face, glyph_index, + * load_flags | FT_LOAD_TARGET_LIGHT ); + * + * FT_Render_Glyph( face->glyph, FT_RENDER_MODE_LCD ); + * } + * + */ #define FT_LOAD_TARGET_( x ) ( (FT_Int32)( (x) & 15 ) << 16 ) #define FT_LOAD_TARGET_NORMAL FT_LOAD_TARGET_( FT_RENDER_MODE_NORMAL ) @@ -2642,110 +2630,109 @@ FT_BEGIN_HEADER #define FT_LOAD_TARGET_LCD_V FT_LOAD_TARGET_( FT_RENDER_MODE_LCD_V ) - /************************************************************************** - * - * @macro: - * FT_LOAD_TARGET_MODE - * - * @description: - * Return the @FT_Render_Mode corresponding to a given - * @FT_LOAD_TARGET_XXX value. - * - */ +/************************************************************************** + * + * @macro: + * FT_LOAD_TARGET_MODE + * + * @description: + * Return the @FT_Render_Mode corresponding to a given + * @FT_LOAD_TARGET_XXX value. + * + */ #define FT_LOAD_TARGET_MODE( x ) ( (FT_Render_Mode)( ( (x) >> 16 ) & 15 ) ) - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Set_Transform */ - /* */ - /* <Description> */ - /* A function used to set the transformation that is applied to glyph */ - /* images when they are loaded into a glyph slot through */ - /* @FT_Load_Glyph. */ - /* */ - /* <InOut> */ - /* face :: A handle to the source face object. */ - /* */ - /* <Input> */ - /* matrix :: A pointer to the transformation's 2x2 matrix. Use~0 for */ - /* the identity matrix. */ - /* delta :: A pointer to the translation vector. Use~0 for the null */ - /* vector. */ - /* */ - /* <Note> */ - /* The transformation is only applied to scalable image formats after */ - /* the glyph has been loaded. It means that hinting is unaltered by */ - /* the transformation and is performed on the character size given in */ - /* the last call to @FT_Set_Char_Size or @FT_Set_Pixel_Sizes. */ - /* */ - /* Note that this also transforms the `face.glyph.advance' field, but */ - /* *not* the values in `face.glyph.metrics'. */ - /* */ - FT_EXPORT( void ) - FT_Set_Transform( FT_Face face, - FT_Matrix* matrix, - FT_Vector* delta ); - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_Render_Mode */ - /* */ - /* <Description> */ - /* An enumeration type that lists the render modes supported by */ - /* FreeType~2. Each mode corresponds to a specific type of scanline */ - /* conversion performed on the outline. */ - /* */ - /* For bitmap fonts and embedded bitmaps the `bitmap->pixel_mode' */ - /* field in the @FT_GlyphSlotRec structure gives the format of the */ - /* returned bitmap. */ - /* */ - /* All modes except @FT_RENDER_MODE_MONO use 256 levels of opacity. */ - /* */ - /* <Values> */ - /* FT_RENDER_MODE_NORMAL :: */ - /* This is the default render mode; it corresponds to 8-bit */ - /* anti-aliased bitmaps. */ - /* */ - /* FT_RENDER_MODE_LIGHT :: */ - /* This is equivalent to @FT_RENDER_MODE_NORMAL. It is only */ - /* defined as a separate value because render modes are also used */ - /* indirectly to define hinting algorithm selectors. See */ - /* @FT_LOAD_TARGET_XXX for details. */ - /* */ - /* FT_RENDER_MODE_MONO :: */ - /* This mode corresponds to 1-bit bitmaps (with 2~levels of */ - /* opacity). */ - /* */ - /* FT_RENDER_MODE_LCD :: */ - /* This mode corresponds to horizontal RGB and BGR sub-pixel */ - /* displays like LCD screens. It produces 8-bit bitmaps that are */ - /* 3~times the width of the original glyph outline in pixels, and */ - /* which use the @FT_PIXEL_MODE_LCD mode. */ - /* */ - /* FT_RENDER_MODE_LCD_V :: */ - /* This mode corresponds to vertical RGB and BGR sub-pixel displays */ - /* (like PDA screens, rotated LCD displays, etc.). It produces */ - /* 8-bit bitmaps that are 3~times the height of the original */ - /* glyph outline in pixels and use the @FT_PIXEL_MODE_LCD_V mode. */ - /* */ - /* <Note> */ - /* The LCD-optimized glyph bitmaps produced by FT_Render_Glyph can be */ - /* filtered to reduce color-fringes by using @FT_Library_SetLcdFilter */ - /* (not active in the default builds). It is up to the caller to */ - /* either call @FT_Library_SetLcdFilter (if available) or do the */ - /* filtering itself. */ - /* */ - /* The selected render mode only affects vector glyphs of a font. */ - /* Embedded bitmaps often have a different pixel mode like */ - /* @FT_PIXEL_MODE_MONO. You can use @FT_Bitmap_Convert to transform */ - /* them into 8-bit pixmaps. */ - /* */ - typedef enum FT_Render_Mode_ - { +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Set_Transform */ +/* */ +/* <Description> */ +/* A function used to set the transformation that is applied to glyph */ +/* images when they are loaded into a glyph slot through */ +/* @FT_Load_Glyph. */ +/* */ +/* <InOut> */ +/* face :: A handle to the source face object. */ +/* */ +/* <Input> */ +/* matrix :: A pointer to the transformation's 2x2 matrix. Use~0 for */ +/* the identity matrix. */ +/* delta :: A pointer to the translation vector. Use~0 for the null */ +/* vector. */ +/* */ +/* <Note> */ +/* The transformation is only applied to scalable image formats after */ +/* the glyph has been loaded. It means that hinting is unaltered by */ +/* the transformation and is performed on the character size given in */ +/* the last call to @FT_Set_Char_Size or @FT_Set_Pixel_Sizes. */ +/* */ +/* Note that this also transforms the `face.glyph.advance' field, but */ +/* *not* the values in `face.glyph.metrics'. */ +/* */ +FT_EXPORT( void ) +FT_Set_Transform( FT_Face face, + FT_Matrix* matrix, + FT_Vector* delta ); + + +/*************************************************************************/ +/* */ +/* <Enum> */ +/* FT_Render_Mode */ +/* */ +/* <Description> */ +/* An enumeration type that lists the render modes supported by */ +/* FreeType~2. Each mode corresponds to a specific type of scanline */ +/* conversion performed on the outline. */ +/* */ +/* For bitmap fonts and embedded bitmaps the `bitmap->pixel_mode' */ +/* field in the @FT_GlyphSlotRec structure gives the format of the */ +/* returned bitmap. */ +/* */ +/* All modes except @FT_RENDER_MODE_MONO use 256 levels of opacity. */ +/* */ +/* <Values> */ +/* FT_RENDER_MODE_NORMAL :: */ +/* This is the default render mode; it corresponds to 8-bit */ +/* anti-aliased bitmaps. */ +/* */ +/* FT_RENDER_MODE_LIGHT :: */ +/* This is equivalent to @FT_RENDER_MODE_NORMAL. It is only */ +/* defined as a separate value because render modes are also used */ +/* indirectly to define hinting algorithm selectors. See */ +/* @FT_LOAD_TARGET_XXX for details. */ +/* */ +/* FT_RENDER_MODE_MONO :: */ +/* This mode corresponds to 1-bit bitmaps (with 2~levels of */ +/* opacity). */ +/* */ +/* FT_RENDER_MODE_LCD :: */ +/* This mode corresponds to horizontal RGB and BGR sub-pixel */ +/* displays like LCD screens. It produces 8-bit bitmaps that are */ +/* 3~times the width of the original glyph outline in pixels, and */ +/* which use the @FT_PIXEL_MODE_LCD mode. */ +/* */ +/* FT_RENDER_MODE_LCD_V :: */ +/* This mode corresponds to vertical RGB and BGR sub-pixel displays */ +/* (like PDA screens, rotated LCD displays, etc.). It produces */ +/* 8-bit bitmaps that are 3~times the height of the original */ +/* glyph outline in pixels and use the @FT_PIXEL_MODE_LCD_V mode. */ +/* */ +/* <Note> */ +/* The LCD-optimized glyph bitmaps produced by FT_Render_Glyph can be */ +/* filtered to reduce color-fringes by using @FT_Library_SetLcdFilter */ +/* (not active in the default builds). It is up to the caller to */ +/* either call @FT_Library_SetLcdFilter (if available) or do the */ +/* filtering itself. */ +/* */ +/* The selected render mode only affects vector glyphs of a font. */ +/* Embedded bitmaps often have a different pixel mode like */ +/* @FT_PIXEL_MODE_MONO. You can use @FT_Bitmap_Convert to transform */ +/* them into 8-bit pixmaps. */ +/* */ +typedef enum FT_Render_Mode_ { FT_RENDER_MODE_NORMAL = 0, FT_RENDER_MODE_LIGHT, FT_RENDER_MODE_MONO, @@ -2754,510 +2741,509 @@ FT_BEGIN_HEADER FT_RENDER_MODE_MAX - } FT_Render_Mode; - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* ft_render_mode_xxx */ - /* */ - /* <Description> */ - /* These constants are deprecated. Use the corresponding */ - /* @FT_Render_Mode values instead. */ - /* */ - /* <Values> */ - /* ft_render_mode_normal :: see @FT_RENDER_MODE_NORMAL */ - /* ft_render_mode_mono :: see @FT_RENDER_MODE_MONO */ - /* */ +} FT_Render_Mode; + + +/*************************************************************************/ +/* */ +/* <Enum> */ +/* ft_render_mode_xxx */ +/* */ +/* <Description> */ +/* These constants are deprecated. Use the corresponding */ +/* @FT_Render_Mode values instead. */ +/* */ +/* <Values> */ +/* ft_render_mode_normal :: see @FT_RENDER_MODE_NORMAL */ +/* ft_render_mode_mono :: see @FT_RENDER_MODE_MONO */ +/* */ #define ft_render_mode_normal FT_RENDER_MODE_NORMAL #define ft_render_mode_mono FT_RENDER_MODE_MONO - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Render_Glyph */ - /* */ - /* <Description> */ - /* Convert a given glyph image to a bitmap. It does so by inspecting */ - /* the glyph image format, finding the relevant renderer, and */ - /* invoking it. */ - /* */ - /* <InOut> */ - /* slot :: A handle to the glyph slot containing the image to */ - /* convert. */ - /* */ - /* <Input> */ - /* render_mode :: This is the render mode used to render the glyph */ - /* image into a bitmap. See @FT_Render_Mode for a */ - /* list of possible values. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Render_Glyph( FT_GlyphSlot slot, - FT_Render_Mode render_mode ); - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_Kerning_Mode */ - /* */ - /* <Description> */ - /* An enumeration used to specify which kerning values to return in */ - /* @FT_Get_Kerning. */ - /* */ - /* <Values> */ - /* FT_KERNING_DEFAULT :: Return scaled and grid-fitted kerning */ - /* distances (value is~0). */ - /* */ - /* FT_KERNING_UNFITTED :: Return scaled but un-grid-fitted kerning */ - /* distances. */ - /* */ - /* FT_KERNING_UNSCALED :: Return the kerning vector in original font */ - /* units. */ - /* */ - typedef enum FT_Kerning_Mode_ - { +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Render_Glyph */ +/* */ +/* <Description> */ +/* Convert a given glyph image to a bitmap. It does so by inspecting */ +/* the glyph image format, finding the relevant renderer, and */ +/* invoking it. */ +/* */ +/* <InOut> */ +/* slot :: A handle to the glyph slot containing the image to */ +/* convert. */ +/* */ +/* <Input> */ +/* render_mode :: This is the render mode used to render the glyph */ +/* image into a bitmap. See @FT_Render_Mode for a */ +/* list of possible values. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +FT_EXPORT( FT_Error ) +FT_Render_Glyph( FT_GlyphSlot slot, + FT_Render_Mode render_mode ); + + +/*************************************************************************/ +/* */ +/* <Enum> */ +/* FT_Kerning_Mode */ +/* */ +/* <Description> */ +/* An enumeration used to specify which kerning values to return in */ +/* @FT_Get_Kerning. */ +/* */ +/* <Values> */ +/* FT_KERNING_DEFAULT :: Return scaled and grid-fitted kerning */ +/* distances (value is~0). */ +/* */ +/* FT_KERNING_UNFITTED :: Return scaled but un-grid-fitted kerning */ +/* distances. */ +/* */ +/* FT_KERNING_UNSCALED :: Return the kerning vector in original font */ +/* units. */ +/* */ +typedef enum FT_Kerning_Mode_ { FT_KERNING_DEFAULT = 0, FT_KERNING_UNFITTED, FT_KERNING_UNSCALED - } FT_Kerning_Mode; +} FT_Kerning_Mode; - /*************************************************************************/ - /* */ - /* <Const> */ - /* ft_kerning_default */ - /* */ - /* <Description> */ - /* This constant is deprecated. Please use @FT_KERNING_DEFAULT */ - /* instead. */ - /* */ +/*************************************************************************/ +/* */ +/* <Const> */ +/* ft_kerning_default */ +/* */ +/* <Description> */ +/* This constant is deprecated. Please use @FT_KERNING_DEFAULT */ +/* instead. */ +/* */ #define ft_kerning_default FT_KERNING_DEFAULT - /*************************************************************************/ - /* */ - /* <Const> */ - /* ft_kerning_unfitted */ - /* */ - /* <Description> */ - /* This constant is deprecated. Please use @FT_KERNING_UNFITTED */ - /* instead. */ - /* */ +/*************************************************************************/ +/* */ +/* <Const> */ +/* ft_kerning_unfitted */ +/* */ +/* <Description> */ +/* This constant is deprecated. Please use @FT_KERNING_UNFITTED */ +/* instead. */ +/* */ #define ft_kerning_unfitted FT_KERNING_UNFITTED - /*************************************************************************/ - /* */ - /* <Const> */ - /* ft_kerning_unscaled */ - /* */ - /* <Description> */ - /* This constant is deprecated. Please use @FT_KERNING_UNSCALED */ - /* instead. */ - /* */ +/*************************************************************************/ +/* */ +/* <Const> */ +/* ft_kerning_unscaled */ +/* */ +/* <Description> */ +/* This constant is deprecated. Please use @FT_KERNING_UNSCALED */ +/* instead. */ +/* */ #define ft_kerning_unscaled FT_KERNING_UNSCALED - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Kerning */ - /* */ - /* <Description> */ - /* Return the kerning vector between two glyphs of a same face. */ - /* */ - /* <Input> */ - /* face :: A handle to a source face object. */ - /* */ - /* left_glyph :: The index of the left glyph in the kern pair. */ - /* */ - /* right_glyph :: The index of the right glyph in the kern pair. */ - /* */ - /* kern_mode :: See @FT_Kerning_Mode for more information. */ - /* Determines the scale and dimension of the returned */ - /* kerning vector. */ - /* */ - /* <Output> */ - /* 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. */ - /* */ - /* <Note> */ - /* Only horizontal layouts (left-to-right & right-to-left) are */ - /* supported by this method. Other layouts, or more sophisticated */ - /* kernings, are out of the scope of this API function -- they can be */ - /* implemented through format-specific interfaces. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Get_Kerning( FT_Face face, - FT_UInt left_glyph, - FT_UInt right_glyph, - FT_UInt kern_mode, - FT_Vector *akerning ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Track_Kerning */ - /* */ - /* <Description> */ - /* Return the track kerning for a given face object at a given size. */ - /* */ - /* <Input> */ - /* face :: A handle to a source face object. */ - /* */ - /* point_size :: The point size in 16.16 fractional points. */ - /* */ - /* degree :: The degree of tightness. Increasingly negative */ - /* values represent tighter track kerning, while */ - /* increasingly positive values represent looser track */ - /* kerning. Value zero means no track kerning. */ - /* */ - /* <Output> */ - /* akerning :: The kerning in 16.16 fractional points, to be */ - /* uniformly applied between all glyphs. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* Currently, only the Type~1 font driver supports track kerning, */ - /* using data from AFM files (if attached with @FT_Attach_File or */ - /* @FT_Attach_Stream). */ - /* */ - /* Only very few AFM files come with track kerning data; please refer */ - /* to the Adobe's AFM specification for more details. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Get_Track_Kerning( FT_Face face, - FT_Fixed point_size, - FT_Int degree, - FT_Fixed* akerning ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Glyph_Name */ - /* */ - /* <Description> */ - /* Retrieve the ASCII name of a given glyph in a face. This only */ - /* works for those faces where @FT_HAS_GLYPH_NAMES(face) returns~1. */ - /* */ - /* <Input> */ - /* face :: A handle to a source face object. */ - /* */ - /* glyph_index :: The glyph index. */ - /* */ - /* buffer_max :: The maximum number of bytes available in the */ - /* buffer. */ - /* */ - /* <Output> */ - /* buffer :: A pointer to a target buffer where the name is */ - /* copied to. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* An error is returned if the face doesn't provide glyph names or if */ - /* the glyph index is invalid. In all cases of failure, the first */ - /* byte of `buffer' is set to~0 to indicate an empty name. */ - /* */ - /* The glyph name is truncated to fit within the buffer if it is too */ - /* long. The returned string is always zero-terminated. */ - /* */ - /* Be aware that FreeType reorders glyph indices internally so that */ - /* glyph index~0 always corresponds to the `missing glyph' (called */ - /* `.notdef'). */ - /* */ - /* This function is not compiled within the library if the config */ - /* macro `FT_CONFIG_OPTION_NO_GLYPH_NAMES' is defined in */ - /* `include/freetype/config/ftoptions.h'. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Get_Glyph_Name( FT_Face face, - FT_UInt glyph_index, - FT_Pointer buffer, - FT_UInt buffer_max ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Postscript_Name */ - /* */ - /* <Description> */ - /* Retrieve the ASCII PostScript name of a given face, if available. */ - /* 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 unavailable. */ - /* */ - /* <Note> */ - /* The returned pointer is owned by the face and is destroyed with */ - /* it. */ - /* */ - FT_EXPORT( const char* ) - FT_Get_Postscript_Name( FT_Face face ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Select_Charmap */ - /* */ - /* <Description> */ - /* Select a given charmap by its encoding tag (as listed in */ - /* `freetype.h'). */ - /* */ - /* <InOut> */ - /* face :: A handle to the source face object. */ - /* */ - /* <Input> */ - /* encoding :: A handle to the selected encoding. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* This function returns an error if no charmap in the face */ - /* corresponds to the encoding queried here. */ - /* */ - /* Because many fonts contain more than a single cmap for Unicode */ - /* encoding, this function has some special code to select the one */ - /* which covers Unicode best (`best' in the sense that a UCS-4 cmap */ - /* is preferred to a UCS-2 cmap). It is thus preferable to */ - /* @FT_Set_Charmap in this case. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Select_Charmap( FT_Face face, - FT_Encoding encoding ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Set_Charmap */ - /* */ - /* <Description> */ - /* Select a given charmap for character code to glyph index mapping. */ - /* */ - /* <InOut> */ - /* face :: A handle to the source face object. */ - /* */ - /* <Input> */ - /* charmap :: A handle to the selected charmap. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* This function returns an error if the charmap is not part of */ - /* the face (i.e., if it is not listed in the `face->charmaps' */ - /* table). */ - /* */ - /* It also fails if a type~14 charmap is selected. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Set_Charmap( FT_Face face, - 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. If an error occurs, -1 is returned. - * - */ - FT_EXPORT( FT_Int ) - FT_Get_Charmap_Index( FT_CharMap charmap ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Char_Index */ - /* */ - /* <Description> */ - /* Return the glyph index of a given character code. This function */ - /* uses a charmap object to do the mapping. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face object. */ - /* */ - /* charcode :: The character code. */ - /* */ - /* <Return> */ - /* The glyph index. 0~means `undefined character code'. */ - /* */ - /* <Note> */ - /* If you use FreeType to manipulate the contents of font files */ - /* directly, be aware that the glyph index returned by this function */ - /* doesn't always correspond to the internal indices used within the */ - /* file. This is done to ensure that value~0 always corresponds to */ - /* the `missing glyph'. If the first glyph is not named `.notdef', */ - /* then for Type~1 and Type~42 fonts, `.notdef' will be moved into */ - /* the glyph ID~0 position, and whatever was there will be moved to */ - /* the position `.notdef' had. For Type~1 fonts, if there is no */ - /* `.notdef' glyph at all, then one will be created at index~0 and */ - /* whatever was there will be moved to the last index -- Type~42 */ - /* fonts are considered invalid under this condition. */ - /* */ - FT_EXPORT( FT_UInt ) - FT_Get_Char_Index( FT_Face face, - FT_ULong charcode ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_First_Char */ - /* */ - /* <Description> */ - /* This function is used to return the first character code in the */ - /* current charmap of a given face. It also returns the */ - /* corresponding glyph index. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face object. */ - /* */ - /* <Output> */ - /* agindex :: Glyph index of first character code. 0~if charmap is */ - /* empty. */ - /* */ - /* <Return> */ - /* The charmap's first character code. */ - /* */ - /* <Note> */ - /* You should use this function with @FT_Get_Next_Char to be able to */ - /* parse all character codes available in a given charmap. The code */ - /* should look like this: */ - /* */ - /* { */ - /* FT_ULong charcode; */ - /* FT_UInt gindex; */ - /* */ - /* */ - /* charcode = FT_Get_First_Char( face, &gindex ); */ - /* while ( gindex != 0 ) */ - /* { */ - /* ... do something with (charcode,gindex) pair ... */ - /* */ - /* charcode = FT_Get_Next_Char( face, charcode, &gindex ); */ - /* } */ - /* } */ - /* */ - /* Note that `*agindex' is set to~0 if the charmap is empty. The */ - /* result itself can be~0 in two cases: if the charmap is empty or */ - /* if the value~0 is the first valid character code. */ - /* */ - FT_EXPORT( FT_ULong ) - FT_Get_First_Char( FT_Face face, - FT_UInt *agindex ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Next_Char */ - /* */ - /* <Description> */ - /* This function is used to return the next character code in the */ - /* current charmap of a given face following the value `char_code', */ - /* as well as the corresponding glyph index. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face object. */ - /* char_code :: The starting character code. */ - /* */ - /* <Output> */ - /* agindex :: Glyph index of next character code. 0~if charmap */ - /* is empty. */ - /* */ - /* <Return> */ - /* The charmap's next character code. */ - /* */ - /* <Note> */ - /* You should use this function with @FT_Get_First_Char to walk */ - /* over all character codes available in a given charmap. See the */ - /* note for this function for a simple code example. */ - /* */ - /* Note that `*agindex' is set to~0 when there are no more codes in */ - /* the charmap. */ - /* */ - FT_EXPORT( FT_ULong ) - FT_Get_Next_Char( FT_Face face, - FT_ULong char_code, - FT_UInt *agindex ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Name_Index */ - /* */ - /* <Description> */ - /* Return the glyph index of a given glyph name. This function uses */ - /* driver specific objects to do the translation. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face object. */ - /* */ - /* glyph_name :: The glyph name. */ - /* */ - /* <Return> */ - /* The glyph index. 0~means `undefined character code'. */ - /* */ - FT_EXPORT( FT_UInt ) - FT_Get_Name_Index( FT_Face face, - FT_String* glyph_name ); - - - /************************************************************************* - * - * @macro: - * FT_SUBGLYPH_FLAG_XXX - * - * @description: - * A list of constants used to describe subglyphs. Please refer to the - * TrueType specification for the meaning of the various flags. - * - * @values: - * FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS :: - * FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES :: - * FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID :: - * FT_SUBGLYPH_FLAG_SCALE :: - * FT_SUBGLYPH_FLAG_XY_SCALE :: - * FT_SUBGLYPH_FLAG_2X2 :: - * FT_SUBGLYPH_FLAG_USE_MY_METRICS :: - * - */ +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Get_Kerning */ +/* */ +/* <Description> */ +/* Return the kerning vector between two glyphs of a same face. */ +/* */ +/* <Input> */ +/* face :: A handle to a source face object. */ +/* */ +/* left_glyph :: The index of the left glyph in the kern pair. */ +/* */ +/* right_glyph :: The index of the right glyph in the kern pair. */ +/* */ +/* kern_mode :: See @FT_Kerning_Mode for more information. */ +/* Determines the scale and dimension of the returned */ +/* kerning vector. */ +/* */ +/* <Output> */ +/* 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. */ +/* */ +/* <Note> */ +/* Only horizontal layouts (left-to-right & right-to-left) are */ +/* supported by this method. Other layouts, or more sophisticated */ +/* kernings, are out of the scope of this API function -- they can be */ +/* implemented through format-specific interfaces. */ +/* */ +FT_EXPORT( FT_Error ) +FT_Get_Kerning( FT_Face face, + FT_UInt left_glyph, + FT_UInt right_glyph, + FT_UInt kern_mode, + FT_Vector *akerning ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Get_Track_Kerning */ +/* */ +/* <Description> */ +/* Return the track kerning for a given face object at a given size. */ +/* */ +/* <Input> */ +/* face :: A handle to a source face object. */ +/* */ +/* point_size :: The point size in 16.16 fractional points. */ +/* */ +/* degree :: The degree of tightness. Increasingly negative */ +/* values represent tighter track kerning, while */ +/* increasingly positive values represent looser track */ +/* kerning. Value zero means no track kerning. */ +/* */ +/* <Output> */ +/* akerning :: The kerning in 16.16 fractional points, to be */ +/* uniformly applied between all glyphs. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +/* <Note> */ +/* Currently, only the Type~1 font driver supports track kerning, */ +/* using data from AFM files (if attached with @FT_Attach_File or */ +/* @FT_Attach_Stream). */ +/* */ +/* Only very few AFM files come with track kerning data; please refer */ +/* to the Adobe's AFM specification for more details. */ +/* */ +FT_EXPORT( FT_Error ) +FT_Get_Track_Kerning( FT_Face face, + FT_Fixed point_size, + FT_Int degree, + FT_Fixed* akerning ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Get_Glyph_Name */ +/* */ +/* <Description> */ +/* Retrieve the ASCII name of a given glyph in a face. This only */ +/* works for those faces where @FT_HAS_GLYPH_NAMES(face) returns~1. */ +/* */ +/* <Input> */ +/* face :: A handle to a source face object. */ +/* */ +/* glyph_index :: The glyph index. */ +/* */ +/* buffer_max :: The maximum number of bytes available in the */ +/* buffer. */ +/* */ +/* <Output> */ +/* buffer :: A pointer to a target buffer where the name is */ +/* copied to. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +/* <Note> */ +/* An error is returned if the face doesn't provide glyph names or if */ +/* the glyph index is invalid. In all cases of failure, the first */ +/* byte of `buffer' is set to~0 to indicate an empty name. */ +/* */ +/* The glyph name is truncated to fit within the buffer if it is too */ +/* long. The returned string is always zero-terminated. */ +/* */ +/* Be aware that FreeType reorders glyph indices internally so that */ +/* glyph index~0 always corresponds to the `missing glyph' (called */ +/* `.notdef'). */ +/* */ +/* This function is not compiled within the library if the config */ +/* macro `FT_CONFIG_OPTION_NO_GLYPH_NAMES' is defined in */ +/* `include/freetype/config/ftoptions.h'. */ +/* */ +FT_EXPORT( FT_Error ) +FT_Get_Glyph_Name( FT_Face face, + FT_UInt glyph_index, + FT_Pointer buffer, + FT_UInt buffer_max ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Get_Postscript_Name */ +/* */ +/* <Description> */ +/* Retrieve the ASCII PostScript name of a given face, if available. */ +/* 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 unavailable. */ +/* */ +/* <Note> */ +/* The returned pointer is owned by the face and is destroyed with */ +/* it. */ +/* */ +FT_EXPORT( const char* ) +FT_Get_Postscript_Name( FT_Face face ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Select_Charmap */ +/* */ +/* <Description> */ +/* Select a given charmap by its encoding tag (as listed in */ +/* `freetype.h'). */ +/* */ +/* <InOut> */ +/* face :: A handle to the source face object. */ +/* */ +/* <Input> */ +/* encoding :: A handle to the selected encoding. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +/* <Note> */ +/* This function returns an error if no charmap in the face */ +/* corresponds to the encoding queried here. */ +/* */ +/* Because many fonts contain more than a single cmap for Unicode */ +/* encoding, this function has some special code to select the one */ +/* which covers Unicode best (`best' in the sense that a UCS-4 cmap */ +/* is preferred to a UCS-2 cmap). It is thus preferable to */ +/* @FT_Set_Charmap in this case. */ +/* */ +FT_EXPORT( FT_Error ) +FT_Select_Charmap( FT_Face face, + FT_Encoding encoding ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Set_Charmap */ +/* */ +/* <Description> */ +/* Select a given charmap for character code to glyph index mapping. */ +/* */ +/* <InOut> */ +/* face :: A handle to the source face object. */ +/* */ +/* <Input> */ +/* charmap :: A handle to the selected charmap. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +/* <Note> */ +/* This function returns an error if the charmap is not part of */ +/* the face (i.e., if it is not listed in the `face->charmaps' */ +/* table). */ +/* */ +/* It also fails if a type~14 charmap is selected. */ +/* */ +FT_EXPORT( FT_Error ) +FT_Set_Charmap( FT_Face face, + 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. If an error occurs, -1 is returned. + * + */ +FT_EXPORT( FT_Int ) +FT_Get_Charmap_Index( FT_CharMap charmap ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Get_Char_Index */ +/* */ +/* <Description> */ +/* Return the glyph index of a given character code. This function */ +/* uses a charmap object to do the mapping. */ +/* */ +/* <Input> */ +/* face :: A handle to the source face object. */ +/* */ +/* charcode :: The character code. */ +/* */ +/* <Return> */ +/* The glyph index. 0~means `undefined character code'. */ +/* */ +/* <Note> */ +/* If you use FreeType to manipulate the contents of font files */ +/* directly, be aware that the glyph index returned by this function */ +/* doesn't always correspond to the internal indices used within the */ +/* file. This is done to ensure that value~0 always corresponds to */ +/* the `missing glyph'. If the first glyph is not named `.notdef', */ +/* then for Type~1 and Type~42 fonts, `.notdef' will be moved into */ +/* the glyph ID~0 position, and whatever was there will be moved to */ +/* the position `.notdef' had. For Type~1 fonts, if there is no */ +/* `.notdef' glyph at all, then one will be created at index~0 and */ +/* whatever was there will be moved to the last index -- Type~42 */ +/* fonts are considered invalid under this condition. */ +/* */ +FT_EXPORT( FT_UInt ) +FT_Get_Char_Index( FT_Face face, + FT_ULong charcode ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Get_First_Char */ +/* */ +/* <Description> */ +/* This function is used to return the first character code in the */ +/* current charmap of a given face. It also returns the */ +/* corresponding glyph index. */ +/* */ +/* <Input> */ +/* face :: A handle to the source face object. */ +/* */ +/* <Output> */ +/* agindex :: Glyph index of first character code. 0~if charmap is */ +/* empty. */ +/* */ +/* <Return> */ +/* The charmap's first character code. */ +/* */ +/* <Note> */ +/* You should use this function with @FT_Get_Next_Char to be able to */ +/* parse all character codes available in a given charmap. The code */ +/* should look like this: */ +/* */ +/* { */ +/* FT_ULong charcode; */ +/* FT_UInt gindex; */ +/* */ +/* */ +/* charcode = FT_Get_First_Char( face, &gindex ); */ +/* while ( gindex != 0 ) */ +/* { */ +/* ... do something with (charcode,gindex) pair ... */ +/* */ +/* charcode = FT_Get_Next_Char( face, charcode, &gindex ); */ +/* } */ +/* } */ +/* */ +/* Note that `*agindex' is set to~0 if the charmap is empty. The */ +/* result itself can be~0 in two cases: if the charmap is empty or */ +/* if the value~0 is the first valid character code. */ +/* */ +FT_EXPORT( FT_ULong ) +FT_Get_First_Char( FT_Face face, + FT_UInt *agindex ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Get_Next_Char */ +/* */ +/* <Description> */ +/* This function is used to return the next character code in the */ +/* current charmap of a given face following the value `char_code', */ +/* as well as the corresponding glyph index. */ +/* */ +/* <Input> */ +/* face :: A handle to the source face object. */ +/* char_code :: The starting character code. */ +/* */ +/* <Output> */ +/* agindex :: Glyph index of next character code. 0~if charmap */ +/* is empty. */ +/* */ +/* <Return> */ +/* The charmap's next character code. */ +/* */ +/* <Note> */ +/* You should use this function with @FT_Get_First_Char to walk */ +/* over all character codes available in a given charmap. See the */ +/* note for this function for a simple code example. */ +/* */ +/* Note that `*agindex' is set to~0 when there are no more codes in */ +/* the charmap. */ +/* */ +FT_EXPORT( FT_ULong ) +FT_Get_Next_Char( FT_Face face, + FT_ULong char_code, + FT_UInt *agindex ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Get_Name_Index */ +/* */ +/* <Description> */ +/* Return the glyph index of a given glyph name. This function uses */ +/* driver specific objects to do the translation. */ +/* */ +/* <Input> */ +/* face :: A handle to the source face object. */ +/* */ +/* glyph_name :: The glyph name. */ +/* */ +/* <Return> */ +/* The glyph index. 0~means `undefined character code'. */ +/* */ +FT_EXPORT( FT_UInt ) +FT_Get_Name_Index( FT_Face face, + FT_String* glyph_name ); + + +/************************************************************************* + * + * @macro: + * FT_SUBGLYPH_FLAG_XXX + * + * @description: + * A list of constants used to describe subglyphs. Please refer to the + * TrueType specification for the meaning of the various flags. + * + * @values: + * FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS :: + * FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES :: + * FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID :: + * FT_SUBGLYPH_FLAG_SCALE :: + * FT_SUBGLYPH_FLAG_XY_SCALE :: + * FT_SUBGLYPH_FLAG_2X2 :: + * FT_SUBGLYPH_FLAG_USE_MY_METRICS :: + * + */ #define FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS 1 #define FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES 2 #define FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID 4 @@ -3267,110 +3253,110 @@ FT_BEGIN_HEADER #define FT_SUBGLYPH_FLAG_USE_MY_METRICS 0x200 - /************************************************************************* - * - * @func: - * FT_Get_SubGlyph_Info - * - * @description: - * Retrieve a description of a given subglyph. Only use it if - * `glyph->format' is @FT_GLYPH_FORMAT_COMPOSITE; an error is - * returned otherwise. - * - * @input: - * glyph :: - * The source glyph slot. - * - * sub_index :: - * The index of the subglyph. Must be less than - * `glyph->num_subglyphs'. - * - * @output: - * p_index :: - * The glyph index of the subglyph. - * - * p_flags :: - * The subglyph flags, see @FT_SUBGLYPH_FLAG_XXX. - * - * p_arg1 :: - * The subglyph's first argument (if any). - * - * p_arg2 :: - * The subglyph's second argument (if any). - * - * p_transform :: - * The subglyph transformation (if any). - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * The values of `*p_arg1', `*p_arg2', and `*p_transform' must be - * interpreted depending on the flags returned in `*p_flags'. See the - * TrueType specification for details. - * - */ - FT_EXPORT( FT_Error ) - FT_Get_SubGlyph_Info( FT_GlyphSlot glyph, - FT_UInt sub_index, - FT_Int *p_index, - FT_UInt *p_flags, - FT_Int *p_arg1, - FT_Int *p_arg2, - FT_Matrix *p_transform ); - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_FSTYPE_XXX */ - /* */ - /* <Description> */ - /* A list of bit flags used in the `fsType' field of the OS/2 table */ - /* in a TrueType or OpenType font and the `FSType' entry in a */ - /* PostScript font. These bit flags are returned by */ - /* @FT_Get_FSType_Flags; they inform client applications of embedding */ - /* and subsetting restrictions associated with a font. */ - /* */ - /* See http://www.adobe.com/devnet/acrobat/pdfs/FontPolicies.pdf for */ - /* more details. */ - /* */ - /* <Values> */ - /* FT_FSTYPE_INSTALLABLE_EMBEDDING :: */ - /* Fonts with no fsType bit set may be embedded and permanently */ - /* installed on the remote system by an application. */ - /* */ - /* FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING :: */ - /* Fonts that have only this bit set must not be modified, embedded */ - /* or exchanged in any manner without first obtaining permission of */ - /* the font software copyright owner. */ - /* */ - /* FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING :: */ - /* If this bit is set, the font may be embedded and temporarily */ - /* loaded on the remote system. Documents containing Preview & */ - /* Print fonts must be opened `read-only'; no edits can be applied */ - /* to the document. */ - /* */ - /* FT_FSTYPE_EDITABLE_EMBEDDING :: */ - /* If this bit is set, the font may be embedded but must only be */ - /* installed temporarily on other systems. In contrast to Preview */ - /* & Print fonts, documents containing editable fonts may be opened */ - /* for reading, editing is permitted, and changes may be saved. */ - /* */ - /* FT_FSTYPE_NO_SUBSETTING :: */ - /* If this bit is set, the font may not be subsetted prior to */ - /* embedding. */ - /* */ - /* FT_FSTYPE_BITMAP_EMBEDDING_ONLY :: */ - /* If this bit is set, only bitmaps contained in the font may be */ - /* embedded; no outline data may be embedded. If there are no */ - /* bitmaps available in the font, then the font is unembeddable. */ - /* */ - /* <Note> */ - /* While the fsType flags can indicate that a font may be embedded, a */ - /* license with the font vendor may be separately required to use the */ - /* font in this way. */ - /* */ +/************************************************************************* + * + * @func: + * FT_Get_SubGlyph_Info + * + * @description: + * Retrieve a description of a given subglyph. Only use it if + * `glyph->format' is @FT_GLYPH_FORMAT_COMPOSITE; an error is + * returned otherwise. + * + * @input: + * glyph :: + * The source glyph slot. + * + * sub_index :: + * The index of the subglyph. Must be less than + * `glyph->num_subglyphs'. + * + * @output: + * p_index :: + * The glyph index of the subglyph. + * + * p_flags :: + * The subglyph flags, see @FT_SUBGLYPH_FLAG_XXX. + * + * p_arg1 :: + * The subglyph's first argument (if any). + * + * p_arg2 :: + * The subglyph's second argument (if any). + * + * p_transform :: + * The subglyph transformation (if any). + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The values of `*p_arg1', `*p_arg2', and `*p_transform' must be + * interpreted depending on the flags returned in `*p_flags'. See the + * TrueType specification for details. + * + */ +FT_EXPORT( FT_Error ) +FT_Get_SubGlyph_Info( FT_GlyphSlot glyph, + FT_UInt sub_index, + FT_Int *p_index, + FT_UInt *p_flags, + FT_Int *p_arg1, + FT_Int *p_arg2, + FT_Matrix *p_transform ); + + +/*************************************************************************/ +/* */ +/* <Enum> */ +/* FT_FSTYPE_XXX */ +/* */ +/* <Description> */ +/* A list of bit flags used in the `fsType' field of the OS/2 table */ +/* in a TrueType or OpenType font and the `FSType' entry in a */ +/* PostScript font. These bit flags are returned by */ +/* @FT_Get_FSType_Flags; they inform client applications of embedding */ +/* and subsetting restrictions associated with a font. */ +/* */ +/* See http://www.adobe.com/devnet/acrobat/pdfs/FontPolicies.pdf for */ +/* more details. */ +/* */ +/* <Values> */ +/* FT_FSTYPE_INSTALLABLE_EMBEDDING :: */ +/* Fonts with no fsType bit set may be embedded and permanently */ +/* installed on the remote system by an application. */ +/* */ +/* FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING :: */ +/* Fonts that have only this bit set must not be modified, embedded */ +/* or exchanged in any manner without first obtaining permission of */ +/* the font software copyright owner. */ +/* */ +/* FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING :: */ +/* If this bit is set, the font may be embedded and temporarily */ +/* loaded on the remote system. Documents containing Preview & */ +/* Print fonts must be opened `read-only'; no edits can be applied */ +/* to the document. */ +/* */ +/* FT_FSTYPE_EDITABLE_EMBEDDING :: */ +/* If this bit is set, the font may be embedded but must only be */ +/* installed temporarily on other systems. In contrast to Preview */ +/* & Print fonts, documents containing editable fonts may be opened */ +/* for reading, editing is permitted, and changes may be saved. */ +/* */ +/* FT_FSTYPE_NO_SUBSETTING :: */ +/* If this bit is set, the font may not be subsetted prior to */ +/* embedding. */ +/* */ +/* FT_FSTYPE_BITMAP_EMBEDDING_ONLY :: */ +/* If this bit is set, only bitmaps contained in the font may be */ +/* embedded; no outline data may be embedded. If there are no */ +/* bitmaps available in the font, then the font is unembeddable. */ +/* */ +/* <Note> */ +/* While the fsType flags can indicate that a font may be embedded, a */ +/* license with the font vendor may be separately required to use the */ +/* font in this way. */ +/* */ #define FT_FSTYPE_INSTALLABLE_EMBEDDING 0x0000 #define FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING 0x0002 #define FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING 0x0004 @@ -3379,610 +3365,610 @@ FT_BEGIN_HEADER #define FT_FSTYPE_BITMAP_EMBEDDING_ONLY 0x0200 - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_FSType_Flags */ - /* */ - /* <Description> */ - /* Return the fsType flags for a font. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face object. */ - /* */ - /* <Return> */ - /* The fsType flags, @FT_FSTYPE_XXX. */ - /* */ - /* <Note> */ - /* Use this function rather than directly reading the `fs_type' field */ - /* in the @PS_FontInfoRec structure which is only guaranteed to */ - /* return the correct results for Type~1 fonts. */ - /* */ - /* <Since> */ - /* 2.3.8 */ - /* */ - FT_EXPORT( FT_UShort ) - FT_Get_FSType_Flags( FT_Face face ); - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* glyph_variants */ - /* */ - /* <Title> */ - /* Glyph Variants */ - /* */ - /* <Abstract> */ - /* The FreeType~2 interface to Unicode Ideographic Variation */ - /* Sequences (IVS), using the SFNT cmap format~14. */ - /* */ - /* <Description> */ - /* Many CJK characters have variant forms. They are a sort of grey */ - /* area somewhere between being totally irrelevant and semantically */ - /* distinct; for this reason, the Unicode consortium decided to */ - /* introduce Ideographic Variation Sequences (IVS), consisting of a */ - /* Unicode base character and one of 240 variant selectors */ - /* (U+E0100-U+E01EF), instead of further extending the already huge */ - /* code range for CJK characters. */ - /* */ - /* An IVS is registered and unique; for further details please refer */ - /* to Unicode Technical Standard #37, the Ideographic Variation */ - /* Database: */ - /* */ - /* http://www.unicode.org/reports/tr37/ */ - /* */ - /* To date (November 2012), the character with the most variants is */ - /* U+9089, having 31 such IVS. */ - /* */ - /* Adobe and MS decided to support IVS with a new cmap subtable */ - /* (format~14). It is an odd subtable because it is not a mapping of */ - /* input code points to glyphs, but contains lists of all variants */ - /* supported by the font. */ - /* */ - /* A variant may be either `default' or `non-default'. A default */ - /* variant is the one you will get for that code point if you look it */ - /* up in the standard Unicode cmap. A non-default variant is a */ - /* different glyph. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Face_GetCharVariantIndex */ - /* */ - /* <Description> */ - /* Return the glyph index of a given character code as modified by */ - /* the variation selector. */ - /* */ - /* <Input> */ - /* face :: */ - /* A handle to the source face object. */ - /* */ - /* charcode :: */ - /* The character code point in Unicode. */ - /* */ - /* variantSelector :: */ - /* The Unicode code point of the variation selector. */ - /* */ - /* <Return> */ - /* The glyph index. 0~means either `undefined character code', or */ - /* `undefined selector code', or `no variation selector cmap */ - /* subtable', or `current CharMap is not Unicode'. */ - /* */ - /* <Note> */ - /* If you use FreeType to manipulate the contents of font files */ - /* directly, be aware that the glyph index returned by this function */ - /* doesn't always correspond to the internal indices used within */ - /* the file. This is done to ensure that value~0 always corresponds */ - /* to the `missing glyph'. */ - /* */ - /* This function is only meaningful if */ - /* a) the font has a variation selector cmap sub table, */ - /* and */ - /* b) the current charmap has a Unicode encoding. */ - /* */ - /* <Since> */ - /* 2.3.6 */ - /* */ - FT_EXPORT( FT_UInt ) - FT_Face_GetCharVariantIndex( FT_Face face, - FT_ULong charcode, - FT_ULong variantSelector ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Face_GetCharVariantIsDefault */ - /* */ - /* <Description> */ - /* Check whether this variant of this Unicode character is the one to */ - /* be found in the `cmap'. */ - /* */ - /* <Input> */ - /* face :: */ - /* A handle to the source face object. */ - /* */ - /* charcode :: */ - /* The character codepoint in Unicode. */ - /* */ - /* variantSelector :: */ - /* The Unicode codepoint of the variation selector. */ - /* */ - /* <Return> */ - /* 1~if found in the standard (Unicode) cmap, 0~if found in the */ - /* variation selector cmap, or -1 if it is not a variant. */ - /* */ - /* <Note> */ - /* This function is only meaningful if the font has a variation */ - /* selector cmap subtable. */ - /* */ - /* <Since> */ - /* 2.3.6 */ - /* */ - FT_EXPORT( FT_Int ) - FT_Face_GetCharVariantIsDefault( FT_Face face, - FT_ULong charcode, - FT_ULong variantSelector ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Face_GetVariantSelectors */ - /* */ - /* <Description> */ - /* Return a zero-terminated list of Unicode variant selectors found */ - /* in the font. */ - /* */ - /* <Input> */ - /* face :: */ - /* A handle to the source face object. */ - /* */ - /* <Return> */ - /* A pointer to an array of selector code points, or NULL if there is */ - /* no valid variant selector cmap subtable. */ - /* */ - /* <Note> */ - /* The last item in the array is~0; the array is owned by the */ - /* @FT_Face object but can be overwritten or released on the next */ - /* call to a FreeType function. */ - /* */ - /* <Since> */ - /* 2.3.6 */ - /* */ - FT_EXPORT( FT_UInt32* ) - FT_Face_GetVariantSelectors( FT_Face face ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Face_GetVariantsOfChar */ - /* */ - /* <Description> */ - /* Return a zero-terminated list of Unicode variant selectors found */ - /* for the specified character code. */ - /* */ - /* <Input> */ - /* face :: */ - /* A handle to the source face object. */ - /* */ - /* charcode :: */ - /* The character codepoint in Unicode. */ - /* */ - /* <Return> */ - /* A pointer to an array of variant selector code points which are */ - /* active for the given character, or NULL if the corresponding list */ - /* is empty. */ - /* */ - /* <Note> */ - /* The last item in the array is~0; the array is owned by the */ - /* @FT_Face object but can be overwritten or released on the next */ - /* call to a FreeType function. */ - /* */ - /* <Since> */ - /* 2.3.6 */ - /* */ - FT_EXPORT( FT_UInt32* ) - FT_Face_GetVariantsOfChar( FT_Face face, - FT_ULong charcode ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Face_GetCharsOfVariant */ - /* */ - /* <Description> */ - /* Return a zero-terminated list of Unicode character codes found for */ - /* the specified variant selector. */ - /* */ - /* <Input> */ - /* face :: */ - /* A handle to the source face object. */ - /* */ - /* variantSelector :: */ - /* The variant selector code point in Unicode. */ - /* */ - /* <Return> */ - /* A list of all the code points which are specified by this selector */ - /* (both default and non-default codes are returned) or NULL if there */ - /* is no valid cmap or the variant selector is invalid. */ - /* */ - /* <Note> */ - /* The last item in the array is~0; the array is owned by the */ - /* @FT_Face object but can be overwritten or released on the next */ - /* call to a FreeType function. */ - /* */ - /* <Since> */ - /* 2.3.6 */ - /* */ - FT_EXPORT( FT_UInt32* ) - FT_Face_GetCharsOfVariant( FT_Face face, +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Get_FSType_Flags */ +/* */ +/* <Description> */ +/* Return the fsType flags for a font. */ +/* */ +/* <Input> */ +/* face :: A handle to the source face object. */ +/* */ +/* <Return> */ +/* The fsType flags, @FT_FSTYPE_XXX. */ +/* */ +/* <Note> */ +/* Use this function rather than directly reading the `fs_type' field */ +/* in the @PS_FontInfoRec structure which is only guaranteed to */ +/* return the correct results for Type~1 fonts. */ +/* */ +/* <Since> */ +/* 2.3.8 */ +/* */ +FT_EXPORT( FT_UShort ) +FT_Get_FSType_Flags( FT_Face face ); + + +/*************************************************************************/ +/* */ +/* <Section> */ +/* glyph_variants */ +/* */ +/* <Title> */ +/* Glyph Variants */ +/* */ +/* <Abstract> */ +/* The FreeType~2 interface to Unicode Ideographic Variation */ +/* Sequences (IVS), using the SFNT cmap format~14. */ +/* */ +/* <Description> */ +/* Many CJK characters have variant forms. They are a sort of grey */ +/* area somewhere between being totally irrelevant and semantically */ +/* distinct; for this reason, the Unicode consortium decided to */ +/* introduce Ideographic Variation Sequences (IVS), consisting of a */ +/* Unicode base character and one of 240 variant selectors */ +/* (U+E0100-U+E01EF), instead of further extending the already huge */ +/* code range for CJK characters. */ +/* */ +/* An IVS is registered and unique; for further details please refer */ +/* to Unicode Technical Standard #37, the Ideographic Variation */ +/* Database: */ +/* */ +/* http://www.unicode.org/reports/tr37/ */ +/* */ +/* To date (November 2012), the character with the most variants is */ +/* U+9089, having 31 such IVS. */ +/* */ +/* Adobe and MS decided to support IVS with a new cmap subtable */ +/* (format~14). It is an odd subtable because it is not a mapping of */ +/* input code points to glyphs, but contains lists of all variants */ +/* supported by the font. */ +/* */ +/* A variant may be either `default' or `non-default'. A default */ +/* variant is the one you will get for that code point if you look it */ +/* up in the standard Unicode cmap. A non-default variant is a */ +/* different glyph. */ +/* */ +/*************************************************************************/ + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Face_GetCharVariantIndex */ +/* */ +/* <Description> */ +/* Return the glyph index of a given character code as modified by */ +/* the variation selector. */ +/* */ +/* <Input> */ +/* face :: */ +/* A handle to the source face object. */ +/* */ +/* charcode :: */ +/* The character code point in Unicode. */ +/* */ +/* variantSelector :: */ +/* The Unicode code point of the variation selector. */ +/* */ +/* <Return> */ +/* The glyph index. 0~means either `undefined character code', or */ +/* `undefined selector code', or `no variation selector cmap */ +/* subtable', or `current CharMap is not Unicode'. */ +/* */ +/* <Note> */ +/* If you use FreeType to manipulate the contents of font files */ +/* directly, be aware that the glyph index returned by this function */ +/* doesn't always correspond to the internal indices used within */ +/* the file. This is done to ensure that value~0 always corresponds */ +/* to the `missing glyph'. */ +/* */ +/* This function is only meaningful if */ +/* a) the font has a variation selector cmap sub table, */ +/* and */ +/* b) the current charmap has a Unicode encoding. */ +/* */ +/* <Since> */ +/* 2.3.6 */ +/* */ +FT_EXPORT( FT_UInt ) +FT_Face_GetCharVariantIndex( FT_Face face, + FT_ULong charcode, FT_ULong variantSelector ); - /*************************************************************************/ - /* */ - /* <Section> */ - /* computations */ - /* */ - /* <Title> */ - /* Computations */ - /* */ - /* <Abstract> */ - /* Crunching fixed numbers and vectors. */ - /* */ - /* <Description> */ - /* This section contains various functions used to perform */ - /* computations on 16.16 fixed-float numbers or 2d vectors. */ - /* */ - /* <Order> */ - /* FT_MulDiv */ - /* FT_MulFix */ - /* FT_DivFix */ - /* FT_RoundFix */ - /* FT_CeilFix */ - /* FT_FloorFix */ - /* FT_Vector_Transform */ - /* FT_Matrix_Multiply */ - /* FT_Matrix_Invert */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_MulDiv */ - /* */ - /* <Description> */ - /* A very simple function used to perform the computation `(a*b)/c' */ - /* with maximum accuracy (it uses a 64-bit intermediate integer */ - /* whenever necessary). */ - /* */ - /* This function isn't necessarily as fast as some processor specific */ - /* operations, but is at least completely portable. */ - /* */ - /* <Input> */ - /* a :: The first multiplier. */ - /* b :: The second multiplier. */ - /* c :: The divisor. */ - /* */ - /* <Return> */ - /* The result of `(a*b)/c'. This function never traps when trying to */ - /* divide by zero; it simply returns `MaxInt' or `MinInt' depending */ - /* on the signs of `a' and `b'. */ - /* */ - FT_EXPORT( FT_Long ) - FT_MulDiv( FT_Long a, - FT_Long b, - FT_Long c ); - - - /* */ - - /* The following #if 0 ... #endif is for the documentation formatter, */ - /* hiding the internal `FT_MULFIX_INLINED' macro. */ +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Face_GetCharVariantIsDefault */ +/* */ +/* <Description> */ +/* Check whether this variant of this Unicode character is the one to */ +/* be found in the `cmap'. */ +/* */ +/* <Input> */ +/* face :: */ +/* A handle to the source face object. */ +/* */ +/* charcode :: */ +/* The character codepoint in Unicode. */ +/* */ +/* variantSelector :: */ +/* The Unicode codepoint of the variation selector. */ +/* */ +/* <Return> */ +/* 1~if found in the standard (Unicode) cmap, 0~if found in the */ +/* variation selector cmap, or -1 if it is not a variant. */ +/* */ +/* <Note> */ +/* This function is only meaningful if the font has a variation */ +/* selector cmap subtable. */ +/* */ +/* <Since> */ +/* 2.3.6 */ +/* */ +FT_EXPORT( FT_Int ) +FT_Face_GetCharVariantIsDefault( FT_Face face, + FT_ULong charcode, + FT_ULong variantSelector ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Face_GetVariantSelectors */ +/* */ +/* <Description> */ +/* Return a zero-terminated list of Unicode variant selectors found */ +/* in the font. */ +/* */ +/* <Input> */ +/* face :: */ +/* A handle to the source face object. */ +/* */ +/* <Return> */ +/* A pointer to an array of selector code points, or NULL if there is */ +/* no valid variant selector cmap subtable. */ +/* */ +/* <Note> */ +/* The last item in the array is~0; the array is owned by the */ +/* @FT_Face object but can be overwritten or released on the next */ +/* call to a FreeType function. */ +/* */ +/* <Since> */ +/* 2.3.6 */ +/* */ +FT_EXPORT( FT_UInt32* ) +FT_Face_GetVariantSelectors( FT_Face face ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Face_GetVariantsOfChar */ +/* */ +/* <Description> */ +/* Return a zero-terminated list of Unicode variant selectors found */ +/* for the specified character code. */ +/* */ +/* <Input> */ +/* face :: */ +/* A handle to the source face object. */ +/* */ +/* charcode :: */ +/* The character codepoint in Unicode. */ +/* */ +/* <Return> */ +/* A pointer to an array of variant selector code points which are */ +/* active for the given character, or NULL if the corresponding list */ +/* is empty. */ +/* */ +/* <Note> */ +/* The last item in the array is~0; the array is owned by the */ +/* @FT_Face object but can be overwritten or released on the next */ +/* call to a FreeType function. */ +/* */ +/* <Since> */ +/* 2.3.6 */ +/* */ +FT_EXPORT( FT_UInt32* ) +FT_Face_GetVariantsOfChar( FT_Face face, + FT_ULong charcode ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Face_GetCharsOfVariant */ +/* */ +/* <Description> */ +/* Return a zero-terminated list of Unicode character codes found for */ +/* the specified variant selector. */ +/* */ +/* <Input> */ +/* face :: */ +/* A handle to the source face object. */ +/* */ +/* variantSelector :: */ +/* The variant selector code point in Unicode. */ +/* */ +/* <Return> */ +/* A list of all the code points which are specified by this selector */ +/* (both default and non-default codes are returned) or NULL if there */ +/* is no valid cmap or the variant selector is invalid. */ +/* */ +/* <Note> */ +/* The last item in the array is~0; the array is owned by the */ +/* @FT_Face object but can be overwritten or released on the next */ +/* call to a FreeType function. */ +/* */ +/* <Since> */ +/* 2.3.6 */ +/* */ +FT_EXPORT( FT_UInt32* ) +FT_Face_GetCharsOfVariant( FT_Face face, + FT_ULong variantSelector ); + + +/*************************************************************************/ +/* */ +/* <Section> */ +/* computations */ +/* */ +/* <Title> */ +/* Computations */ +/* */ +/* <Abstract> */ +/* Crunching fixed numbers and vectors. */ +/* */ +/* <Description> */ +/* This section contains various functions used to perform */ +/* computations on 16.16 fixed-float numbers or 2d vectors. */ +/* */ +/* <Order> */ +/* FT_MulDiv */ +/* FT_MulFix */ +/* FT_DivFix */ +/* FT_RoundFix */ +/* FT_CeilFix */ +/* FT_FloorFix */ +/* FT_Vector_Transform */ +/* FT_Matrix_Multiply */ +/* FT_Matrix_Invert */ +/* */ +/*************************************************************************/ + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_MulDiv */ +/* */ +/* <Description> */ +/* A very simple function used to perform the computation `(a*b)/c' */ +/* with maximum accuracy (it uses a 64-bit intermediate integer */ +/* whenever necessary). */ +/* */ +/* This function isn't necessarily as fast as some processor specific */ +/* operations, but is at least completely portable. */ +/* */ +/* <Input> */ +/* a :: The first multiplier. */ +/* b :: The second multiplier. */ +/* c :: The divisor. */ +/* */ +/* <Return> */ +/* The result of `(a*b)/c'. This function never traps when trying to */ +/* divide by zero; it simply returns `MaxInt' or `MinInt' depending */ +/* on the signs of `a' and `b'. */ +/* */ +FT_EXPORT( FT_Long ) +FT_MulDiv( FT_Long a, + FT_Long b, + FT_Long c ); + + +/* */ + +/* The following #if 0 ... #endif is for the documentation formatter, */ +/* hiding the internal `FT_MULFIX_INLINED' macro. */ #if 0 - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_MulFix */ - /* */ - /* <Description> */ - /* A very simple function used to perform the computation */ - /* `(a*b)/0x10000' with maximum accuracy. Most of the time this is */ - /* used to multiply a given value by a 16.16 fixed-point factor. */ - /* */ - /* <Input> */ - /* a :: The first multiplier. */ - /* b :: The second multiplier. Use a 16.16 factor here whenever */ - /* possible (see note below). */ - /* */ - /* <Return> */ - /* The result of `(a*b)/0x10000'. */ - /* */ - /* <Note> */ - /* This function has been optimized for the case where the absolute */ - /* value of `a' is less than 2048, and `b' is a 16.16 scaling factor. */ - /* As this happens mainly when scaling from notional units to */ - /* fractional pixels in FreeType, it resulted in noticeable speed */ - /* improvements between versions 2.x and 1.x. */ - /* */ - /* As a conclusion, always try to place a 16.16 factor as the */ - /* _second_ argument of this function; this can make a great */ - /* difference. */ - /* */ - FT_EXPORT( FT_Long ) - FT_MulFix( FT_Long a, - FT_Long b ); - - /* */ +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_MulFix */ +/* */ +/* <Description> */ +/* A very simple function used to perform the computation */ +/* `(a*b)/0x10000' with maximum accuracy. Most of the time this is */ +/* used to multiply a given value by a 16.16 fixed-point factor. */ +/* */ +/* <Input> */ +/* a :: The first multiplier. */ +/* b :: The second multiplier. Use a 16.16 factor here whenever */ +/* possible (see note below). */ +/* */ +/* <Return> */ +/* The result of `(a*b)/0x10000'. */ +/* */ +/* <Note> */ +/* This function has been optimized for the case where the absolute */ +/* value of `a' is less than 2048, and `b' is a 16.16 scaling factor. */ +/* As this happens mainly when scaling from notional units to */ +/* fractional pixels in FreeType, it resulted in noticeable speed */ +/* improvements between versions 2.x and 1.x. */ +/* */ +/* As a conclusion, always try to place a 16.16 factor as the */ +/* _second_ argument of this function; this can make a great */ +/* difference. */ +/* */ +FT_EXPORT( FT_Long ) +FT_MulFix( FT_Long a, + FT_Long b ); + +/* */ #endif #ifdef FT_MULFIX_INLINED #define FT_MulFix( a, b ) FT_MULFIX_INLINED( a, b ) #else - FT_EXPORT( FT_Long ) - FT_MulFix( FT_Long a, - FT_Long b ); +FT_EXPORT( FT_Long ) +FT_MulFix( FT_Long a, + FT_Long b ); #endif - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_DivFix */ - /* */ - /* <Description> */ - /* A very simple function used to perform the computation */ - /* `(a*0x10000)/b' with maximum accuracy. Most of the time, this is */ - /* used to divide a given value by a 16.16 fixed-point factor. */ - /* */ - /* <Input> */ - /* a :: The first multiplier. */ - /* b :: The second multiplier. Use a 16.16 factor here whenever */ - /* possible (see note below). */ - /* */ - /* <Return> */ - /* The result of `(a*0x10000)/b'. */ - /* */ - /* <Note> */ - /* The optimization for FT_DivFix() is simple: If (a~<<~16) fits in */ - /* 32~bits, then the division is computed directly. Otherwise, we */ - /* use a specialized version of @FT_MulDiv. */ - /* */ - FT_EXPORT( FT_Long ) - FT_DivFix( FT_Long a, - FT_Long b ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_RoundFix */ - /* */ - /* <Description> */ - /* A very simple function used to round a 16.16 fixed number. */ - /* */ - /* <Input> */ - /* a :: The number to be rounded. */ - /* */ - /* <Return> */ - /* The result of `(a + 0x8000) & -0x10000'. */ - /* */ - FT_EXPORT( FT_Fixed ) - FT_RoundFix( FT_Fixed a ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_CeilFix */ - /* */ - /* <Description> */ - /* A very simple function used to compute the ceiling function of a */ - /* 16.16 fixed number. */ - /* */ - /* <Input> */ - /* a :: The number for which the ceiling function is to be computed. */ - /* */ - /* <Return> */ - /* The result of `(a + 0x10000 - 1) & -0x10000'. */ - /* */ - FT_EXPORT( FT_Fixed ) - FT_CeilFix( FT_Fixed a ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_FloorFix */ - /* */ - /* <Description> */ - /* A very simple function used to compute the floor function of a */ - /* 16.16 fixed number. */ - /* */ - /* <Input> */ - /* a :: The number for which the floor function is to be computed. */ - /* */ - /* <Return> */ - /* The result of `a & -0x10000'. */ - /* */ - FT_EXPORT( FT_Fixed ) - FT_FloorFix( FT_Fixed a ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Vector_Transform */ - /* */ - /* <Description> */ - /* Transform a single vector through a 2x2 matrix. */ - /* */ - /* <InOut> */ - /* vector :: The target vector to transform. */ - /* */ - /* <Input> */ - /* matrix :: A pointer to the source 2x2 matrix. */ - /* */ - /* <Note> */ - /* The result is undefined if either `vector' or `matrix' is invalid. */ - /* */ - FT_EXPORT( void ) - FT_Vector_Transform( FT_Vector* vec, - const FT_Matrix* matrix ); - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* version */ - /* */ - /* <Title> */ - /* FreeType Version */ - /* */ - /* <Abstract> */ - /* Functions and macros related to FreeType versions. */ - /* */ - /* <Description> */ - /* Note that those functions and macros are of limited use because */ - /* even a new release of FreeType with only documentation changes */ - /* increases the version number. */ - /* */ - /*************************************************************************/ - - - /************************************************************************* - * - * @enum: - * FREETYPE_XXX - * - * @description: - * These three macros identify the FreeType source code version. - * Use @FT_Library_Version to access them at runtime. - * - * @values: - * FREETYPE_MAJOR :: The major version number. - * FREETYPE_MINOR :: The minor version number. - * FREETYPE_PATCH :: The patch level. - * - * @note: - * The version number of FreeType if built as a dynamic link library - * with the `libtool' package is _not_ controlled by these three - * macros. - * - */ +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_DivFix */ +/* */ +/* <Description> */ +/* A very simple function used to perform the computation */ +/* `(a*0x10000)/b' with maximum accuracy. Most of the time, this is */ +/* used to divide a given value by a 16.16 fixed-point factor. */ +/* */ +/* <Input> */ +/* a :: The first multiplier. */ +/* b :: The second multiplier. Use a 16.16 factor here whenever */ +/* possible (see note below). */ +/* */ +/* <Return> */ +/* The result of `(a*0x10000)/b'. */ +/* */ +/* <Note> */ +/* The optimization for FT_DivFix() is simple: If (a~<<~16) fits in */ +/* 32~bits, then the division is computed directly. Otherwise, we */ +/* use a specialized version of @FT_MulDiv. */ +/* */ +FT_EXPORT( FT_Long ) +FT_DivFix( FT_Long a, + FT_Long b ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_RoundFix */ +/* */ +/* <Description> */ +/* A very simple function used to round a 16.16 fixed number. */ +/* */ +/* <Input> */ +/* a :: The number to be rounded. */ +/* */ +/* <Return> */ +/* The result of `(a + 0x8000) & -0x10000'. */ +/* */ +FT_EXPORT( FT_Fixed ) +FT_RoundFix( FT_Fixed a ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_CeilFix */ +/* */ +/* <Description> */ +/* A very simple function used to compute the ceiling function of a */ +/* 16.16 fixed number. */ +/* */ +/* <Input> */ +/* a :: The number for which the ceiling function is to be computed. */ +/* */ +/* <Return> */ +/* The result of `(a + 0x10000 - 1) & -0x10000'. */ +/* */ +FT_EXPORT( FT_Fixed ) +FT_CeilFix( FT_Fixed a ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_FloorFix */ +/* */ +/* <Description> */ +/* A very simple function used to compute the floor function of a */ +/* 16.16 fixed number. */ +/* */ +/* <Input> */ +/* a :: The number for which the floor function is to be computed. */ +/* */ +/* <Return> */ +/* The result of `a & -0x10000'. */ +/* */ +FT_EXPORT( FT_Fixed ) +FT_FloorFix( FT_Fixed a ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Vector_Transform */ +/* */ +/* <Description> */ +/* Transform a single vector through a 2x2 matrix. */ +/* */ +/* <InOut> */ +/* vector :: The target vector to transform. */ +/* */ +/* <Input> */ +/* matrix :: A pointer to the source 2x2 matrix. */ +/* */ +/* <Note> */ +/* The result is undefined if either `vector' or `matrix' is invalid. */ +/* */ +FT_EXPORT( void ) +FT_Vector_Transform( FT_Vector* vec, + const FT_Matrix* matrix ); + + +/*************************************************************************/ +/* */ +/* <Section> */ +/* version */ +/* */ +/* <Title> */ +/* FreeType Version */ +/* */ +/* <Abstract> */ +/* Functions and macros related to FreeType versions. */ +/* */ +/* <Description> */ +/* Note that those functions and macros are of limited use because */ +/* even a new release of FreeType with only documentation changes */ +/* increases the version number. */ +/* */ +/*************************************************************************/ + + +/************************************************************************* + * + * @enum: + * FREETYPE_XXX + * + * @description: + * These three macros identify the FreeType source code version. + * Use @FT_Library_Version to access them at runtime. + * + * @values: + * FREETYPE_MAJOR :: The major version number. + * FREETYPE_MINOR :: The minor version number. + * FREETYPE_PATCH :: The patch level. + * + * @note: + * The version number of FreeType if built as a dynamic link library + * with the `libtool' package is _not_ controlled by these three + * macros. + * + */ #define FREETYPE_MAJOR 2 #define FREETYPE_MINOR 4 #define FREETYPE_PATCH 12 - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Library_Version */ - /* */ - /* <Description> */ - /* Return the version of the FreeType library being used. This is */ - /* useful when dynamically linking to the library, since one cannot */ - /* use the macros @FREETYPE_MAJOR, @FREETYPE_MINOR, and */ - /* @FREETYPE_PATCH. */ - /* */ - /* <Input> */ - /* library :: A source library handle. */ - /* */ - /* <Output> */ - /* amajor :: The major version number. */ - /* */ - /* aminor :: The minor version number. */ - /* */ - /* apatch :: The patch version number. */ - /* */ - /* <Note> */ - /* The reason why this function takes a `library' argument is because */ - /* certain programs implement library initialization in a custom way */ - /* that doesn't use @FT_Init_FreeType. */ - /* */ - /* In such cases, the library version might not be available before */ - /* the library object has been created. */ - /* */ - FT_EXPORT( void ) - FT_Library_Version( FT_Library library, - FT_Int *amajor, - FT_Int *aminor, - FT_Int *apatch ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Face_CheckTrueTypePatents */ - /* */ - /* <Description> */ - /* Parse all bytecode instructions of a TrueType font file to check */ - /* whether any of the patented opcodes are used. This is only useful */ - /* if you want to be able to use the unpatented hinter with */ - /* fonts that do *not* use these opcodes. */ - /* */ - /* Note that this function parses *all* glyph instructions in the */ - /* font file, which may be slow. */ - /* */ - /* <Input> */ - /* face :: A face handle. */ - /* */ - /* <Return> */ - /* 1~if this is a TrueType font that uses one of the patented */ - /* opcodes, 0~otherwise. */ - /* */ - /* <Note> */ - /* Since May 2010, TrueType hinting is no longer patented. */ - /* */ - /* <Since> */ - /* 2.3.5 */ - /* */ - FT_EXPORT( FT_Bool ) - FT_Face_CheckTrueTypePatents( FT_Face face ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Face_SetUnpatentedHinting */ - /* */ - /* <Description> */ - /* Enable or disable the unpatented hinter for a given face. */ - /* Only enable it if you have determined that the face doesn't */ - /* use any patented opcodes (see @FT_Face_CheckTrueTypePatents). */ - /* */ - /* <Input> */ - /* face :: A face handle. */ - /* */ - /* value :: New boolean setting. */ - /* */ - /* <Return> */ - /* The old setting value. This will always be false if this is not */ - /* an SFNT font, or if the unpatented hinter is not compiled in this */ - /* instance of the library. */ - /* */ - /* <Note> */ - /* Since May 2010, TrueType hinting is no longer patented. */ - /* */ - /* <Since> */ - /* 2.3.5 */ - /* */ - FT_EXPORT( FT_Bool ) - FT_Face_SetUnpatentedHinting( FT_Face face, - FT_Bool value ); - - /* */ +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Library_Version */ +/* */ +/* <Description> */ +/* Return the version of the FreeType library being used. This is */ +/* useful when dynamically linking to the library, since one cannot */ +/* use the macros @FREETYPE_MAJOR, @FREETYPE_MINOR, and */ +/* @FREETYPE_PATCH. */ +/* */ +/* <Input> */ +/* library :: A source library handle. */ +/* */ +/* <Output> */ +/* amajor :: The major version number. */ +/* */ +/* aminor :: The minor version number. */ +/* */ +/* apatch :: The patch version number. */ +/* */ +/* <Note> */ +/* The reason why this function takes a `library' argument is because */ +/* certain programs implement library initialization in a custom way */ +/* that doesn't use @FT_Init_FreeType. */ +/* */ +/* In such cases, the library version might not be available before */ +/* the library object has been created. */ +/* */ +FT_EXPORT( void ) +FT_Library_Version( FT_Library library, + FT_Int *amajor, + FT_Int *aminor, + FT_Int *apatch ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Face_CheckTrueTypePatents */ +/* */ +/* <Description> */ +/* Parse all bytecode instructions of a TrueType font file to check */ +/* whether any of the patented opcodes are used. This is only useful */ +/* if you want to be able to use the unpatented hinter with */ +/* fonts that do *not* use these opcodes. */ +/* */ +/* Note that this function parses *all* glyph instructions in the */ +/* font file, which may be slow. */ +/* */ +/* <Input> */ +/* face :: A face handle. */ +/* */ +/* <Return> */ +/* 1~if this is a TrueType font that uses one of the patented */ +/* opcodes, 0~otherwise. */ +/* */ +/* <Note> */ +/* Since May 2010, TrueType hinting is no longer patented. */ +/* */ +/* <Since> */ +/* 2.3.5 */ +/* */ +FT_EXPORT( FT_Bool ) +FT_Face_CheckTrueTypePatents( FT_Face face ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Face_SetUnpatentedHinting */ +/* */ +/* <Description> */ +/* Enable or disable the unpatented hinter for a given face. */ +/* Only enable it if you have determined that the face doesn't */ +/* use any patented opcodes (see @FT_Face_CheckTrueTypePatents). */ +/* */ +/* <Input> */ +/* face :: A face handle. */ +/* */ +/* value :: New boolean setting. */ +/* */ +/* <Return> */ +/* The old setting value. This will always be false if this is not */ +/* an SFNT font, or if the unpatented hinter is not compiled in this */ +/* instance of the library. */ +/* */ +/* <Note> */ +/* Since May 2010, TrueType hinting is no longer patented. */ +/* */ +/* <Since> */ +/* 2.3.5 */ +/* */ +FT_EXPORT( FT_Bool ) +FT_Face_SetUnpatentedHinting( FT_Face face, + FT_Bool value ); + +/* */ FT_END_HEADER diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/ftadvanc.h b/thirdparties/common/include/libfreetype/freetype2/freetype/ftadvanc.h index b2451be..56ad44b 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/ftadvanc.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/ftadvanc.h @@ -33,140 +33,140 @@ FT_BEGIN_HEADER - /************************************************************************** - * - * @section: - * quick_advance - * - * @title: - * Quick retrieval of advance values - * - * @abstract: - * Retrieve horizontal and vertical advance values without processing - * glyph outlines, if possible. - * - * @description: - * This section contains functions to quickly extract advance values - * without handling glyph outlines, if possible. - */ - - - /*************************************************************************/ - /* */ - /* <Const> */ - /* FT_ADVANCE_FLAG_FAST_ONLY */ - /* */ - /* <Description> */ - /* A bit-flag to be OR-ed with the `flags' parameter of the */ - /* @FT_Get_Advance and @FT_Get_Advances functions. */ - /* */ - /* If set, it indicates that you want these functions to fail if the */ - /* corresponding hinting mode or font driver doesn't allow for very */ - /* quick advance computation. */ - /* */ - /* Typically, glyphs which are either unscaled, unhinted, bitmapped, */ - /* or light-hinted can have their advance width computed very */ - /* quickly. */ - /* */ - /* Normal and bytecode hinted modes, which require loading, scaling, */ - /* and hinting of the glyph outline, are extremely slow by */ - /* comparison. */ - /* */ +/************************************************************************** + * + * @section: + * quick_advance + * + * @title: + * Quick retrieval of advance values + * + * @abstract: + * Retrieve horizontal and vertical advance values without processing + * glyph outlines, if possible. + * + * @description: + * This section contains functions to quickly extract advance values + * without handling glyph outlines, if possible. + */ + + +/*************************************************************************/ +/* */ +/* <Const> */ +/* FT_ADVANCE_FLAG_FAST_ONLY */ +/* */ +/* <Description> */ +/* A bit-flag to be OR-ed with the `flags' parameter of the */ +/* @FT_Get_Advance and @FT_Get_Advances functions. */ +/* */ +/* If set, it indicates that you want these functions to fail if the */ +/* corresponding hinting mode or font driver doesn't allow for very */ +/* quick advance computation. */ +/* */ +/* Typically, glyphs which are either unscaled, unhinted, bitmapped, */ +/* or light-hinted can have their advance width computed very */ +/* quickly. */ +/* */ +/* Normal and bytecode hinted modes, which require loading, scaling, */ +/* and hinting of the glyph outline, are extremely slow by */ +/* comparison. */ +/* */ #define FT_ADVANCE_FLAG_FAST_ONLY 0x20000000UL - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Advance */ - /* */ - /* <Description> */ - /* Retrieve the advance value of a given glyph outline in an */ - /* @FT_Face. By default, the unhinted advance is returned in font */ - /* units. */ - /* */ - /* <Input> */ - /* face :: The source @FT_Face handle. */ - /* */ - /* gindex :: The glyph index. */ - /* */ - /* load_flags :: A set of bit flags similar to those used when */ - /* calling @FT_Load_Glyph, used to determine what kind */ - /* of advances you need. */ - /* <Output> */ - /* padvance :: The advance value, in either font units or 16.16 */ - /* format. */ - /* */ - /* If @FT_LOAD_VERTICAL_LAYOUT is set, this is the */ - /* vertical advance corresponding to a vertical layout. */ - /* Otherwise, it is the horizontal advance in a */ - /* horizontal layout. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and */ - /* if the corresponding font backend doesn't have a quick way to */ - /* retrieve the advances. */ - /* */ - /* A scaled advance is returned in 16.16 format but isn't transformed */ - /* by the affine transformation specified by @FT_Set_Transform. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Get_Advance( FT_Face face, - FT_UInt gindex, - FT_Int32 load_flags, - FT_Fixed *padvance ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Advances */ - /* */ - /* <Description> */ - /* Retrieve the advance values of several glyph outlines in an */ - /* @FT_Face. By default, the unhinted advances are returned in font */ - /* units. */ - /* */ - /* <Input> */ - /* face :: The source @FT_Face handle. */ - /* */ - /* start :: The first glyph index. */ - /* */ - /* count :: The number of advance values you want to retrieve. */ - /* */ - /* load_flags :: A set of bit flags similar to those used when */ - /* calling @FT_Load_Glyph. */ - /* */ - /* <Output> */ - /* padvance :: The advances, in either font units or 16.16 format. */ - /* This array must contain at least `count' elements. */ - /* */ - /* If @FT_LOAD_VERTICAL_LAYOUT is set, these are the */ - /* vertical advances corresponding to a vertical layout. */ - /* Otherwise, they are the horizontal advances in a */ - /* horizontal layout. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and */ - /* if the corresponding font backend doesn't have a quick way to */ - /* retrieve the advances. */ - /* */ - /* Scaled advances are returned in 16.16 format but aren't */ - /* transformed by the affine transformation specified by */ - /* @FT_Set_Transform. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Get_Advances( FT_Face face, - FT_UInt start, - FT_UInt count, - FT_Int32 load_flags, - FT_Fixed *padvances ); +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Get_Advance */ +/* */ +/* <Description> */ +/* Retrieve the advance value of a given glyph outline in an */ +/* @FT_Face. By default, the unhinted advance is returned in font */ +/* units. */ +/* */ +/* <Input> */ +/* face :: The source @FT_Face handle. */ +/* */ +/* gindex :: The glyph index. */ +/* */ +/* load_flags :: A set of bit flags similar to those used when */ +/* calling @FT_Load_Glyph, used to determine what kind */ +/* of advances you need. */ +/* <Output> */ +/* padvance :: The advance value, in either font units or 16.16 */ +/* format. */ +/* */ +/* If @FT_LOAD_VERTICAL_LAYOUT is set, this is the */ +/* vertical advance corresponding to a vertical layout. */ +/* Otherwise, it is the horizontal advance in a */ +/* horizontal layout. */ +/* */ +/* <Return> */ +/* FreeType error code. 0 means success. */ +/* */ +/* <Note> */ +/* This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and */ +/* if the corresponding font backend doesn't have a quick way to */ +/* retrieve the advances. */ +/* */ +/* A scaled advance is returned in 16.16 format but isn't transformed */ +/* by the affine transformation specified by @FT_Set_Transform. */ +/* */ +FT_EXPORT( FT_Error ) +FT_Get_Advance( FT_Face face, + FT_UInt gindex, + FT_Int32 load_flags, + FT_Fixed *padvance ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Get_Advances */ +/* */ +/* <Description> */ +/* Retrieve the advance values of several glyph outlines in an */ +/* @FT_Face. By default, the unhinted advances are returned in font */ +/* units. */ +/* */ +/* <Input> */ +/* face :: The source @FT_Face handle. */ +/* */ +/* start :: The first glyph index. */ +/* */ +/* count :: The number of advance values you want to retrieve. */ +/* */ +/* load_flags :: A set of bit flags similar to those used when */ +/* calling @FT_Load_Glyph. */ +/* */ +/* <Output> */ +/* padvance :: The advances, in either font units or 16.16 format. */ +/* This array must contain at least `count' elements. */ +/* */ +/* If @FT_LOAD_VERTICAL_LAYOUT is set, these are the */ +/* vertical advances corresponding to a vertical layout. */ +/* Otherwise, they are the horizontal advances in a */ +/* horizontal layout. */ +/* */ +/* <Return> */ +/* FreeType error code. 0 means success. */ +/* */ +/* <Note> */ +/* This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and */ +/* if the corresponding font backend doesn't have a quick way to */ +/* retrieve the advances. */ +/* */ +/* Scaled advances are returned in 16.16 format but aren't */ +/* transformed by the affine transformation specified by */ +/* @FT_Set_Transform. */ +/* */ +FT_EXPORT( FT_Error ) +FT_Get_Advances( FT_Face face, + FT_UInt start, + FT_UInt count, + FT_Int32 load_flags, + FT_Fixed *padvances ); /* */ diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/ftautoh.h b/thirdparties/common/include/libfreetype/freetype2/freetype/ftautoh.h index 62ce96d..25d34b1 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/ftautoh.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/ftautoh.h @@ -32,314 +32,312 @@ FT_BEGIN_HEADER - /************************************************************************** - * - * @section: - * auto_hinter - * - * @title: - * The auto-hinter - * - * @abstract: - * Controlling the auto-hinting module. - * - * @description: - * While FreeType's auto-hinter doesn't expose API functions by itself, - * it is possible to control its behaviour with @FT_Property_Set and - * @FT_Property_Get. The following lists the available properties - * together with the necessary macros and structures. - * - * Note that the auto-hinter's module name is `autofitter' for - * historical reasons. - * - */ +/************************************************************************** + * + * @section: + * auto_hinter + * + * @title: + * The auto-hinter + * + * @abstract: + * Controlling the auto-hinting module. + * + * @description: + * While FreeType's auto-hinter doesn't expose API functions by itself, + * it is possible to control its behaviour with @FT_Property_Set and + * @FT_Property_Get. The following lists the available properties + * together with the necessary macros and structures. + * + * Note that the auto-hinter's module name is `autofitter' for + * historical reasons. + * + */ - /************************************************************************** - * - * @property: - * glyph-to-script-map - * - * @description: - * The auto-hinter provides various script modules to hint glyphs. - * Examples of supported scripts are Latin or CJK. Before a glyph is - * auto-hinted, the Unicode character map of the font gets examined, and - * the script is then determined based on Unicode character ranges, see - * below. - * - * OpenType fonts, however, often provide much more glyphs than - * character codes (small caps, superscripts, ligatures, swashes, etc.), - * to be controlled by so-called `features'. Handling OpenType features - * can be quite complicated and thus needs a separate library on top of - * FreeType. - * - * The mapping between glyph indices and scripts (in the auto-hinter - * sense, see the @FT_AUTOHINTER_SCRIPT_XXX values) is stored as an - * array with `num_glyphs' elements, as found in the font's @FT_Face - * structure. The `glyph-to-script-map' property returns a pointer to - * this array which can be modified as needed. Note that the - * modification should happen before the first glyph gets processed by - * the auto-hinter so that the global analysis of the font shapes - * actually uses the modified mapping. - * - * The following example code demonstrates how to access it (omitting - * the error handling). - * - * { - * FT_Library library; - * FT_Face face; - * FT_Prop_GlyphToScriptMap prop; - * - * - * FT_Init_FreeType( &library ); - * FT_New_Face( library, "foo.ttf", 0, &face ); - * - * prop.face = face; - * - * FT_Property_Get( library, "autofitter", - * "glyph-to-script-map", &prop ); - * - * // adjust `prop.map' as needed right here - * - * FT_Load_Glyph( face, ..., FT_LOAD_FORCE_AUTOHINT ); - * } - * - */ +/************************************************************************** + * + * @property: + * glyph-to-script-map + * + * @description: + * The auto-hinter provides various script modules to hint glyphs. + * Examples of supported scripts are Latin or CJK. Before a glyph is + * auto-hinted, the Unicode character map of the font gets examined, and + * the script is then determined based on Unicode character ranges, see + * below. + * + * OpenType fonts, however, often provide much more glyphs than + * character codes (small caps, superscripts, ligatures, swashes, etc.), + * to be controlled by so-called `features'. Handling OpenType features + * can be quite complicated and thus needs a separate library on top of + * FreeType. + * + * The mapping between glyph indices and scripts (in the auto-hinter + * sense, see the @FT_AUTOHINTER_SCRIPT_XXX values) is stored as an + * array with `num_glyphs' elements, as found in the font's @FT_Face + * structure. The `glyph-to-script-map' property returns a pointer to + * this array which can be modified as needed. Note that the + * modification should happen before the first glyph gets processed by + * the auto-hinter so that the global analysis of the font shapes + * actually uses the modified mapping. + * + * The following example code demonstrates how to access it (omitting + * the error handling). + * + * { + * FT_Library library; + * FT_Face face; + * FT_Prop_GlyphToScriptMap prop; + * + * + * FT_Init_FreeType( &library ); + * FT_New_Face( library, "foo.ttf", 0, &face ); + * + * prop.face = face; + * + * FT_Property_Get( library, "autofitter", + * "glyph-to-script-map", &prop ); + * + * // adjust `prop.map' as needed right here + * + * FT_Load_Glyph( face, ..., FT_LOAD_FORCE_AUTOHINT ); + * } + * + */ - /************************************************************************** - * - * @enum: - * FT_AUTOHINTER_SCRIPT_XXX - * - * @description: - * A list of constants used for the @glyph-to-script-map property to - * specify the script submodule the auto-hinter should use for hinting a - * particular glyph. - * - * @values: - * FT_AUTOHINTER_SCRIPT_NONE :: - * Don't auto-hint this glyph. - * - * FT_AUTOHINTER_SCRIPT_LATIN :: - * Apply the latin auto-hinter. For the auto-hinter, `latin' is a - * very broad term, including Cyrillic and Greek also since characters - * from those scripts share the same design constraints. - * - * By default, characters from the following Unicode ranges are - * assigned to this submodule. - * - * { - * U+0020 - U+007F // Basic Latin (no control characters) - * U+00A0 - U+00FF // Latin-1 Supplement (no control characters) - * U+0100 - U+017F // Latin Extended-A - * U+0180 - U+024F // Latin Extended-B - * U+0250 - U+02AF // IPA Extensions - * U+02B0 - U+02FF // Spacing Modifier Letters - * U+0300 - U+036F // Combining Diacritical Marks - * U+0370 - U+03FF // Greek and Coptic - * U+0400 - U+04FF // Cyrillic - * U+0500 - U+052F // Cyrillic Supplement - * U+1D00 - U+1D7F // Phonetic Extensions - * U+1D80 - U+1DBF // Phonetic Extensions Supplement - * U+1DC0 - U+1DFF // Combining Diacritical Marks Supplement - * U+1E00 - U+1EFF // Latin Extended Additional - * U+1F00 - U+1FFF // Greek Extended - * U+2000 - U+206F // General Punctuation - * U+2070 - U+209F // Superscripts and Subscripts - * U+20A0 - U+20CF // Currency Symbols - * U+2150 - U+218F // Number Forms - * U+2460 - U+24FF // Enclosed Alphanumerics - * U+2C60 - U+2C7F // Latin Extended-C - * U+2DE0 - U+2DFF // Cyrillic Extended-A - * U+2E00 - U+2E7F // Supplemental Punctuation - * U+A640 - U+A69F // Cyrillic Extended-B - * U+A720 - U+A7FF // Latin Extended-D - * U+FB00 - U+FB06 // Alphab. Present. Forms (Latin Ligatures) - * U+1D400 - U+1D7FF // Mathematical Alphanumeric Symbols - * U+1F100 - U+1F1FF // Enclosed Alphanumeric Supplement - * } - * - * FT_AUTOHINTER_SCRIPT_CJK :: - * Apply the CJK auto-hinter, covering Chinese, Japanese, Korean, old - * Vietnamese, and some other scripts. - * - * By default, characters from the following Unicode ranges are - * assigned to this submodule. - * - * { - * U+1100 - U+11FF // Hangul Jamo - * U+2E80 - U+2EFF // CJK Radicals Supplement - * U+2F00 - U+2FDF // Kangxi Radicals - * U+2FF0 - U+2FFF // Ideographic Description Characters - * U+3000 - U+303F // CJK Symbols and Punctuation - * U+3040 - U+309F // Hiragana - * U+30A0 - U+30FF // Katakana - * U+3100 - U+312F // Bopomofo - * U+3130 - U+318F // Hangul Compatibility Jamo - * U+3190 - U+319F // Kanbun - * U+31A0 - U+31BF // Bopomofo Extended - * U+31C0 - U+31EF // CJK Strokes - * U+31F0 - U+31FF // Katakana Phonetic Extensions - * U+3200 - U+32FF // Enclosed CJK Letters and Months - * U+3300 - U+33FF // CJK Compatibility - * U+3400 - U+4DBF // CJK Unified Ideographs Extension A - * U+4DC0 - U+4DFF // Yijing Hexagram Symbols - * U+4E00 - U+9FFF // CJK Unified Ideographs - * U+A960 - U+A97F // Hangul Jamo Extended-A - * U+AC00 - U+D7AF // Hangul Syllables - * U+D7B0 - U+D7FF // Hangul Jamo Extended-B - * U+F900 - U+FAFF // CJK Compatibility Ideographs - * U+FE10 - U+FE1F // Vertical forms - * U+FE30 - U+FE4F // CJK Compatibility Forms - * U+FF00 - U+FFEF // Halfwidth and Fullwidth Forms - * U+1B000 - U+1B0FF // Kana Supplement - * U+1D300 - U+1D35F // Tai Xuan Hing Symbols - * U+1F200 - U+1F2FF // Enclosed Ideographic Supplement - * U+20000 - U+2A6DF // CJK Unified Ideographs Extension B - * U+2A700 - U+2B73F // CJK Unified Ideographs Extension C - * U+2B740 - U+2B81F // CJK Unified Ideographs Extension D - * U+2F800 - U+2FA1F // CJK Compatibility Ideographs Supplement - * } - * - * FT_AUTOHINTER_SCRIPT_INDIC :: - * Apply the indic auto-hinter, covering all major scripts from the - * Indian sub-continent and some other related scripts like Thai, Lao, - * or Tibetan. - * - * By default, characters from the following Unicode ranges are - * assigned to this submodule. - * - * { - * U+0900 - U+0DFF // Indic Range - * U+0F00 - U+0FFF // Tibetan - * U+1900 - U+194F // Limbu - * U+1B80 - U+1BBF // Sundanese - * U+1C80 - U+1CDF // Meetei Mayak - * U+A800 - U+A82F // Syloti Nagri - * U+11800 - U+118DF // Sharada - * } - * - * Note that currently Indic support is rudimentary only, missing blue - * zone support. - * - */ +/************************************************************************** + * + * @enum: + * FT_AUTOHINTER_SCRIPT_XXX + * + * @description: + * A list of constants used for the @glyph-to-script-map property to + * specify the script submodule the auto-hinter should use for hinting a + * particular glyph. + * + * @values: + * FT_AUTOHINTER_SCRIPT_NONE :: + * Don't auto-hint this glyph. + * + * FT_AUTOHINTER_SCRIPT_LATIN :: + * Apply the latin auto-hinter. For the auto-hinter, `latin' is a + * very broad term, including Cyrillic and Greek also since characters + * from those scripts share the same design constraints. + * + * By default, characters from the following Unicode ranges are + * assigned to this submodule. + * + * { + * U+0020 - U+007F // Basic Latin (no control characters) + * U+00A0 - U+00FF // Latin-1 Supplement (no control characters) + * U+0100 - U+017F // Latin Extended-A + * U+0180 - U+024F // Latin Extended-B + * U+0250 - U+02AF // IPA Extensions + * U+02B0 - U+02FF // Spacing Modifier Letters + * U+0300 - U+036F // Combining Diacritical Marks + * U+0370 - U+03FF // Greek and Coptic + * U+0400 - U+04FF // Cyrillic + * U+0500 - U+052F // Cyrillic Supplement + * U+1D00 - U+1D7F // Phonetic Extensions + * U+1D80 - U+1DBF // Phonetic Extensions Supplement + * U+1DC0 - U+1DFF // Combining Diacritical Marks Supplement + * U+1E00 - U+1EFF // Latin Extended Additional + * U+1F00 - U+1FFF // Greek Extended + * U+2000 - U+206F // General Punctuation + * U+2070 - U+209F // Superscripts and Subscripts + * U+20A0 - U+20CF // Currency Symbols + * U+2150 - U+218F // Number Forms + * U+2460 - U+24FF // Enclosed Alphanumerics + * U+2C60 - U+2C7F // Latin Extended-C + * U+2DE0 - U+2DFF // Cyrillic Extended-A + * U+2E00 - U+2E7F // Supplemental Punctuation + * U+A640 - U+A69F // Cyrillic Extended-B + * U+A720 - U+A7FF // Latin Extended-D + * U+FB00 - U+FB06 // Alphab. Present. Forms (Latin Ligatures) + * U+1D400 - U+1D7FF // Mathematical Alphanumeric Symbols + * U+1F100 - U+1F1FF // Enclosed Alphanumeric Supplement + * } + * + * FT_AUTOHINTER_SCRIPT_CJK :: + * Apply the CJK auto-hinter, covering Chinese, Japanese, Korean, old + * Vietnamese, and some other scripts. + * + * By default, characters from the following Unicode ranges are + * assigned to this submodule. + * + * { + * U+1100 - U+11FF // Hangul Jamo + * U+2E80 - U+2EFF // CJK Radicals Supplement + * U+2F00 - U+2FDF // Kangxi Radicals + * U+2FF0 - U+2FFF // Ideographic Description Characters + * U+3000 - U+303F // CJK Symbols and Punctuation + * U+3040 - U+309F // Hiragana + * U+30A0 - U+30FF // Katakana + * U+3100 - U+312F // Bopomofo + * U+3130 - U+318F // Hangul Compatibility Jamo + * U+3190 - U+319F // Kanbun + * U+31A0 - U+31BF // Bopomofo Extended + * U+31C0 - U+31EF // CJK Strokes + * U+31F0 - U+31FF // Katakana Phonetic Extensions + * U+3200 - U+32FF // Enclosed CJK Letters and Months + * U+3300 - U+33FF // CJK Compatibility + * U+3400 - U+4DBF // CJK Unified Ideographs Extension A + * U+4DC0 - U+4DFF // Yijing Hexagram Symbols + * U+4E00 - U+9FFF // CJK Unified Ideographs + * U+A960 - U+A97F // Hangul Jamo Extended-A + * U+AC00 - U+D7AF // Hangul Syllables + * U+D7B0 - U+D7FF // Hangul Jamo Extended-B + * U+F900 - U+FAFF // CJK Compatibility Ideographs + * U+FE10 - U+FE1F // Vertical forms + * U+FE30 - U+FE4F // CJK Compatibility Forms + * U+FF00 - U+FFEF // Halfwidth and Fullwidth Forms + * U+1B000 - U+1B0FF // Kana Supplement + * U+1D300 - U+1D35F // Tai Xuan Hing Symbols + * U+1F200 - U+1F2FF // Enclosed Ideographic Supplement + * U+20000 - U+2A6DF // CJK Unified Ideographs Extension B + * U+2A700 - U+2B73F // CJK Unified Ideographs Extension C + * U+2B740 - U+2B81F // CJK Unified Ideographs Extension D + * U+2F800 - U+2FA1F // CJK Compatibility Ideographs Supplement + * } + * + * FT_AUTOHINTER_SCRIPT_INDIC :: + * Apply the indic auto-hinter, covering all major scripts from the + * Indian sub-continent and some other related scripts like Thai, Lao, + * or Tibetan. + * + * By default, characters from the following Unicode ranges are + * assigned to this submodule. + * + * { + * U+0900 - U+0DFF // Indic Range + * U+0F00 - U+0FFF // Tibetan + * U+1900 - U+194F // Limbu + * U+1B80 - U+1BBF // Sundanese + * U+1C80 - U+1CDF // Meetei Mayak + * U+A800 - U+A82F // Syloti Nagri + * U+11800 - U+118DF // Sharada + * } + * + * Note that currently Indic support is rudimentary only, missing blue + * zone support. + * + */ #define FT_AUTOHINTER_SCRIPT_NONE 0 #define FT_AUTOHINTER_SCRIPT_LATIN 1 #define FT_AUTOHINTER_SCRIPT_CJK 2 #define FT_AUTOHINTER_SCRIPT_INDIC 3 - /************************************************************************** - * - * @struct: - * FT_Prop_GlyphToScriptMap - * - * @description: - * The data exchange structure for the @glyph-to-script-map property. - * - */ - typedef struct FT_Prop_GlyphToScriptMap_ - { - FT_Face face; - FT_Byte* map; +/************************************************************************** + * + * @struct: + * FT_Prop_GlyphToScriptMap + * + * @description: + * The data exchange structure for the @glyph-to-script-map property. + * + */ +typedef struct FT_Prop_GlyphToScriptMap_ { + FT_Face face; + FT_Byte* map; - } FT_Prop_GlyphToScriptMap; +} FT_Prop_GlyphToScriptMap; - /************************************************************************** - * - * @property: - * fallback-script - * - * @description: - * If no auto-hinter script module can be assigned to a glyph, a - * fallback script gets assigned to it (see also the - * @glyph-to-script-map property). By default, this is - * @FT_AUTOHINTER_SCRIPT_CJK. Using the `fallback-script' property, - * this fallback value can be changed. - * - * { - * FT_Library library; - * FT_UInt fallback_script = FT_AUTOHINTER_SCRIPT_NONE; - * - * - * FT_Init_FreeType( &library ); - * - * FT_Property_Set( library, "autofitter", - * "fallback-script", &fallback_script ); - * } - * - * @note: - * This property can be used with @FT_Property_Get also. - * - * It's important to use the right timing for changing this value: The - * creation of the glyph-to-script map which eventually uses the - * fallback script value gets triggered either by setting or reading a - * face-specific property like @glyph-to-script-map, or by auto-hinting - * any glyph from that face. In particular, if you have already created - * an @FT_Face structure but not loaded any glyph (using the - * auto-hinter), a change of the fallback glyph will affect this face. - * - */ +/************************************************************************** + * + * @property: + * fallback-script + * + * @description: + * If no auto-hinter script module can be assigned to a glyph, a + * fallback script gets assigned to it (see also the + * @glyph-to-script-map property). By default, this is + * @FT_AUTOHINTER_SCRIPT_CJK. Using the `fallback-script' property, + * this fallback value can be changed. + * + * { + * FT_Library library; + * FT_UInt fallback_script = FT_AUTOHINTER_SCRIPT_NONE; + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "autofitter", + * "fallback-script", &fallback_script ); + * } + * + * @note: + * This property can be used with @FT_Property_Get also. + * + * It's important to use the right timing for changing this value: The + * creation of the glyph-to-script map which eventually uses the + * fallback script value gets triggered either by setting or reading a + * face-specific property like @glyph-to-script-map, or by auto-hinting + * any glyph from that face. In particular, if you have already created + * an @FT_Face structure but not loaded any glyph (using the + * auto-hinter), a change of the fallback glyph will affect this face. + * + */ - /************************************************************************** - * - * @property: - * increase-x-height - * - * @description: - * For ppem values in the range 6~<= ppem <= `increase-x-height', round - * up the font's x~height much more often than normally. If the value - * is set to~0, which is the default, this feature is switched off. Use - * this property to improve the legibility of small font sizes if - * necessary. - * - * { - * FT_Library library; - * FT_Face face; - * FT_Prop_IncreaseXHeight prop; - * - * - * FT_Init_FreeType( &library ); - * FT_New_Face( library, "foo.ttf", 0, &face ); - * FT_Set_Char_Size( face, 10 * 64, 0, 72, 0 ); - * - * prop.face = face; - * prop.limit = 14; - * - * FT_Property_Set( library, "autofitter", - * "increase-x-height", &prop ); - * } - * - * @note: - * This property can be used with @FT_Property_Get also. - * - * Set this value right after calling @FT_Set_Char_Size, but before - * loading any glyph (using the auto-hinter). - * - */ +/************************************************************************** + * + * @property: + * increase-x-height + * + * @description: + * For ppem values in the range 6~<= ppem <= `increase-x-height', round + * up the font's x~height much more often than normally. If the value + * is set to~0, which is the default, this feature is switched off. Use + * this property to improve the legibility of small font sizes if + * necessary. + * + * { + * FT_Library library; + * FT_Face face; + * FT_Prop_IncreaseXHeight prop; + * + * + * FT_Init_FreeType( &library ); + * FT_New_Face( library, "foo.ttf", 0, &face ); + * FT_Set_Char_Size( face, 10 * 64, 0, 72, 0 ); + * + * prop.face = face; + * prop.limit = 14; + * + * FT_Property_Set( library, "autofitter", + * "increase-x-height", &prop ); + * } + * + * @note: + * This property can be used with @FT_Property_Get also. + * + * Set this value right after calling @FT_Set_Char_Size, but before + * loading any glyph (using the auto-hinter). + * + */ - /************************************************************************** - * - * @struct: - * FT_Prop_IncreaseXHeight - * - * @description: - * The data exchange structure for the @increase-x-height property. - * - */ - typedef struct FT_Prop_IncreaseXHeight_ - { - FT_Face face; - FT_UInt limit; +/************************************************************************** + * + * @struct: + * FT_Prop_IncreaseXHeight + * + * @description: + * The data exchange structure for the @increase-x-height property. + * + */ +typedef struct FT_Prop_IncreaseXHeight_ { + FT_Face face; + FT_UInt limit; - } FT_Prop_IncreaseXHeight; +} FT_Prop_IncreaseXHeight; - /* */ +/* */ FT_END_HEADER diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/ftbbox.h b/thirdparties/common/include/libfreetype/freetype2/freetype/ftbbox.h index 9766919..389aa1c 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/ftbbox.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/ftbbox.h @@ -16,15 +16,15 @@ /***************************************************************************/ - /*************************************************************************/ - /* */ - /* This component has a _single_ role: to compute exact outline bounding */ - /* boxes. */ - /* */ - /* It is separated from the rest of the engine for various technical */ - /* reasons. It may well be integrated in `ftoutln' later. */ - /* */ - /*************************************************************************/ +/*************************************************************************/ +/* */ +/* This component has a _single_ role: to compute exact outline bounding */ +/* boxes. */ +/* */ +/* It is separated from the rest of the engine for various technical */ +/* reasons. It may well be integrated in `ftoutln' later. */ +/* */ +/*************************************************************************/ #ifndef __FTBBOX_H__ @@ -44,49 +44,49 @@ FT_BEGIN_HEADER - /*************************************************************************/ - /* */ - /* <Section> */ - /* outline_processing */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Get_BBox */ - /* */ - /* <Description> */ - /* Compute the exact bounding box of an outline. This is slower */ - /* than computing the control box. However, it uses an advanced */ - /* algorithm which returns _very_ quickly when the two boxes */ - /* coincide. Otherwise, the outline Bézier arcs are traversed to */ - /* extract their extrema. */ - /* */ - /* <Input> */ - /* outline :: A pointer to the source outline. */ - /* */ - /* <Output> */ - /* abbox :: The outline's exact bounding box. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* If the font is tricky and the glyph has been loaded with */ - /* @FT_LOAD_NO_SCALE, the resulting BBox is meaningless. To get */ - /* reasonable values for the BBox it is necessary to load the glyph */ - /* at a large ppem value (so that the hinting instructions can */ - /* properly shift and scale the subglyphs), then extracting the BBox */ - /* which can be eventually converted back to font units. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Outline_Get_BBox( FT_Outline* outline, - FT_BBox *abbox ); - - - /* */ +/*************************************************************************/ +/* */ +/* <Section> */ +/* outline_processing */ +/* */ +/*************************************************************************/ + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Outline_Get_BBox */ +/* */ +/* <Description> */ +/* Compute the exact bounding box of an outline. This is slower */ +/* than computing the control box. However, it uses an advanced */ +/* algorithm which returns _very_ quickly when the two boxes */ +/* coincide. Otherwise, the outline Bézier arcs are traversed to */ +/* extract their extrema. */ +/* */ +/* <Input> */ +/* outline :: A pointer to the source outline. */ +/* */ +/* <Output> */ +/* abbox :: The outline's exact bounding box. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +/* <Note> */ +/* If the font is tricky and the glyph has been loaded with */ +/* @FT_LOAD_NO_SCALE, the resulting BBox is meaningless. To get */ +/* reasonable values for the BBox it is necessary to load the glyph */ +/* at a large ppem value (so that the hinting instructions can */ +/* properly shift and scale the subglyphs), then extracting the BBox */ +/* which can be eventually converted back to font units. */ +/* */ +FT_EXPORT( FT_Error ) +FT_Outline_Get_BBox( FT_Outline* outline, + FT_BBox *abbox ); + + +/* */ FT_END_HEADER diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/ftbdf.h b/thirdparties/common/include/libfreetype/freetype2/freetype/ftbdf.h index 4f8baf8..9199906 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/ftbdf.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/ftbdf.h @@ -32,174 +32,172 @@ FT_BEGIN_HEADER - /*************************************************************************/ - /* */ - /* <Section> */ - /* bdf_fonts */ - /* */ - /* <Title> */ - /* BDF and PCF Files */ - /* */ - /* <Abstract> */ - /* BDF and PCF specific API. */ - /* */ - /* <Description> */ - /* This section contains the declaration of functions specific to BDF */ - /* and PCF fonts. */ - /* */ - /*************************************************************************/ - - - /********************************************************************** - * - * @enum: - * FT_PropertyType - * - * @description: - * A list of BDF property types. - * - * @values: - * BDF_PROPERTY_TYPE_NONE :: - * Value~0 is used to indicate a missing property. - * - * BDF_PROPERTY_TYPE_ATOM :: - * Property is a string atom. - * - * BDF_PROPERTY_TYPE_INTEGER :: - * Property is a 32-bit signed integer. - * - * BDF_PROPERTY_TYPE_CARDINAL :: - * Property is a 32-bit unsigned integer. - */ - typedef enum BDF_PropertyType_ - { +/*************************************************************************/ +/* */ +/* <Section> */ +/* bdf_fonts */ +/* */ +/* <Title> */ +/* BDF and PCF Files */ +/* */ +/* <Abstract> */ +/* BDF and PCF specific API. */ +/* */ +/* <Description> */ +/* This section contains the declaration of functions specific to BDF */ +/* and PCF fonts. */ +/* */ +/*************************************************************************/ + + +/********************************************************************** + * + * @enum: + * FT_PropertyType + * + * @description: + * A list of BDF property types. + * + * @values: + * BDF_PROPERTY_TYPE_NONE :: + * Value~0 is used to indicate a missing property. + * + * BDF_PROPERTY_TYPE_ATOM :: + * Property is a string atom. + * + * BDF_PROPERTY_TYPE_INTEGER :: + * Property is a 32-bit signed integer. + * + * BDF_PROPERTY_TYPE_CARDINAL :: + * Property is a 32-bit unsigned integer. + */ +typedef enum BDF_PropertyType_ { BDF_PROPERTY_TYPE_NONE = 0, BDF_PROPERTY_TYPE_ATOM = 1, BDF_PROPERTY_TYPE_INTEGER = 2, BDF_PROPERTY_TYPE_CARDINAL = 3 - } BDF_PropertyType; - - - /********************************************************************** - * - * @type: - * BDF_Property - * - * @description: - * A handle to a @BDF_PropertyRec structure to model a given - * BDF/PCF property. - */ - typedef struct BDF_PropertyRec_* BDF_Property; - - - /********************************************************************** - * - * @struct: - * BDF_PropertyRec - * - * @description: - * This structure models a given BDF/PCF property. - * - * @fields: - * type :: - * The property type. - * - * u.atom :: - * The atom string, if type is @BDF_PROPERTY_TYPE_ATOM. - * - * u.integer :: - * A signed integer, if type is @BDF_PROPERTY_TYPE_INTEGER. - * - * u.cardinal :: - * An unsigned integer, if type is @BDF_PROPERTY_TYPE_CARDINAL. - */ - typedef struct BDF_PropertyRec_ - { +} BDF_PropertyType; + + +/********************************************************************** + * + * @type: + * BDF_Property + * + * @description: + * A handle to a @BDF_PropertyRec structure to model a given + * BDF/PCF property. + */ +typedef struct BDF_PropertyRec_* BDF_Property; + + +/********************************************************************** + * + * @struct: + * BDF_PropertyRec + * + * @description: + * This structure models a given BDF/PCF property. + * + * @fields: + * type :: + * The property type. + * + * u.atom :: + * The atom string, if type is @BDF_PROPERTY_TYPE_ATOM. + * + * u.integer :: + * A signed integer, if type is @BDF_PROPERTY_TYPE_INTEGER. + * + * u.cardinal :: + * An unsigned integer, if type is @BDF_PROPERTY_TYPE_CARDINAL. + */ +typedef struct BDF_PropertyRec_ { BDF_PropertyType type; union { - const char* atom; - FT_Int32 integer; - FT_UInt32 cardinal; + const char* atom; + FT_Int32 integer; + FT_UInt32 cardinal; } u; - } BDF_PropertyRec; - - - /********************************************************************** - * - * @function: - * FT_Get_BDF_Charset_ID - * - * @description: - * Retrieve a BDF font character set identity, according to - * the BDF specification. - * - * @input: - * face :: - * A handle to the input face. - * - * @output: - * acharset_encoding :: - * Charset encoding, as a C~string, owned by the face. - * - * acharset_registry :: - * Charset registry, as a C~string, owned by the face. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * This function only works with BDF faces, returning an error otherwise. - */ - FT_EXPORT( FT_Error ) - FT_Get_BDF_Charset_ID( FT_Face face, - const char* *acharset_encoding, - const char* *acharset_registry ); - - - /********************************************************************** - * - * @function: - * FT_Get_BDF_Property - * - * @description: - * Retrieve a BDF property from a BDF or PCF font file. - * - * @input: - * face :: A handle to the input face. - * - * name :: The property name. - * - * @output: - * aproperty :: The property. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * This function works with BDF _and_ PCF fonts. It returns an error - * otherwise. It also returns an error if the property is not in the - * font. - * - * A `property' is a either key-value pair within the STARTPROPERTIES - * ... ENDPROPERTIES block of a BDF font or a key-value pair from the - * `info->props' array within a `FontRec' structure of a PCF font. - * - * Integer properties are always stored as `signed' within PCF fonts; - * consequently, @BDF_PROPERTY_TYPE_CARDINAL is a possible return value - * for BDF fonts only. - * - * In case of error, `aproperty->type' is always set to - * @BDF_PROPERTY_TYPE_NONE. - */ - FT_EXPORT( FT_Error ) - FT_Get_BDF_Property( FT_Face face, - const char* prop_name, - BDF_PropertyRec *aproperty ); - - /* */ +} BDF_PropertyRec; + + +/********************************************************************** + * + * @function: + * FT_Get_BDF_Charset_ID + * + * @description: + * Retrieve a BDF font character set identity, according to + * the BDF specification. + * + * @input: + * face :: + * A handle to the input face. + * + * @output: + * acharset_encoding :: + * Charset encoding, as a C~string, owned by the face. + * + * acharset_registry :: + * Charset registry, as a C~string, owned by the face. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with BDF faces, returning an error otherwise. + */ +FT_EXPORT( FT_Error ) +FT_Get_BDF_Charset_ID( FT_Face face, + const char**acharset_encoding, + const char**acharset_registry ); + + +/********************************************************************** + * + * @function: + * FT_Get_BDF_Property + * + * @description: + * Retrieve a BDF property from a BDF or PCF font file. + * + * @input: + * face :: A handle to the input face. + * + * name :: The property name. + * + * @output: + * aproperty :: The property. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function works with BDF _and_ PCF fonts. It returns an error + * otherwise. It also returns an error if the property is not in the + * font. + * + * A `property' is a either key-value pair within the STARTPROPERTIES + * ... ENDPROPERTIES block of a BDF font or a key-value pair from the + * `info->props' array within a `FontRec' structure of a PCF font. + * + * Integer properties are always stored as `signed' within PCF fonts; + * consequently, @BDF_PROPERTY_TYPE_CARDINAL is a possible return value + * for BDF fonts only. + * + * In case of error, `aproperty->type' is always set to + * @BDF_PROPERTY_TYPE_NONE. + */ +FT_EXPORT( FT_Error ) +FT_Get_BDF_Property( FT_Face face, + const char* prop_name, + BDF_PropertyRec *aproperty ); + +/* */ FT_END_HEADER diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/ftbitmap.h b/thirdparties/common/include/libfreetype/freetype2/freetype/ftbitmap.h index 9274236..9e324fe 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/ftbitmap.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/ftbitmap.h @@ -33,190 +33,190 @@ 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> */ - /* Copy a 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( 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. */ - /* */ - /* If you want to embolden the bitmap owned by a @FT_GlyphSlotRec, */ - /* you should call @FT_GlyphSlot_Own_Bitmap on the slot first. */ - /* */ - FT_EXPORT( 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_GlyphSlot_Own_Bitmap */ - /* */ - /* <Description> */ - /* Make sure that a glyph slot owns `slot->bitmap'. */ - /* */ - /* <Input> */ - /* slot :: The glyph slot. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* This function is to be used in combination with */ - /* @FT_Bitmap_Embolden. */ - /* */ - FT_EXPORT( FT_Error ) - FT_GlyphSlot_Own_Bitmap( FT_GlyphSlot slot ); - - - /*************************************************************************/ - /* */ - /* <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 ); - - - /* */ +/*************************************************************************/ +/* */ +/* <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> */ +/* Copy a 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( 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. */ +/* */ +/* If you want to embolden the bitmap owned by a @FT_GlyphSlotRec, */ +/* you should call @FT_GlyphSlot_Own_Bitmap on the slot first. */ +/* */ +FT_EXPORT( 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_GlyphSlot_Own_Bitmap */ +/* */ +/* <Description> */ +/* Make sure that a glyph slot owns `slot->bitmap'. */ +/* */ +/* <Input> */ +/* slot :: The glyph slot. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +/* <Note> */ +/* This function is to be used in combination with */ +/* @FT_Bitmap_Embolden. */ +/* */ +FT_EXPORT( FT_Error ) +FT_GlyphSlot_Own_Bitmap( FT_GlyphSlot slot ); + + +/*************************************************************************/ +/* */ +/* <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 diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/ftbzip2.h b/thirdparties/common/include/libfreetype/freetype2/freetype/ftbzip2.h index 1bf81b1..f63e9a9 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/ftbzip2.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/ftbzip2.h @@ -31,67 +31,67 @@ FT_BEGIN_HEADER - /*************************************************************************/ - /* */ - /* <Section> */ - /* bzip2 */ - /* */ - /* <Title> */ - /* BZIP2 Streams */ - /* */ - /* <Abstract> */ - /* Using bzip2-compressed font files. */ - /* */ - /* <Description> */ - /* This section contains the declaration of Bzip2-specific functions. */ - /* */ - /*************************************************************************/ +/*************************************************************************/ +/* */ +/* <Section> */ +/* bzip2 */ +/* */ +/* <Title> */ +/* BZIP2 Streams */ +/* */ +/* <Abstract> */ +/* Using bzip2-compressed font files. */ +/* */ +/* <Description> */ +/* This section contains the declaration of Bzip2-specific functions. */ +/* */ +/*************************************************************************/ - /************************************************************************ - * - * @function: - * FT_Stream_OpenBzip2 - * - * @description: - * Open a new stream to parse bzip2-compressed font files. This is - * mainly used to support the compressed `*.pcf.bz2' fonts that come - * with XFree86. - * - * @input: - * stream :: - * The target embedding stream. - * - * source :: - * The source stream. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * The source stream must be opened _before_ calling this function. - * - * Calling the internal function `FT_Stream_Close' on the new stream will - * *not* call `FT_Stream_Close' on the source stream. None of the stream - * objects will be released to the heap. - * - * The stream implementation is very basic and resets the decompression - * process each time seeking backwards is needed within the stream. - * - * In certain builds of the library, bzip2 compression recognition is - * automatically handled when calling @FT_New_Face or @FT_Open_Face. - * This means that if no font driver is capable of handling the raw - * compressed file, the library will try to open a bzip2 compressed stream - * from it and re-open the face with it. - * - * This function may return `FT_Err_Unimplemented_Feature' if your build - * of FreeType was not compiled with bzip2 support. - */ - FT_EXPORT( FT_Error ) - FT_Stream_OpenBzip2( FT_Stream stream, - FT_Stream source ); +/************************************************************************ + * + * @function: + * FT_Stream_OpenBzip2 + * + * @description: + * Open a new stream to parse bzip2-compressed font files. This is + * mainly used to support the compressed `*.pcf.bz2' fonts that come + * with XFree86. + * + * @input: + * stream :: + * The target embedding stream. + * + * source :: + * The source stream. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The source stream must be opened _before_ calling this function. + * + * Calling the internal function `FT_Stream_Close' on the new stream will + * *not* call `FT_Stream_Close' on the source stream. None of the stream + * objects will be released to the heap. + * + * The stream implementation is very basic and resets the decompression + * process each time seeking backwards is needed within the stream. + * + * In certain builds of the library, bzip2 compression recognition is + * automatically handled when calling @FT_New_Face or @FT_Open_Face. + * This means that if no font driver is capable of handling the raw + * compressed file, the library will try to open a bzip2 compressed stream + * from it and re-open the face with it. + * + * This function may return `FT_Err_Unimplemented_Feature' if your build + * of FreeType was not compiled with bzip2 support. + */ +FT_EXPORT( FT_Error ) +FT_Stream_OpenBzip2( FT_Stream stream, + FT_Stream source ); - /* */ +/* */ FT_END_HEADER diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/ftcache.h b/thirdparties/common/include/libfreetype/freetype2/freetype/ftcache.h index 6af5306..7db591c 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/ftcache.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/ftcache.h @@ -27,196 +27,196 @@ FT_BEGIN_HEADER - /************************************************************************* - * - * <Section> - * cache_subsystem - * - * <Title> - * Cache Sub-System - * - * <Abstract> - * How to cache face, size, and glyph data with FreeType~2. - * - * <Description> - * This section describes the FreeType~2 cache sub-system, which is used - * to limit the number of concurrently opened @FT_Face and @FT_Size - * objects, as well as caching information like character maps and glyph - * images while limiting their maximum memory usage. - * - * Note that all types and functions begin with the `FTC_' prefix. - * - * The cache is highly portable and thus doesn't know anything about the - * fonts installed on your system, or how to access them. This implies - * the following scheme: - * - * First, available or installed font faces are uniquely identified by - * @FTC_FaceID values, provided to the cache by the client. Note that - * the cache only stores and compares these values, and doesn't try to - * interpret them in any way. - * - * Second, the cache calls, only when needed, a client-provided function - * to convert an @FTC_FaceID into a new @FT_Face object. The latter is - * then completely managed by the cache, including its termination - * through @FT_Done_Face. To monitor termination of face objects, the - * finalizer callback in the `generic' field of the @FT_Face object can - * be used, which might also be used to store the @FTC_FaceID of the - * face. - * - * Clients are free to map face IDs to anything else. The most simple - * usage is to associate them to a (pathname,face_index) pair that is - * used to call @FT_New_Face. However, more complex schemes are also - * possible. - * - * Note that for the cache to work correctly, the face ID values must be - * *persistent*, which means that the contents they point to should not - * change at runtime, or that their value should not become invalid. - * - * If this is unavoidable (e.g., when a font is uninstalled at runtime), - * you should call @FTC_Manager_RemoveFaceID as soon as possible, to let - * the cache get rid of any references to the old @FTC_FaceID it may - * keep internally. Failure to do so will lead to incorrect behaviour - * or even crashes. - * - * To use the cache, start with calling @FTC_Manager_New to create a new - * @FTC_Manager object, which models a single cache instance. You can - * then look up @FT_Face and @FT_Size objects with - * @FTC_Manager_LookupFace and @FTC_Manager_LookupSize, respectively. - * - * If you want to use the charmap caching, call @FTC_CMapCache_New, then - * later use @FTC_CMapCache_Lookup to perform the equivalent of - * @FT_Get_Char_Index, only much faster. - * - * If you want to use the @FT_Glyph caching, call @FTC_ImageCache, then - * later use @FTC_ImageCache_Lookup to retrieve the corresponding - * @FT_Glyph objects from the cache. - * - * If you need lots of small bitmaps, it is much more memory efficient - * to call @FTC_SBitCache_New followed by @FTC_SBitCache_Lookup. This - * returns @FTC_SBitRec structures, which are used to store small - * bitmaps directly. (A small bitmap is one whose metrics and - * dimensions all fit into 8-bit integers). - * - * We hope to also provide a kerning cache in the near future. - * - * - * <Order> - * FTC_Manager - * FTC_FaceID - * 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_Unref - * - * FTC_ImageCache - * FTC_ImageCache_New - * FTC_ImageCache_Lookup - * - * FTC_SBit - * FTC_SBitCache - * FTC_SBitCache_New - * FTC_SBitCache_Lookup - * - * FTC_CMapCache - * FTC_CMapCache_New - * FTC_CMapCache_Lookup - * - *************************************************************************/ - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** BASIC TYPE DEFINITIONS *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - /************************************************************************* - * - * @type: FTC_FaceID - * - * @description: - * An opaque pointer type that is used to identity face objects. The - * contents of such objects is application-dependent. - * - * These pointers are typically used to point to a user-defined - * structure containing a font file path, and face index. - * - * @note: - * Never use NULL as a valid @FTC_FaceID. - * - * Face IDs are passed by the client to the cache manager, which calls, - * when needed, the @FTC_Face_Requester to translate them into new - * @FT_Face objects. - * - * If the content of a given face ID changes at runtime, or if the value - * becomes invalid (e.g., when uninstalling a font), you should - * immediately call @FTC_Manager_RemoveFaceID before any other cache - * function. - * - * Failure to do so will result in incorrect behaviour or even - * memory leaks and crashes. - */ - typedef FT_Pointer FTC_FaceID; - - - /************************************************************************ - * - * @functype: - * FTC_Face_Requester - * - * @description: - * A callback function provided by client applications. It is used by - * the cache manager to translate a given @FTC_FaceID into a new valid - * @FT_Face object, on demand. - * - * <Input> - * face_id :: - * The face ID to resolve. - * - * library :: - * A handle to a FreeType library object. - * - * req_data :: - * Application-provided request data (see note below). - * - * <Output> - * aface :: - * A new @FT_Face handle. - * - * <Return> - * FreeType error code. 0~means success. - * - * <Note> - * The third parameter `req_data' is the same as the one passed by the - * client when @FTC_Manager_New is called. - * - * The face requester should not perform funny things on the returned - * face object, like creating a new @FT_Size for it, or setting a - * transformation through @FT_Set_Transform! - */ - typedef FT_Error - (*FTC_Face_Requester)( FTC_FaceID face_id, - FT_Library library, - FT_Pointer request_data, - FT_Face* aface ); - - /* */ +/************************************************************************* + * + * <Section> + * cache_subsystem + * + * <Title> + * Cache Sub-System + * + * <Abstract> + * How to cache face, size, and glyph data with FreeType~2. + * + * <Description> + * This section describes the FreeType~2 cache sub-system, which is used + * to limit the number of concurrently opened @FT_Face and @FT_Size + * objects, as well as caching information like character maps and glyph + * images while limiting their maximum memory usage. + * + * Note that all types and functions begin with the `FTC_' prefix. + * + * The cache is highly portable and thus doesn't know anything about the + * fonts installed on your system, or how to access them. This implies + * the following scheme: + * + * First, available or installed font faces are uniquely identified by + * @FTC_FaceID values, provided to the cache by the client. Note that + * the cache only stores and compares these values, and doesn't try to + * interpret them in any way. + * + * Second, the cache calls, only when needed, a client-provided function + * to convert an @FTC_FaceID into a new @FT_Face object. The latter is + * then completely managed by the cache, including its termination + * through @FT_Done_Face. To monitor termination of face objects, the + * finalizer callback in the `generic' field of the @FT_Face object can + * be used, which might also be used to store the @FTC_FaceID of the + * face. + * + * Clients are free to map face IDs to anything else. The most simple + * usage is to associate them to a (pathname,face_index) pair that is + * used to call @FT_New_Face. However, more complex schemes are also + * possible. + * + * Note that for the cache to work correctly, the face ID values must be + * *persistent*, which means that the contents they point to should not + * change at runtime, or that their value should not become invalid. + * + * If this is unavoidable (e.g., when a font is uninstalled at runtime), + * you should call @FTC_Manager_RemoveFaceID as soon as possible, to let + * the cache get rid of any references to the old @FTC_FaceID it may + * keep internally. Failure to do so will lead to incorrect behaviour + * or even crashes. + * + * To use the cache, start with calling @FTC_Manager_New to create a new + * @FTC_Manager object, which models a single cache instance. You can + * then look up @FT_Face and @FT_Size objects with + * @FTC_Manager_LookupFace and @FTC_Manager_LookupSize, respectively. + * + * If you want to use the charmap caching, call @FTC_CMapCache_New, then + * later use @FTC_CMapCache_Lookup to perform the equivalent of + * @FT_Get_Char_Index, only much faster. + * + * If you want to use the @FT_Glyph caching, call @FTC_ImageCache, then + * later use @FTC_ImageCache_Lookup to retrieve the corresponding + * @FT_Glyph objects from the cache. + * + * If you need lots of small bitmaps, it is much more memory efficient + * to call @FTC_SBitCache_New followed by @FTC_SBitCache_Lookup. This + * returns @FTC_SBitRec structures, which are used to store small + * bitmaps directly. (A small bitmap is one whose metrics and + * dimensions all fit into 8-bit integers). + * + * We hope to also provide a kerning cache in the near future. + * + * + * <Order> + * FTC_Manager + * FTC_FaceID + * 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_Unref + * + * FTC_ImageCache + * FTC_ImageCache_New + * FTC_ImageCache_Lookup + * + * FTC_SBit + * FTC_SBitCache + * FTC_SBitCache_New + * FTC_SBitCache_Lookup + * + * FTC_CMapCache + * FTC_CMapCache_New + * FTC_CMapCache_Lookup + * + *************************************************************************/ + + +/*************************************************************************/ +/*************************************************************************/ +/*************************************************************************/ +/***** *****/ +/***** BASIC TYPE DEFINITIONS *****/ +/***** *****/ +/*************************************************************************/ +/*************************************************************************/ +/*************************************************************************/ + + +/************************************************************************* + * + * @type: FTC_FaceID + * + * @description: + * An opaque pointer type that is used to identity face objects. The + * contents of such objects is application-dependent. + * + * These pointers are typically used to point to a user-defined + * structure containing a font file path, and face index. + * + * @note: + * Never use NULL as a valid @FTC_FaceID. + * + * Face IDs are passed by the client to the cache manager, which calls, + * when needed, the @FTC_Face_Requester to translate them into new + * @FT_Face objects. + * + * If the content of a given face ID changes at runtime, or if the value + * becomes invalid (e.g., when uninstalling a font), you should + * immediately call @FTC_Manager_RemoveFaceID before any other cache + * function. + * + * Failure to do so will result in incorrect behaviour or even + * memory leaks and crashes. + */ +typedef FT_Pointer FTC_FaceID; + + +/************************************************************************ + * + * @functype: + * FTC_Face_Requester + * + * @description: + * A callback function provided by client applications. It is used by + * the cache manager to translate a given @FTC_FaceID into a new valid + * @FT_Face object, on demand. + * + * <Input> + * face_id :: + * The face ID to resolve. + * + * library :: + * A handle to a FreeType library object. + * + * req_data :: + * Application-provided request data (see note below). + * + * <Output> + * aface :: + * A new @FT_Face handle. + * + * <Return> + * FreeType error code. 0~means success. + * + * <Note> + * The third parameter `req_data' is the same as the one passed by the + * client when @FTC_Manager_New is called. + * + * The face requester should not perform funny things on the returned + * face object, like creating a new @FT_Size for it, or setting a + * transformation through @FT_Set_Transform! + */ +typedef FT_Error +(*FTC_Face_Requester)( FTC_FaceID face_id, + FT_Library library, + FT_Pointer request_data, + FT_Face* aface ); + +/* */ #ifdef FT_CONFIG_OPTION_OLD_INTERNALS - /* these macros are incompatible with LLP64, should not be used */ +/* these macros are incompatible with LLP64, should not be used */ #define FT_POINTER_TO_ULONG( p ) ( (FT_ULong)(FT_Pointer)(p) ) @@ -226,215 +226,214 @@ FT_BEGIN_HEADER #endif /* FT_CONFIG_OPTION_OLD_INTERNALS */ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** CACHE MANAGER OBJECT *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FTC_Manager */ - /* */ - /* <Description> */ - /* This object corresponds to one instance of the cache-subsystem. */ - /* It is used to cache one or more @FT_Face objects, along with */ - /* corresponding @FT_Size objects. */ - /* */ - /* The manager intentionally limits the total number of opened */ - /* @FT_Face and @FT_Size objects to control memory usage. See the */ - /* `max_faces' and `max_sizes' parameters of @FTC_Manager_New. */ - /* */ - /* The manager is also used to cache `nodes' of various types while */ - /* limiting their total memory usage. */ - /* */ - /* All limitations are enforced by keeping lists of managed objects */ - /* in most-recently-used order, and flushing old nodes to make room */ - /* for new ones. */ - /* */ - typedef struct FTC_ManagerRec_* FTC_Manager; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FTC_Node */ - /* */ - /* <Description> */ - /* An opaque handle to a cache node object. Each cache node is */ - /* reference-counted. A node with a count of~0 might be flushed */ - /* out of a full cache whenever a lookup request is performed. */ - /* */ - /* If you look up nodes, you have the ability to `acquire' them, */ - /* i.e., to increment their reference count. This will prevent the */ - /* node from being flushed out of the cache until you explicitly */ - /* `release' it (see @FTC_Node_Unref). */ - /* */ - /* See also @FTC_SBitCache_Lookup and @FTC_ImageCache_Lookup. */ - /* */ - typedef struct FTC_NodeRec_* FTC_Node; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_Manager_New */ - /* */ - /* <Description> */ - /* Create a new cache manager. */ - /* */ - /* <Input> */ - /* library :: The parent FreeType library handle to use. */ - /* */ - /* max_faces :: Maximum number of opened @FT_Face objects managed by */ - /* this cache instance. Use~0 for defaults. */ - /* */ - /* max_sizes :: Maximum number of opened @FT_Size objects managed by */ - /* this cache instance. Use~0 for defaults. */ - /* */ - /* max_bytes :: Maximum number of bytes to use for cached data nodes. */ - /* Use~0 for defaults. Note that this value does not */ - /* account for managed @FT_Face and @FT_Size objects. */ - /* */ - /* requester :: An application-provided callback used to translate */ - /* face IDs into real @FT_Face objects. */ - /* */ - /* req_data :: A generic pointer that is passed to the requester */ - /* each time it is called (see @FTC_Face_Requester). */ - /* */ - /* <Output> */ - /* amanager :: A handle to a new manager object. 0~in case of */ - /* failure. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FTC_Manager_New( FT_Library library, - FT_UInt max_faces, - FT_UInt max_sizes, - FT_ULong max_bytes, - FTC_Face_Requester requester, - FT_Pointer req_data, - FTC_Manager *amanager ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_Manager_Reset */ - /* */ - /* <Description> */ - /* Empty a given cache manager. This simply gets rid of all the */ - /* currently cached @FT_Face and @FT_Size objects within the manager. */ - /* */ - /* <InOut> */ - /* manager :: A handle to the manager. */ - /* */ - FT_EXPORT( void ) - FTC_Manager_Reset( FTC_Manager manager ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_Manager_Done */ - /* */ - /* <Description> */ - /* Destroy a given manager after emptying it. */ - /* */ - /* <Input> */ - /* manager :: A handle to the target cache manager object. */ - /* */ - FT_EXPORT( void ) - FTC_Manager_Done( FTC_Manager manager ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_Manager_LookupFace */ - /* */ - /* <Description> */ - /* Retrieve the @FT_Face object that corresponds to a given face ID */ - /* through a cache manager. */ - /* */ - /* <Input> */ - /* manager :: A handle to the cache manager. */ - /* */ - /* face_id :: The ID of the face object. */ - /* */ - /* <Output> */ - /* aface :: A handle to the face object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* The returned @FT_Face object is always owned by the manager. You */ - /* should never try to discard it yourself. */ - /* */ - /* The @FT_Face object doesn't necessarily have a current size object */ - /* (i.e., face->size can be 0). If you need a specific `font size', */ - /* use @FTC_Manager_LookupSize instead. */ - /* */ - /* Never change the face's transformation matrix (i.e., never call */ - /* the @FT_Set_Transform function) on a returned face! If you need */ - /* to transform glyphs, do it yourself after glyph loading. */ - /* */ - /* When you perform a lookup, out-of-memory errors are detected */ - /* _within_ the lookup and force incremental flushes of the cache */ - /* until enough memory is released for the lookup to succeed. */ - /* */ - /* If a lookup fails with `FT_Err_Out_Of_Memory' the cache has */ - /* already been completely flushed, and still no memory was available */ - /* for the operation. */ - /* */ - FT_EXPORT( FT_Error ) - FTC_Manager_LookupFace( FTC_Manager manager, - FTC_FaceID face_id, - FT_Face *aface ); - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FTC_ScalerRec */ - /* */ - /* <Description> */ - /* A structure used to describe a given character size in either */ - /* pixels or points to the cache manager. See */ - /* @FTC_Manager_LookupSize. */ - /* */ - /* <Fields> */ - /* face_id :: The source face ID. */ - /* */ - /* width :: The character width. */ - /* */ - /* height :: The character height. */ - /* */ - /* pixel :: A Boolean. If 1, the `width' and `height' fields are */ - /* interpreted as integer pixel character sizes. */ - /* Otherwise, they are expressed as 1/64th of points. */ - /* */ - /* x_res :: Only used when `pixel' is value~0 to indicate the */ - /* horizontal resolution in dpi. */ - /* */ - /* y_res :: Only used when `pixel' is value~0 to indicate the */ - /* vertical resolution in dpi. */ - /* */ - /* <Note> */ - /* This type is mainly used to retrieve @FT_Size objects through the */ - /* cache manager. */ - /* */ - typedef struct FTC_ScalerRec_ - { +/*************************************************************************/ +/*************************************************************************/ +/*************************************************************************/ +/***** *****/ +/***** CACHE MANAGER OBJECT *****/ +/***** *****/ +/*************************************************************************/ +/*************************************************************************/ +/*************************************************************************/ + + +/*************************************************************************/ +/* */ +/* <Type> */ +/* FTC_Manager */ +/* */ +/* <Description> */ +/* This object corresponds to one instance of the cache-subsystem. */ +/* It is used to cache one or more @FT_Face objects, along with */ +/* corresponding @FT_Size objects. */ +/* */ +/* The manager intentionally limits the total number of opened */ +/* @FT_Face and @FT_Size objects to control memory usage. See the */ +/* `max_faces' and `max_sizes' parameters of @FTC_Manager_New. */ +/* */ +/* The manager is also used to cache `nodes' of various types while */ +/* limiting their total memory usage. */ +/* */ +/* All limitations are enforced by keeping lists of managed objects */ +/* in most-recently-used order, and flushing old nodes to make room */ +/* for new ones. */ +/* */ +typedef struct FTC_ManagerRec_* FTC_Manager; + + +/*************************************************************************/ +/* */ +/* <Type> */ +/* FTC_Node */ +/* */ +/* <Description> */ +/* An opaque handle to a cache node object. Each cache node is */ +/* reference-counted. A node with a count of~0 might be flushed */ +/* out of a full cache whenever a lookup request is performed. */ +/* */ +/* If you look up nodes, you have the ability to `acquire' them, */ +/* i.e., to increment their reference count. This will prevent the */ +/* node from being flushed out of the cache until you explicitly */ +/* `release' it (see @FTC_Node_Unref). */ +/* */ +/* See also @FTC_SBitCache_Lookup and @FTC_ImageCache_Lookup. */ +/* */ +typedef struct FTC_NodeRec_* FTC_Node; + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FTC_Manager_New */ +/* */ +/* <Description> */ +/* Create a new cache manager. */ +/* */ +/* <Input> */ +/* library :: The parent FreeType library handle to use. */ +/* */ +/* max_faces :: Maximum number of opened @FT_Face objects managed by */ +/* this cache instance. Use~0 for defaults. */ +/* */ +/* max_sizes :: Maximum number of opened @FT_Size objects managed by */ +/* this cache instance. Use~0 for defaults. */ +/* */ +/* max_bytes :: Maximum number of bytes to use for cached data nodes. */ +/* Use~0 for defaults. Note that this value does not */ +/* account for managed @FT_Face and @FT_Size objects. */ +/* */ +/* requester :: An application-provided callback used to translate */ +/* face IDs into real @FT_Face objects. */ +/* */ +/* req_data :: A generic pointer that is passed to the requester */ +/* each time it is called (see @FTC_Face_Requester). */ +/* */ +/* <Output> */ +/* amanager :: A handle to a new manager object. 0~in case of */ +/* failure. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +FT_EXPORT( FT_Error ) +FTC_Manager_New( FT_Library library, + FT_UInt max_faces, + FT_UInt max_sizes, + FT_ULong max_bytes, + FTC_Face_Requester requester, + FT_Pointer req_data, + FTC_Manager *amanager ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FTC_Manager_Reset */ +/* */ +/* <Description> */ +/* Empty a given cache manager. This simply gets rid of all the */ +/* currently cached @FT_Face and @FT_Size objects within the manager. */ +/* */ +/* <InOut> */ +/* manager :: A handle to the manager. */ +/* */ +FT_EXPORT( void ) +FTC_Manager_Reset( FTC_Manager manager ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FTC_Manager_Done */ +/* */ +/* <Description> */ +/* Destroy a given manager after emptying it. */ +/* */ +/* <Input> */ +/* manager :: A handle to the target cache manager object. */ +/* */ +FT_EXPORT( void ) +FTC_Manager_Done( FTC_Manager manager ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FTC_Manager_LookupFace */ +/* */ +/* <Description> */ +/* Retrieve the @FT_Face object that corresponds to a given face ID */ +/* through a cache manager. */ +/* */ +/* <Input> */ +/* manager :: A handle to the cache manager. */ +/* */ +/* face_id :: The ID of the face object. */ +/* */ +/* <Output> */ +/* aface :: A handle to the face object. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +/* <Note> */ +/* The returned @FT_Face object is always owned by the manager. You */ +/* should never try to discard it yourself. */ +/* */ +/* The @FT_Face object doesn't necessarily have a current size object */ +/* (i.e., face->size can be 0). If you need a specific `font size', */ +/* use @FTC_Manager_LookupSize instead. */ +/* */ +/* Never change the face's transformation matrix (i.e., never call */ +/* the @FT_Set_Transform function) on a returned face! If you need */ +/* to transform glyphs, do it yourself after glyph loading. */ +/* */ +/* When you perform a lookup, out-of-memory errors are detected */ +/* _within_ the lookup and force incremental flushes of the cache */ +/* until enough memory is released for the lookup to succeed. */ +/* */ +/* If a lookup fails with `FT_Err_Out_Of_Memory' the cache has */ +/* already been completely flushed, and still no memory was available */ +/* for the operation. */ +/* */ +FT_EXPORT( FT_Error ) +FTC_Manager_LookupFace( FTC_Manager manager, + FTC_FaceID face_id, + FT_Face *aface ); + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* FTC_ScalerRec */ +/* */ +/* <Description> */ +/* A structure used to describe a given character size in either */ +/* pixels or points to the cache manager. See */ +/* @FTC_Manager_LookupSize. */ +/* */ +/* <Fields> */ +/* face_id :: The source face ID. */ +/* */ +/* width :: The character width. */ +/* */ +/* height :: The character height. */ +/* */ +/* pixel :: A Boolean. If 1, the `width' and `height' fields are */ +/* interpreted as integer pixel character sizes. */ +/* Otherwise, they are expressed as 1/64th of points. */ +/* */ +/* x_res :: Only used when `pixel' is value~0 to indicate the */ +/* horizontal resolution in dpi. */ +/* */ +/* y_res :: Only used when `pixel' is value~0 to indicate the */ +/* vertical resolution in dpi. */ +/* */ +/* <Note> */ +/* This type is mainly used to retrieve @FT_Size objects through the */ +/* cache manager. */ +/* */ +typedef struct FTC_ScalerRec_ { FTC_FaceID face_id; FT_UInt width; FT_UInt height; @@ -442,262 +441,261 @@ FT_BEGIN_HEADER FT_UInt x_res; FT_UInt y_res; - } FTC_ScalerRec; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FTC_Scaler */ - /* */ - /* <Description> */ - /* A handle to an @FTC_ScalerRec structure. */ - /* */ - typedef struct FTC_ScalerRec_* FTC_Scaler; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_Manager_LookupSize */ - /* */ - /* <Description> */ - /* Retrieve the @FT_Size object that corresponds to a given */ - /* @FTC_ScalerRec pointer through a cache manager. */ - /* */ - /* <Input> */ - /* manager :: A handle to the cache manager. */ - /* */ - /* scaler :: A scaler handle. */ - /* */ - /* <Output> */ - /* asize :: A handle to the size object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* The returned @FT_Size object is always owned by the manager. You */ - /* should never try to discard it by yourself. */ - /* */ - /* You can access the parent @FT_Face object simply as `size->face' */ - /* if you need it. Note that this object is also owned by the */ - /* manager. */ - /* */ - /* <Note> */ - /* When you perform a lookup, out-of-memory errors are detected */ - /* _within_ the lookup and force incremental flushes of the cache */ - /* until enough memory is released for the lookup to succeed. */ - /* */ - /* If a lookup fails with `FT_Err_Out_Of_Memory' the cache has */ - /* already been completely flushed, and still no memory is available */ - /* for the operation. */ - /* */ - FT_EXPORT( FT_Error ) - FTC_Manager_LookupSize( FTC_Manager manager, - FTC_Scaler scaler, - FT_Size *asize ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_Node_Unref */ - /* */ - /* <Description> */ - /* Decrement a cache node's internal reference count. When the count */ - /* reaches 0, it is not destroyed but becomes eligible for subsequent */ - /* cache flushes. */ - /* */ - /* <Input> */ - /* node :: The cache node handle. */ - /* */ - /* manager :: The cache manager handle. */ - /* */ - FT_EXPORT( void ) - FTC_Node_Unref( FTC_Node node, - FTC_Manager manager ); - - - /************************************************************************* - * - * @function: - * FTC_Manager_RemoveFaceID - * - * @description: - * A special function used to indicate to the cache manager that - * a given @FTC_FaceID is no longer valid, either because its - * content changed, or because it was deallocated or uninstalled. - * - * @input: - * manager :: - * The cache manager handle. - * - * face_id :: - * The @FTC_FaceID to be removed. - * - * @note: - * This function flushes all nodes from the cache corresponding to this - * `face_id', with the exception of nodes with a non-null reference - * count. - * - * Such nodes are however modified internally so as to never appear - * in later lookups with the same `face_id' value, and to be immediately - * destroyed when released by all their users. - * - */ - FT_EXPORT( void ) - FTC_Manager_RemoveFaceID( FTC_Manager manager, - FTC_FaceID face_id ); - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* cache_subsystem */ - /* */ - /*************************************************************************/ - - /************************************************************************* - * - * @type: - * FTC_CMapCache - * - * @description: - * An opaque handle used to model a charmap cache. This cache is to - * hold character codes -> glyph indices mappings. - * - */ - typedef struct FTC_CMapCacheRec_* FTC_CMapCache; - - - /************************************************************************* - * - * @function: - * FTC_CMapCache_New - * - * @description: - * Create a new charmap cache. - * - * @input: - * manager :: - * A handle to the cache manager. - * - * @output: - * acache :: - * A new cache handle. NULL in case of error. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * Like all other caches, this one will be destroyed with the cache - * manager. - * - */ - FT_EXPORT( FT_Error ) - FTC_CMapCache_New( FTC_Manager manager, - FTC_CMapCache *acache ); - - - /************************************************************************ - * - * @function: - * FTC_CMapCache_Lookup - * - * @description: - * Translate a character code into a glyph index, using the charmap - * cache. - * - * @input: - * cache :: - * A charmap cache handle. - * - * face_id :: - * The source face ID. - * - * cmap_index :: - * The index of the charmap in the source face. Any negative value - * means to use the cache @FT_Face's default charmap. - * - * char_code :: - * The character code (in the corresponding charmap). - * - * @return: - * Glyph index. 0~means `no glyph'. - * - */ - FT_EXPORT( FT_UInt ) - FTC_CMapCache_Lookup( FTC_CMapCache cache, - FTC_FaceID face_id, - FT_Int cmap_index, - FT_UInt32 char_code ); - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* cache_subsystem */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** IMAGE CACHE OBJECT *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - /************************************************************************* - * - * @struct: - * FTC_ImageTypeRec - * - * @description: - * A structure used to model the type of images in a glyph cache. - * - * @fields: - * face_id :: - * The face ID. - * - * width :: - * The width in pixels. - * - * height :: - * The height in pixels. - * - * flags :: - * The load flags, as in @FT_Load_Glyph. - * - */ - typedef struct FTC_ImageTypeRec_ - { +} FTC_ScalerRec; + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* FTC_Scaler */ +/* */ +/* <Description> */ +/* A handle to an @FTC_ScalerRec structure. */ +/* */ +typedef struct FTC_ScalerRec_* FTC_Scaler; + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FTC_Manager_LookupSize */ +/* */ +/* <Description> */ +/* Retrieve the @FT_Size object that corresponds to a given */ +/* @FTC_ScalerRec pointer through a cache manager. */ +/* */ +/* <Input> */ +/* manager :: A handle to the cache manager. */ +/* */ +/* scaler :: A scaler handle. */ +/* */ +/* <Output> */ +/* asize :: A handle to the size object. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +/* <Note> */ +/* The returned @FT_Size object is always owned by the manager. You */ +/* should never try to discard it by yourself. */ +/* */ +/* You can access the parent @FT_Face object simply as `size->face' */ +/* if you need it. Note that this object is also owned by the */ +/* manager. */ +/* */ +/* <Note> */ +/* When you perform a lookup, out-of-memory errors are detected */ +/* _within_ the lookup and force incremental flushes of the cache */ +/* until enough memory is released for the lookup to succeed. */ +/* */ +/* If a lookup fails with `FT_Err_Out_Of_Memory' the cache has */ +/* already been completely flushed, and still no memory is available */ +/* for the operation. */ +/* */ +FT_EXPORT( FT_Error ) +FTC_Manager_LookupSize( FTC_Manager manager, + FTC_Scaler scaler, + FT_Size *asize ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FTC_Node_Unref */ +/* */ +/* <Description> */ +/* Decrement a cache node's internal reference count. When the count */ +/* reaches 0, it is not destroyed but becomes eligible for subsequent */ +/* cache flushes. */ +/* */ +/* <Input> */ +/* node :: The cache node handle. */ +/* */ +/* manager :: The cache manager handle. */ +/* */ +FT_EXPORT( void ) +FTC_Node_Unref( FTC_Node node, + FTC_Manager manager ); + + +/************************************************************************* + * + * @function: + * FTC_Manager_RemoveFaceID + * + * @description: + * A special function used to indicate to the cache manager that + * a given @FTC_FaceID is no longer valid, either because its + * content changed, or because it was deallocated or uninstalled. + * + * @input: + * manager :: + * The cache manager handle. + * + * face_id :: + * The @FTC_FaceID to be removed. + * + * @note: + * This function flushes all nodes from the cache corresponding to this + * `face_id', with the exception of nodes with a non-null reference + * count. + * + * Such nodes are however modified internally so as to never appear + * in later lookups with the same `face_id' value, and to be immediately + * destroyed when released by all their users. + * + */ +FT_EXPORT( void ) +FTC_Manager_RemoveFaceID( FTC_Manager manager, + FTC_FaceID face_id ); + + +/*************************************************************************/ +/* */ +/* <Section> */ +/* cache_subsystem */ +/* */ +/*************************************************************************/ + +/************************************************************************* + * + * @type: + * FTC_CMapCache + * + * @description: + * An opaque handle used to model a charmap cache. This cache is to + * hold character codes -> glyph indices mappings. + * + */ +typedef struct FTC_CMapCacheRec_* FTC_CMapCache; + + +/************************************************************************* + * + * @function: + * FTC_CMapCache_New + * + * @description: + * Create a new charmap cache. + * + * @input: + * manager :: + * A handle to the cache manager. + * + * @output: + * acache :: + * A new cache handle. NULL in case of error. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * Like all other caches, this one will be destroyed with the cache + * manager. + * + */ +FT_EXPORT( FT_Error ) +FTC_CMapCache_New( FTC_Manager manager, + FTC_CMapCache *acache ); + + +/************************************************************************ + * + * @function: + * FTC_CMapCache_Lookup + * + * @description: + * Translate a character code into a glyph index, using the charmap + * cache. + * + * @input: + * cache :: + * A charmap cache handle. + * + * face_id :: + * The source face ID. + * + * cmap_index :: + * The index of the charmap in the source face. Any negative value + * means to use the cache @FT_Face's default charmap. + * + * char_code :: + * The character code (in the corresponding charmap). + * + * @return: + * Glyph index. 0~means `no glyph'. + * + */ +FT_EXPORT( FT_UInt ) +FTC_CMapCache_Lookup( FTC_CMapCache cache, + FTC_FaceID face_id, + FT_Int cmap_index, + FT_UInt32 char_code ); + + +/*************************************************************************/ +/* */ +/* <Section> */ +/* cache_subsystem */ +/* */ +/*************************************************************************/ + + +/*************************************************************************/ +/*************************************************************************/ +/*************************************************************************/ +/***** *****/ +/***** IMAGE CACHE OBJECT *****/ +/***** *****/ +/*************************************************************************/ +/*************************************************************************/ +/*************************************************************************/ + + +/************************************************************************* + * + * @struct: + * FTC_ImageTypeRec + * + * @description: + * A structure used to model the type of images in a glyph cache. + * + * @fields: + * face_id :: + * The face ID. + * + * width :: + * The width in pixels. + * + * height :: + * The height in pixels. + * + * flags :: + * The load flags, as in @FT_Load_Glyph. + * + */ +typedef struct FTC_ImageTypeRec_ { FTC_FaceID face_id; FT_Int width; FT_Int height; FT_Int32 flags; - } FTC_ImageTypeRec; +} FTC_ImageTypeRec; - /************************************************************************* - * - * @type: - * FTC_ImageType - * - * @description: - * A handle to an @FTC_ImageTypeRec structure. - * - */ - typedef struct FTC_ImageTypeRec_* FTC_ImageType; +/************************************************************************* + * + * @type: + * FTC_ImageType + * + * @description: + * A handle to an @FTC_ImageTypeRec structure. + * + */ +typedef struct FTC_ImageTypeRec_* FTC_ImageType; - /* */ +/* */ #define FTC_IMAGE_TYPE_COMPARE( d1, d2 ) \ @@ -707,7 +705,7 @@ FT_BEGIN_HEADER #ifdef FT_CONFIG_OPTION_OLD_INTERNALS - /* this macro is incompatible with LLP64, should not be used */ +/* this macro is incompatible with LLP64, should not be used */ #define FTC_IMAGE_TYPE_HASH( d ) \ (FT_UFast)( FTC_FACE_ID_HASH( (d)->face_id ) ^ \ @@ -717,197 +715,196 @@ FT_BEGIN_HEADER #endif /* FT_CONFIG_OPTION_OLD_INTERNALS */ - /*************************************************************************/ - /* */ - /* <Type> */ - /* FTC_ImageCache */ - /* */ - /* <Description> */ - /* A handle to an glyph image cache object. They are designed to */ - /* hold many distinct glyph images while not exceeding a certain */ - /* memory threshold. */ - /* */ - typedef struct FTC_ImageCacheRec_* FTC_ImageCache; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_ImageCache_New */ - /* */ - /* <Description> */ - /* Create a new glyph image cache. */ - /* */ - /* <Input> */ - /* manager :: The parent manager for the image cache. */ - /* */ - /* <Output> */ - /* acache :: A handle to the new glyph image cache object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FTC_ImageCache_New( FTC_Manager manager, - FTC_ImageCache *acache ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_ImageCache_Lookup */ - /* */ - /* <Description> */ - /* Retrieve a given glyph image from a glyph image cache. */ - /* */ - /* <Input> */ - /* cache :: A handle to the source glyph image cache. */ - /* */ - /* type :: A pointer to a glyph image type descriptor. */ - /* */ - /* gindex :: The glyph index to retrieve. */ - /* */ - /* <Output> */ - /* aglyph :: The corresponding @FT_Glyph object. 0~in case of */ - /* failure. */ - /* */ - /* anode :: Used to return the address of of the corresponding cache */ - /* node after incrementing its reference count (see note */ - /* below). */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* The returned glyph is owned and managed by the glyph image cache. */ - /* Never try to transform or discard it manually! You can however */ - /* create a copy with @FT_Glyph_Copy and modify the new one. */ - /* */ - /* If `anode' is _not_ NULL, it receives the address of the cache */ - /* node containing the glyph image, after increasing its reference */ - /* count. This ensures that the node (as well as the @FT_Glyph) will */ - /* always be kept in the cache until you call @FTC_Node_Unref to */ - /* `release' it. */ - /* */ - /* If `anode' is NULL, the cache node is left unchanged, which means */ - /* that the @FT_Glyph could be flushed out of the cache on the next */ - /* call to one of the caching sub-system APIs. Don't assume that it */ - /* is persistent! */ - /* */ - FT_EXPORT( FT_Error ) - FTC_ImageCache_Lookup( FTC_ImageCache cache, - FTC_ImageType type, - FT_UInt gindex, - FT_Glyph *aglyph, - FTC_Node *anode ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_ImageCache_LookupScaler */ - /* */ - /* <Description> */ - /* A variant of @FTC_ImageCache_Lookup that uses an @FTC_ScalerRec */ - /* to specify the face ID and its size. */ - /* */ - /* <Input> */ - /* cache :: A handle to the source glyph image cache. */ - /* */ - /* scaler :: A pointer to a scaler descriptor. */ - /* */ - /* load_flags :: The corresponding load flags. */ - /* */ - /* gindex :: The glyph index to retrieve. */ - /* */ - /* <Output> */ - /* aglyph :: The corresponding @FT_Glyph object. 0~in case of */ - /* failure. */ - /* */ - /* anode :: Used to return the address of of the corresponding */ - /* cache node after incrementing its reference count */ - /* (see note below). */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* The returned glyph is owned and managed by the glyph image cache. */ - /* Never try to transform or discard it manually! You can however */ - /* create a copy with @FT_Glyph_Copy and modify the new one. */ - /* */ - /* If `anode' is _not_ NULL, it receives the address of the cache */ - /* node containing the glyph image, after increasing its reference */ - /* count. This ensures that the node (as well as the @FT_Glyph) will */ - /* always be kept in the cache until you call @FTC_Node_Unref to */ - /* `release' it. */ - /* */ - /* If `anode' is NULL, the cache node is left unchanged, which means */ - /* that the @FT_Glyph could be flushed out of the cache on the next */ - /* call to one of the caching sub-system APIs. Don't assume that it */ - /* is persistent! */ - /* */ - /* Calls to @FT_Set_Char_Size and friends have no effect on cached */ - /* glyphs; you should always use the FreeType cache API instead. */ - /* */ - FT_EXPORT( FT_Error ) - FTC_ImageCache_LookupScaler( FTC_ImageCache cache, - FTC_Scaler scaler, - FT_ULong load_flags, - FT_UInt gindex, - FT_Glyph *aglyph, - FTC_Node *anode ); - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FTC_SBit */ - /* */ - /* <Description> */ - /* A handle to a small bitmap descriptor. See the @FTC_SBitRec */ - /* structure for details. */ - /* */ - typedef struct FTC_SBitRec_* FTC_SBit; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FTC_SBitRec */ - /* */ - /* <Description> */ - /* A very compact structure used to describe a small glyph bitmap. */ - /* */ - /* <Fields> */ - /* width :: The bitmap width in pixels. */ - /* */ - /* height :: The bitmap height in pixels. */ - /* */ - /* left :: The horizontal distance from the pen position to the */ - /* left bitmap border (a.k.a. `left side bearing', or */ - /* `lsb'). */ - /* */ - /* top :: The vertical distance from the pen position (on the */ - /* baseline) to the upper bitmap border (a.k.a. `top */ - /* side bearing'). The distance is positive for upwards */ - /* y~coordinates. */ - /* */ - /* format :: The format of the glyph bitmap (monochrome or gray). */ - /* */ - /* max_grays :: Maximum gray level value (in the range 1 to~255). */ - /* */ - /* pitch :: The number of bytes per bitmap line. May be positive */ - /* or negative. */ - /* */ - /* xadvance :: The horizontal advance width in pixels. */ - /* */ - /* yadvance :: The vertical advance height in pixels. */ - /* */ - /* buffer :: A pointer to the bitmap pixels. */ - /* */ - typedef struct FTC_SBitRec_ - { +/*************************************************************************/ +/* */ +/* <Type> */ +/* FTC_ImageCache */ +/* */ +/* <Description> */ +/* A handle to an glyph image cache object. They are designed to */ +/* hold many distinct glyph images while not exceeding a certain */ +/* memory threshold. */ +/* */ +typedef struct FTC_ImageCacheRec_* FTC_ImageCache; + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FTC_ImageCache_New */ +/* */ +/* <Description> */ +/* Create a new glyph image cache. */ +/* */ +/* <Input> */ +/* manager :: The parent manager for the image cache. */ +/* */ +/* <Output> */ +/* acache :: A handle to the new glyph image cache object. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +FT_EXPORT( FT_Error ) +FTC_ImageCache_New( FTC_Manager manager, + FTC_ImageCache *acache ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FTC_ImageCache_Lookup */ +/* */ +/* <Description> */ +/* Retrieve a given glyph image from a glyph image cache. */ +/* */ +/* <Input> */ +/* cache :: A handle to the source glyph image cache. */ +/* */ +/* type :: A pointer to a glyph image type descriptor. */ +/* */ +/* gindex :: The glyph index to retrieve. */ +/* */ +/* <Output> */ +/* aglyph :: The corresponding @FT_Glyph object. 0~in case of */ +/* failure. */ +/* */ +/* anode :: Used to return the address of of the corresponding cache */ +/* node after incrementing its reference count (see note */ +/* below). */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +/* <Note> */ +/* The returned glyph is owned and managed by the glyph image cache. */ +/* Never try to transform or discard it manually! You can however */ +/* create a copy with @FT_Glyph_Copy and modify the new one. */ +/* */ +/* If `anode' is _not_ NULL, it receives the address of the cache */ +/* node containing the glyph image, after increasing its reference */ +/* count. This ensures that the node (as well as the @FT_Glyph) will */ +/* always be kept in the cache until you call @FTC_Node_Unref to */ +/* `release' it. */ +/* */ +/* If `anode' is NULL, the cache node is left unchanged, which means */ +/* that the @FT_Glyph could be flushed out of the cache on the next */ +/* call to one of the caching sub-system APIs. Don't assume that it */ +/* is persistent! */ +/* */ +FT_EXPORT( FT_Error ) +FTC_ImageCache_Lookup( FTC_ImageCache cache, + FTC_ImageType type, + FT_UInt gindex, + FT_Glyph *aglyph, + FTC_Node *anode ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FTC_ImageCache_LookupScaler */ +/* */ +/* <Description> */ +/* A variant of @FTC_ImageCache_Lookup that uses an @FTC_ScalerRec */ +/* to specify the face ID and its size. */ +/* */ +/* <Input> */ +/* cache :: A handle to the source glyph image cache. */ +/* */ +/* scaler :: A pointer to a scaler descriptor. */ +/* */ +/* load_flags :: The corresponding load flags. */ +/* */ +/* gindex :: The glyph index to retrieve. */ +/* */ +/* <Output> */ +/* aglyph :: The corresponding @FT_Glyph object. 0~in case of */ +/* failure. */ +/* */ +/* anode :: Used to return the address of of the corresponding */ +/* cache node after incrementing its reference count */ +/* (see note below). */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +/* <Note> */ +/* The returned glyph is owned and managed by the glyph image cache. */ +/* Never try to transform or discard it manually! You can however */ +/* create a copy with @FT_Glyph_Copy and modify the new one. */ +/* */ +/* If `anode' is _not_ NULL, it receives the address of the cache */ +/* node containing the glyph image, after increasing its reference */ +/* count. This ensures that the node (as well as the @FT_Glyph) will */ +/* always be kept in the cache until you call @FTC_Node_Unref to */ +/* `release' it. */ +/* */ +/* If `anode' is NULL, the cache node is left unchanged, which means */ +/* that the @FT_Glyph could be flushed out of the cache on the next */ +/* call to one of the caching sub-system APIs. Don't assume that it */ +/* is persistent! */ +/* */ +/* Calls to @FT_Set_Char_Size and friends have no effect on cached */ +/* glyphs; you should always use the FreeType cache API instead. */ +/* */ +FT_EXPORT( FT_Error ) +FTC_ImageCache_LookupScaler( FTC_ImageCache cache, + FTC_Scaler scaler, + FT_ULong load_flags, + FT_UInt gindex, + FT_Glyph *aglyph, + FTC_Node *anode ); + + +/*************************************************************************/ +/* */ +/* <Type> */ +/* FTC_SBit */ +/* */ +/* <Description> */ +/* A handle to a small bitmap descriptor. See the @FTC_SBitRec */ +/* structure for details. */ +/* */ +typedef struct FTC_SBitRec_* FTC_SBit; + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* FTC_SBitRec */ +/* */ +/* <Description> */ +/* A very compact structure used to describe a small glyph bitmap. */ +/* */ +/* <Fields> */ +/* width :: The bitmap width in pixels. */ +/* */ +/* height :: The bitmap height in pixels. */ +/* */ +/* left :: The horizontal distance from the pen position to the */ +/* left bitmap border (a.k.a. `left side bearing', or */ +/* `lsb'). */ +/* */ +/* top :: The vertical distance from the pen position (on the */ +/* baseline) to the upper bitmap border (a.k.a. `top */ +/* side bearing'). The distance is positive for upwards */ +/* y~coordinates. */ +/* */ +/* format :: The format of the glyph bitmap (monochrome or gray). */ +/* */ +/* max_grays :: Maximum gray level value (in the range 1 to~255). */ +/* */ +/* pitch :: The number of bytes per bitmap line. May be positive */ +/* or negative. */ +/* */ +/* xadvance :: The horizontal advance width in pixels. */ +/* */ +/* yadvance :: The vertical advance height in pixels. */ +/* */ +/* buffer :: A pointer to the bitmap pixels. */ +/* */ +typedef struct FTC_SBitRec_ { FT_Byte width; FT_Byte height; FT_Char left; @@ -921,185 +918,184 @@ FT_BEGIN_HEADER FT_Byte* buffer; - } FTC_SBitRec; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FTC_SBitCache */ - /* */ - /* <Description> */ - /* A handle to a small bitmap cache. These are special cache objects */ - /* used to store small glyph bitmaps (and anti-aliased pixmaps) in a */ - /* much more efficient way than the traditional glyph image cache */ - /* implemented by @FTC_ImageCache. */ - /* */ - typedef struct FTC_SBitCacheRec_* FTC_SBitCache; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_SBitCache_New */ - /* */ - /* <Description> */ - /* Create a new cache to store small glyph bitmaps. */ - /* */ - /* <Input> */ - /* manager :: A handle to the source cache manager. */ - /* */ - /* <Output> */ - /* acache :: A handle to the new sbit cache. NULL in case of error. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FTC_SBitCache_New( FTC_Manager manager, - FTC_SBitCache *acache ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_SBitCache_Lookup */ - /* */ - /* <Description> */ - /* Look up a given small glyph bitmap in a given sbit cache and */ - /* `lock' it to prevent its flushing from the cache until needed. */ - /* */ - /* <Input> */ - /* cache :: A handle to the source sbit cache. */ - /* */ - /* type :: A pointer to the glyph image type descriptor. */ - /* */ - /* gindex :: The glyph index. */ - /* */ - /* <Output> */ - /* sbit :: A handle to a small bitmap descriptor. */ - /* */ - /* anode :: Used to return the address of of the corresponding cache */ - /* node after incrementing its reference count (see note */ - /* below). */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* The small bitmap descriptor and its bit buffer are owned by the */ - /* cache and should never be freed by the application. They might */ - /* as well disappear from memory on the next cache lookup, so don't */ - /* treat them as persistent data. */ - /* */ - /* The descriptor's `buffer' field is set to~0 to indicate a missing */ - /* glyph bitmap. */ - /* */ - /* If `anode' is _not_ NULL, it receives the address of the cache */ - /* node containing the bitmap, after increasing its reference count. */ - /* This ensures that the node (as well as the image) will always be */ - /* kept in the cache until you call @FTC_Node_Unref to `release' it. */ - /* */ - /* If `anode' is NULL, the cache node is left unchanged, which means */ - /* that the bitmap could be flushed out of the cache on the next */ - /* call to one of the caching sub-system APIs. Don't assume that it */ - /* is persistent! */ - /* */ - FT_EXPORT( FT_Error ) - FTC_SBitCache_Lookup( FTC_SBitCache cache, - FTC_ImageType type, - FT_UInt gindex, - FTC_SBit *sbit, - FTC_Node *anode ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_SBitCache_LookupScaler */ - /* */ - /* <Description> */ - /* A variant of @FTC_SBitCache_Lookup that uses an @FTC_ScalerRec */ - /* to specify the face ID and its size. */ - /* */ - /* <Input> */ - /* cache :: A handle to the source sbit cache. */ - /* */ - /* scaler :: A pointer to the scaler descriptor. */ - /* */ - /* load_flags :: The corresponding load flags. */ - /* */ - /* gindex :: The glyph index. */ - /* */ - /* <Output> */ - /* sbit :: A handle to a small bitmap descriptor. */ - /* */ - /* anode :: Used to return the address of of the corresponding */ - /* cache node after incrementing its reference count */ - /* (see note below). */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* The small bitmap descriptor and its bit buffer are owned by the */ - /* cache and should never be freed by the application. They might */ - /* as well disappear from memory on the next cache lookup, so don't */ - /* treat them as persistent data. */ - /* */ - /* The descriptor's `buffer' field is set to~0 to indicate a missing */ - /* glyph bitmap. */ - /* */ - /* If `anode' is _not_ NULL, it receives the address of the cache */ - /* node containing the bitmap, after increasing its reference count. */ - /* This ensures that the node (as well as the image) will always be */ - /* kept in the cache until you call @FTC_Node_Unref to `release' it. */ - /* */ - /* If `anode' is NULL, the cache node is left unchanged, which means */ - /* that the bitmap could be flushed out of the cache on the next */ - /* call to one of the caching sub-system APIs. Don't assume that it */ - /* is persistent! */ - /* */ - FT_EXPORT( FT_Error ) - FTC_SBitCache_LookupScaler( FTC_SBitCache cache, - FTC_Scaler scaler, - FT_ULong load_flags, - FT_UInt gindex, - FTC_SBit *sbit, - FTC_Node *anode ); - - - /* */ +} FTC_SBitRec; + + +/*************************************************************************/ +/* */ +/* <Type> */ +/* FTC_SBitCache */ +/* */ +/* <Description> */ +/* A handle to a small bitmap cache. These are special cache objects */ +/* used to store small glyph bitmaps (and anti-aliased pixmaps) in a */ +/* much more efficient way than the traditional glyph image cache */ +/* implemented by @FTC_ImageCache. */ +/* */ +typedef struct FTC_SBitCacheRec_* FTC_SBitCache; + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FTC_SBitCache_New */ +/* */ +/* <Description> */ +/* Create a new cache to store small glyph bitmaps. */ +/* */ +/* <Input> */ +/* manager :: A handle to the source cache manager. */ +/* */ +/* <Output> */ +/* acache :: A handle to the new sbit cache. NULL in case of error. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +FT_EXPORT( FT_Error ) +FTC_SBitCache_New( FTC_Manager manager, + FTC_SBitCache *acache ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FTC_SBitCache_Lookup */ +/* */ +/* <Description> */ +/* Look up a given small glyph bitmap in a given sbit cache and */ +/* `lock' it to prevent its flushing from the cache until needed. */ +/* */ +/* <Input> */ +/* cache :: A handle to the source sbit cache. */ +/* */ +/* type :: A pointer to the glyph image type descriptor. */ +/* */ +/* gindex :: The glyph index. */ +/* */ +/* <Output> */ +/* sbit :: A handle to a small bitmap descriptor. */ +/* */ +/* anode :: Used to return the address of of the corresponding cache */ +/* node after incrementing its reference count (see note */ +/* below). */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +/* <Note> */ +/* The small bitmap descriptor and its bit buffer are owned by the */ +/* cache and should never be freed by the application. They might */ +/* as well disappear from memory on the next cache lookup, so don't */ +/* treat them as persistent data. */ +/* */ +/* The descriptor's `buffer' field is set to~0 to indicate a missing */ +/* glyph bitmap. */ +/* */ +/* If `anode' is _not_ NULL, it receives the address of the cache */ +/* node containing the bitmap, after increasing its reference count. */ +/* This ensures that the node (as well as the image) will always be */ +/* kept in the cache until you call @FTC_Node_Unref to `release' it. */ +/* */ +/* If `anode' is NULL, the cache node is left unchanged, which means */ +/* that the bitmap could be flushed out of the cache on the next */ +/* call to one of the caching sub-system APIs. Don't assume that it */ +/* is persistent! */ +/* */ +FT_EXPORT( FT_Error ) +FTC_SBitCache_Lookup( FTC_SBitCache cache, + FTC_ImageType type, + FT_UInt gindex, + FTC_SBit *sbit, + FTC_Node *anode ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FTC_SBitCache_LookupScaler */ +/* */ +/* <Description> */ +/* A variant of @FTC_SBitCache_Lookup that uses an @FTC_ScalerRec */ +/* to specify the face ID and its size. */ +/* */ +/* <Input> */ +/* cache :: A handle to the source sbit cache. */ +/* */ +/* scaler :: A pointer to the scaler descriptor. */ +/* */ +/* load_flags :: The corresponding load flags. */ +/* */ +/* gindex :: The glyph index. */ +/* */ +/* <Output> */ +/* sbit :: A handle to a small bitmap descriptor. */ +/* */ +/* anode :: Used to return the address of of the corresponding */ +/* cache node after incrementing its reference count */ +/* (see note below). */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +/* <Note> */ +/* The small bitmap descriptor and its bit buffer are owned by the */ +/* cache and should never be freed by the application. They might */ +/* as well disappear from memory on the next cache lookup, so don't */ +/* treat them as persistent data. */ +/* */ +/* The descriptor's `buffer' field is set to~0 to indicate a missing */ +/* glyph bitmap. */ +/* */ +/* If `anode' is _not_ NULL, it receives the address of the cache */ +/* node containing the bitmap, after increasing its reference count. */ +/* This ensures that the node (as well as the image) will always be */ +/* kept in the cache until you call @FTC_Node_Unref to `release' it. */ +/* */ +/* If `anode' is NULL, the cache node is left unchanged, which means */ +/* that the bitmap could be flushed out of the cache on the next */ +/* call to one of the caching sub-system APIs. Don't assume that it */ +/* is persistent! */ +/* */ +FT_EXPORT( FT_Error ) +FTC_SBitCache_LookupScaler( FTC_SBitCache cache, + FTC_Scaler scaler, + FT_ULong load_flags, + FT_UInt gindex, + FTC_SBit *sbit, + FTC_Node *anode ); + + +/* */ #ifdef FT_CONFIG_OPTION_OLD_INTERNALS - /*@***********************************************************************/ - /* */ - /* <Struct> */ - /* FTC_FontRec */ - /* */ - /* <Description> */ - /* A simple structure used to describe a given `font' to the cache */ - /* manager. Note that a `font' is the combination of a given face */ - /* with a given character size. */ - /* */ - /* <Fields> */ - /* face_id :: The ID of the face to use. */ - /* */ - /* pix_width :: The character width in integer pixels. */ - /* */ - /* pix_height :: The character height in integer pixels. */ - /* */ - typedef struct FTC_FontRec_ - { +/*@***********************************************************************/ +/* */ +/* <Struct> */ +/* FTC_FontRec */ +/* */ +/* <Description> */ +/* A simple structure used to describe a given `font' to the cache */ +/* manager. Note that a `font' is the combination of a given face */ +/* with a given character size. */ +/* */ +/* <Fields> */ +/* face_id :: The ID of the face to use. */ +/* */ +/* pix_width :: The character width in integer pixels. */ +/* */ +/* pix_height :: The character height in integer pixels. */ +/* */ +typedef struct FTC_FontRec_ { FTC_FaceID face_id; FT_UShort pix_width; FT_UShort pix_height; - } FTC_FontRec; +} FTC_FontRec; - /* */ +/* */ #define FTC_FONT_COMPARE( f1, f2 ) \ @@ -1107,30 +1103,30 @@ FT_BEGIN_HEADER (f1)->pix_width == (f2)->pix_width && \ (f1)->pix_height == (f2)->pix_height ) - /* this macro is incompatible with LLP64, should not be used */ +/* this macro is incompatible with LLP64, should not be used */ #define FTC_FONT_HASH( f ) \ (FT_UInt32)( FTC_FACE_ID_HASH((f)->face_id) ^ \ ((f)->pix_width << 8) ^ \ ((f)->pix_height) ) - typedef FTC_FontRec* FTC_Font; +typedef FTC_FontRec* FTC_Font; - FT_EXPORT( FT_Error ) - FTC_Manager_Lookup_Face( FTC_Manager manager, - FTC_FaceID face_id, - FT_Face *aface ); +FT_EXPORT( FT_Error ) +FTC_Manager_Lookup_Face( FTC_Manager manager, + FTC_FaceID face_id, + FT_Face *aface ); - FT_EXPORT( FT_Error ) - FTC_Manager_Lookup_Size( FTC_Manager manager, - FTC_Font font, - FT_Face *aface, - FT_Size *asize ); +FT_EXPORT( FT_Error ) +FTC_Manager_Lookup_Size( FTC_Manager manager, + FTC_Font font, + FT_Face *aface, + FT_Size *asize ); #endif /* FT_CONFIG_OPTION_OLD_INTERNALS */ - /* */ +/* */ FT_END_HEADER diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/ftcffdrv.h b/thirdparties/common/include/libfreetype/freetype2/freetype/ftcffdrv.h index 07ae54d..3b2b6b2 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/ftcffdrv.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/ftcffdrv.h @@ -32,114 +32,114 @@ FT_BEGIN_HEADER - /************************************************************************** - * - * @section: - * cff_driver - * - * @title: - * The CFF driver - * - * @abstract: - * Controlling the CFF driver module. - * - * @description: - * While FreeType's CFF driver doesn't expose API functions by itself, - * it is possible to control its behaviour with @FT_Property_Set and - * @FT_Property_Get. The following lists the available properties - * together with the necessary macros and structures. - * - * The CFF driver's module name is `cff'. - * - */ - - - /************************************************************************** - * - * @property: - * hinting-engine - * - * @description: - * Thanks to Adobe, which contributed a new hinting (and parsing) - * engine, an application can select between `freetype' and `adobe'. - * - * Right now, the default engine is `freetype'. However, this will - * change: After a certain time of intensive testing it is planned to - * make `adobe' the default due to its superior rendering results. - * - * The following example code demonstrates how to select Adobe's hinting - * engine (omitting the error handling). - * - * { - * FT_Library library; - * FT_Face face; - * FT_UInt hinting_engine = FT_CFF_HINTING_ADOBE; - * - * - * FT_Init_FreeType( &library ); - * - * FT_Property_Set( library, "cff", - * "hinting-engine", &hinting_engine ); - * } - * - * @note: - * This property can be used with @FT_Property_Get also. - * - */ - - - /************************************************************************** - * - * @enum: - * FT_CFF_HINTING_XXX - * - * @description: - * A list of constants used for the @hinting-engine property to select - * the hinting engine for CFF fonts. - * - * @values: - * FT_CFF_HINTING_FREETYPE :: - * Use the old FreeType hinting engine. - * - * FT_CFF_HINTING_ADOBE :: - * Use the hinting engine contributed by Adobe. - * - */ +/************************************************************************** + * + * @section: + * cff_driver + * + * @title: + * The CFF driver + * + * @abstract: + * Controlling the CFF driver module. + * + * @description: + * While FreeType's CFF driver doesn't expose API functions by itself, + * it is possible to control its behaviour with @FT_Property_Set and + * @FT_Property_Get. The following lists the available properties + * together with the necessary macros and structures. + * + * The CFF driver's module name is `cff'. + * + */ + + +/************************************************************************** + * + * @property: + * hinting-engine + * + * @description: + * Thanks to Adobe, which contributed a new hinting (and parsing) + * engine, an application can select between `freetype' and `adobe'. + * + * Right now, the default engine is `freetype'. However, this will + * change: After a certain time of intensive testing it is planned to + * make `adobe' the default due to its superior rendering results. + * + * The following example code demonstrates how to select Adobe's hinting + * engine (omitting the error handling). + * + * { + * FT_Library library; + * FT_Face face; + * FT_UInt hinting_engine = FT_CFF_HINTING_ADOBE; + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "cff", + * "hinting-engine", &hinting_engine ); + * } + * + * @note: + * This property can be used with @FT_Property_Get also. + * + */ + + +/************************************************************************** + * + * @enum: + * FT_CFF_HINTING_XXX + * + * @description: + * A list of constants used for the @hinting-engine property to select + * the hinting engine for CFF fonts. + * + * @values: + * FT_CFF_HINTING_FREETYPE :: + * Use the old FreeType hinting engine. + * + * FT_CFF_HINTING_ADOBE :: + * Use the hinting engine contributed by Adobe. + * + */ #define FT_CFF_HINTING_FREETYPE 0 #define FT_CFF_HINTING_ADOBE 1 - /************************************************************************** - * - * @property: - * no-stem-darkening - * - * @description: - * By default, the Adobe CFF engine darkens stems at smaller sizes, - * regardless of hinting, to enhance contrast. Setting this property, - * stem darkening gets switched off. - * - * Note that stem darkening is never applied if @FT_LOAD_NO_SCALE is set. - * - * { - * FT_Library library; - * FT_Face face; - * FT_Bool no_stem_darkening = TRUE; - * - * - * FT_Init_FreeType( &library ); - * - * FT_Property_Set( library, "cff", - * "no-stem-darkening", &no_stem_darkening ); - * } - * - * @note: - * This property can be used with @FT_Property_Get also. - * - */ - - - /* */ +/************************************************************************** + * + * @property: + * no-stem-darkening + * + * @description: + * By default, the Adobe CFF engine darkens stems at smaller sizes, + * regardless of hinting, to enhance contrast. Setting this property, + * stem darkening gets switched off. + * + * Note that stem darkening is never applied if @FT_LOAD_NO_SCALE is set. + * + * { + * FT_Library library; + * FT_Face face; + * FT_Bool no_stem_darkening = TRUE; + * + * + * FT_Init_FreeType( &library ); + * + * FT_Property_Set( library, "cff", + * "no-stem-darkening", &no_stem_darkening ); + * } + * + * @note: + * This property can be used with @FT_Property_Get also. + * + */ + + +/* */ FT_END_HEADER diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/ftcid.h b/thirdparties/common/include/libfreetype/freetype2/freetype/ftcid.h index 203a30c..31f4012 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/ftcid.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/ftcid.h @@ -31,132 +31,132 @@ FT_BEGIN_HEADER - /*************************************************************************/ - /* */ - /* <Section> */ - /* cid_fonts */ - /* */ - /* <Title> */ - /* CID Fonts */ - /* */ - /* <Abstract> */ - /* CID-keyed font specific API. */ - /* */ - /* <Description> */ - /* This section contains the declaration of CID-keyed font specific */ - /* functions. */ - /* */ - /*************************************************************************/ - - - /********************************************************************** - * - * @function: - * FT_Get_CID_Registry_Ordering_Supplement - * - * @description: - * Retrieve the Registry/Ordering/Supplement triple (also known as the - * "R/O/S") from a CID-keyed font. - * - * @input: - * face :: - * A handle to the input face. - * - * @output: - * registry :: - * The registry, as a C~string, owned by the face. - * - * ordering :: - * The ordering, as a C~string, owned by the face. - * - * supplement :: - * The supplement. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * This function only works with CID faces, returning an error - * otherwise. - * - * @since: - * 2.3.6 - */ - FT_EXPORT( FT_Error ) - FT_Get_CID_Registry_Ordering_Supplement( FT_Face face, - const char* *registry, - const char* *ordering, - FT_Int *supplement); - - - /********************************************************************** - * - * @function: - * FT_Get_CID_Is_Internally_CID_Keyed - * - * @description: - * Retrieve the type of the input face, CID keyed or not. In - * constrast to the @FT_IS_CID_KEYED macro this function returns - * successfully also for CID-keyed fonts in an SNFT wrapper. - * - * @input: - * face :: - * A handle to the input face. - * - * @output: - * is_cid :: - * The type of the face as an @FT_Bool. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * This function only works with CID faces and OpenType fonts, - * returning an error otherwise. - * - * @since: - * 2.3.9 - */ - FT_EXPORT( FT_Error ) - FT_Get_CID_Is_Internally_CID_Keyed( FT_Face face, - FT_Bool *is_cid ); - - - /********************************************************************** - * - * @function: - * FT_Get_CID_From_Glyph_Index - * - * @description: - * Retrieve the CID of the input glyph index. - * - * @input: - * face :: - * A handle to the input face. - * - * glyph_index :: - * The input glyph index. - * - * @output: - * cid :: - * The CID as an @FT_UInt. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * This function only works with CID faces and OpenType fonts, - * returning an error otherwise. - * - * @since: - * 2.3.9 - */ - FT_EXPORT( FT_Error ) - FT_Get_CID_From_Glyph_Index( FT_Face face, - FT_UInt glyph_index, - FT_UInt *cid ); - - /* */ +/*************************************************************************/ +/* */ +/* <Section> */ +/* cid_fonts */ +/* */ +/* <Title> */ +/* CID Fonts */ +/* */ +/* <Abstract> */ +/* CID-keyed font specific API. */ +/* */ +/* <Description> */ +/* This section contains the declaration of CID-keyed font specific */ +/* functions. */ +/* */ +/*************************************************************************/ + + +/********************************************************************** + * + * @function: + * FT_Get_CID_Registry_Ordering_Supplement + * + * @description: + * Retrieve the Registry/Ordering/Supplement triple (also known as the + * "R/O/S") from a CID-keyed font. + * + * @input: + * face :: + * A handle to the input face. + * + * @output: + * registry :: + * The registry, as a C~string, owned by the face. + * + * ordering :: + * The ordering, as a C~string, owned by the face. + * + * supplement :: + * The supplement. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with CID faces, returning an error + * otherwise. + * + * @since: + * 2.3.6 + */ +FT_EXPORT( FT_Error ) +FT_Get_CID_Registry_Ordering_Supplement( FT_Face face, + const char**registry, + const char**ordering, + FT_Int *supplement); + + +/********************************************************************** + * + * @function: + * FT_Get_CID_Is_Internally_CID_Keyed + * + * @description: + * Retrieve the type of the input face, CID keyed or not. In + * constrast to the @FT_IS_CID_KEYED macro this function returns + * successfully also for CID-keyed fonts in an SNFT wrapper. + * + * @input: + * face :: + * A handle to the input face. + * + * @output: + * is_cid :: + * The type of the face as an @FT_Bool. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with CID faces and OpenType fonts, + * returning an error otherwise. + * + * @since: + * 2.3.9 + */ +FT_EXPORT( FT_Error ) +FT_Get_CID_Is_Internally_CID_Keyed( FT_Face face, + FT_Bool *is_cid ); + + +/********************************************************************** + * + * @function: + * FT_Get_CID_From_Glyph_Index + * + * @description: + * Retrieve the CID of the input glyph index. + * + * @input: + * face :: + * A handle to the input face. + * + * glyph_index :: + * The input glyph index. + * + * @output: + * cid :: + * The CID as an @FT_UInt. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with CID faces and OpenType fonts, + * returning an error otherwise. + * + * @since: + * 2.3.9 + */ +FT_EXPORT( FT_Error ) +FT_Get_CID_From_Glyph_Index( FT_Face face, + FT_UInt glyph_index, + FT_UInt *cid ); + +/* */ FT_END_HEADER diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/fterrdef.h b/thirdparties/common/include/libfreetype/freetype2/freetype/fterrdef.h index 76c7b9e..8b25d8b 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/fterrdef.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/fterrdef.h @@ -16,234 +16,234 @@ /***************************************************************************/ - /*******************************************************************/ - /*******************************************************************/ - /***** *****/ - /***** LIST OF ERROR CODES/MESSAGES *****/ - /***** *****/ - /*******************************************************************/ - /*******************************************************************/ - - - /* You need to define both FT_ERRORDEF_ and FT_NOERRORDEF_ before */ - /* including this file. */ - - - /* generic errors */ - - FT_NOERRORDEF_( Ok, 0x00, \ - "no error" ) - - FT_ERRORDEF_( Cannot_Open_Resource, 0x01, \ - "cannot open resource" ) - FT_ERRORDEF_( Unknown_File_Format, 0x02, \ - "unknown file format" ) - FT_ERRORDEF_( Invalid_File_Format, 0x03, \ - "broken file" ) - FT_ERRORDEF_( Invalid_Version, 0x04, \ - "invalid FreeType version" ) - FT_ERRORDEF_( Lower_Module_Version, 0x05, \ - "module version is too low" ) - FT_ERRORDEF_( Invalid_Argument, 0x06, \ - "invalid argument" ) - FT_ERRORDEF_( Unimplemented_Feature, 0x07, \ - "unimplemented feature" ) - FT_ERRORDEF_( Invalid_Table, 0x08, \ - "broken table" ) - FT_ERRORDEF_( Invalid_Offset, 0x09, \ - "broken offset within table" ) - FT_ERRORDEF_( Array_Too_Large, 0x0A, \ - "array allocation size too large" ) - FT_ERRORDEF_( Missing_Module, 0x0B, \ - "missing module" ) - FT_ERRORDEF_( Missing_Property, 0x0C, \ - "missing property" ) - - /* glyph/character errors */ - - FT_ERRORDEF_( Invalid_Glyph_Index, 0x10, \ - "invalid glyph index" ) - FT_ERRORDEF_( Invalid_Character_Code, 0x11, \ - "invalid character code" ) - FT_ERRORDEF_( Invalid_Glyph_Format, 0x12, \ - "unsupported glyph image format" ) - FT_ERRORDEF_( Cannot_Render_Glyph, 0x13, \ - "cannot render this glyph format" ) - FT_ERRORDEF_( Invalid_Outline, 0x14, \ - "invalid outline" ) - FT_ERRORDEF_( Invalid_Composite, 0x15, \ - "invalid composite glyph" ) - FT_ERRORDEF_( Too_Many_Hints, 0x16, \ - "too many hints" ) - FT_ERRORDEF_( Invalid_Pixel_Size, 0x17, \ - "invalid pixel size" ) - - /* handle errors */ - - FT_ERRORDEF_( Invalid_Handle, 0x20, \ - "invalid object handle" ) - FT_ERRORDEF_( Invalid_Library_Handle, 0x21, \ - "invalid library handle" ) - FT_ERRORDEF_( Invalid_Driver_Handle, 0x22, \ - "invalid module handle" ) - FT_ERRORDEF_( Invalid_Face_Handle, 0x23, \ - "invalid face handle" ) - FT_ERRORDEF_( Invalid_Size_Handle, 0x24, \ - "invalid size handle" ) - FT_ERRORDEF_( Invalid_Slot_Handle, 0x25, \ - "invalid glyph slot handle" ) - FT_ERRORDEF_( Invalid_CharMap_Handle, 0x26, \ - "invalid charmap handle" ) - FT_ERRORDEF_( Invalid_Cache_Handle, 0x27, \ - "invalid cache manager handle" ) - FT_ERRORDEF_( Invalid_Stream_Handle, 0x28, \ - "invalid stream handle" ) - - /* driver errors */ - - FT_ERRORDEF_( Too_Many_Drivers, 0x30, \ - "too many modules" ) - FT_ERRORDEF_( Too_Many_Extensions, 0x31, \ - "too many extensions" ) - - /* memory errors */ - - FT_ERRORDEF_( Out_Of_Memory, 0x40, \ - "out of memory" ) - FT_ERRORDEF_( Unlisted_Object, 0x41, \ - "unlisted object" ) - - /* stream errors */ - - FT_ERRORDEF_( Cannot_Open_Stream, 0x51, \ - "cannot open stream" ) - FT_ERRORDEF_( Invalid_Stream_Seek, 0x52, \ - "invalid stream seek" ) - FT_ERRORDEF_( Invalid_Stream_Skip, 0x53, \ - "invalid stream skip" ) - FT_ERRORDEF_( Invalid_Stream_Read, 0x54, \ - "invalid stream read" ) - FT_ERRORDEF_( Invalid_Stream_Operation, 0x55, \ - "invalid stream operation" ) - FT_ERRORDEF_( Invalid_Frame_Operation, 0x56, \ - "invalid frame operation" ) - FT_ERRORDEF_( Nested_Frame_Access, 0x57, \ - "nested frame access" ) - FT_ERRORDEF_( Invalid_Frame_Read, 0x58, \ - "invalid frame read" ) - - /* raster errors */ - - FT_ERRORDEF_( Raster_Uninitialized, 0x60, \ - "raster uninitialized" ) - FT_ERRORDEF_( Raster_Corrupted, 0x61, \ - "raster corrupted" ) - FT_ERRORDEF_( Raster_Overflow, 0x62, \ - "raster overflow" ) - FT_ERRORDEF_( Raster_Negative_Height, 0x63, \ - "negative height while rastering" ) - - /* cache errors */ - - FT_ERRORDEF_( Too_Many_Caches, 0x70, \ - "too many registered caches" ) - - /* TrueType and SFNT errors */ - - FT_ERRORDEF_( Invalid_Opcode, 0x80, \ - "invalid opcode" ) - FT_ERRORDEF_( Too_Few_Arguments, 0x81, \ - "too few arguments" ) - FT_ERRORDEF_( Stack_Overflow, 0x82, \ - "stack overflow" ) - FT_ERRORDEF_( Code_Overflow, 0x83, \ - "code overflow" ) - FT_ERRORDEF_( Bad_Argument, 0x84, \ - "bad argument" ) - FT_ERRORDEF_( Divide_By_Zero, 0x85, \ - "division by zero" ) - FT_ERRORDEF_( Invalid_Reference, 0x86, \ - "invalid reference" ) - FT_ERRORDEF_( Debug_OpCode, 0x87, \ - "found debug opcode" ) - FT_ERRORDEF_( ENDF_In_Exec_Stream, 0x88, \ - "found ENDF opcode in execution stream" ) - FT_ERRORDEF_( Nested_DEFS, 0x89, \ - "nested DEFS" ) - FT_ERRORDEF_( Invalid_CodeRange, 0x8A, \ - "invalid code range" ) - FT_ERRORDEF_( Execution_Too_Long, 0x8B, \ - "execution context too long" ) - FT_ERRORDEF_( Too_Many_Function_Defs, 0x8C, \ - "too many function definitions" ) - FT_ERRORDEF_( Too_Many_Instruction_Defs, 0x8D, \ - "too many instruction definitions" ) - FT_ERRORDEF_( Table_Missing, 0x8E, \ - "SFNT font table missing" ) - FT_ERRORDEF_( Horiz_Header_Missing, 0x8F, \ - "horizontal header (hhea) table missing" ) - FT_ERRORDEF_( Locations_Missing, 0x90, \ - "locations (loca) table missing" ) - FT_ERRORDEF_( Name_Table_Missing, 0x91, \ - "name table missing" ) - FT_ERRORDEF_( CMap_Table_Missing, 0x92, \ - "character map (cmap) table missing" ) - FT_ERRORDEF_( Hmtx_Table_Missing, 0x93, \ - "horizontal metrics (hmtx) table missing" ) - FT_ERRORDEF_( Post_Table_Missing, 0x94, \ - "PostScript (post) table missing" ) - FT_ERRORDEF_( Invalid_Horiz_Metrics, 0x95, \ - "invalid horizontal metrics" ) - FT_ERRORDEF_( Invalid_CharMap_Format, 0x96, \ - "invalid character map (cmap) format" ) - FT_ERRORDEF_( Invalid_PPem, 0x97, \ - "invalid ppem value" ) - FT_ERRORDEF_( Invalid_Vert_Metrics, 0x98, \ - "invalid vertical metrics" ) - FT_ERRORDEF_( Could_Not_Find_Context, 0x99, \ - "could not find context" ) - FT_ERRORDEF_( Invalid_Post_Table_Format, 0x9A, \ - "invalid PostScript (post) table format" ) - FT_ERRORDEF_( Invalid_Post_Table, 0x9B, \ - "invalid PostScript (post) table" ) - - /* CFF, CID, and Type 1 errors */ - - FT_ERRORDEF_( Syntax_Error, 0xA0, \ - "opcode syntax error" ) - FT_ERRORDEF_( Stack_Underflow, 0xA1, \ - "argument stack underflow" ) - FT_ERRORDEF_( Ignore, 0xA2, \ - "ignore" ) - FT_ERRORDEF_( No_Unicode_Glyph_Name, 0xA3, \ - "no Unicode glyph name found" ) - FT_ERRORDEF_( Glyph_Too_Big, 0xA4, \ - "glyph to big for hinting" ) - - /* BDF errors */ - - FT_ERRORDEF_( Missing_Startfont_Field, 0xB0, \ - "`STARTFONT' field missing" ) - FT_ERRORDEF_( Missing_Font_Field, 0xB1, \ - "`FONT' field missing" ) - FT_ERRORDEF_( Missing_Size_Field, 0xB2, \ - "`SIZE' field missing" ) - FT_ERRORDEF_( Missing_Fontboundingbox_Field, 0xB3, \ - "`FONTBOUNDINGBOX' field missing" ) - FT_ERRORDEF_( Missing_Chars_Field, 0xB4, \ - "`CHARS' field missing" ) - FT_ERRORDEF_( Missing_Startchar_Field, 0xB5, \ - "`STARTCHAR' field missing" ) - FT_ERRORDEF_( Missing_Encoding_Field, 0xB6, \ - "`ENCODING' field missing" ) - FT_ERRORDEF_( Missing_Bbx_Field, 0xB7, \ - "`BBX' field missing" ) - FT_ERRORDEF_( Bbx_Too_Big, 0xB8, \ - "`BBX' too big" ) - FT_ERRORDEF_( Corrupted_Font_Header, 0xB9, \ - "Font header corrupted or missing fields" ) - FT_ERRORDEF_( Corrupted_Font_Glyphs, 0xBA, \ - "Font glyphs corrupted or missing fields" ) +/*******************************************************************/ +/*******************************************************************/ +/***** *****/ +/***** LIST OF ERROR CODES/MESSAGES *****/ +/***** *****/ +/*******************************************************************/ +/*******************************************************************/ + + +/* You need to define both FT_ERRORDEF_ and FT_NOERRORDEF_ before */ +/* including this file. */ + + +/* generic errors */ + +FT_NOERRORDEF_( Ok, 0x00, \ + "no error" ) + +FT_ERRORDEF_( Cannot_Open_Resource, 0x01, \ + "cannot open resource" ) +FT_ERRORDEF_( Unknown_File_Format, 0x02, \ + "unknown file format" ) +FT_ERRORDEF_( Invalid_File_Format, 0x03, \ + "broken file" ) +FT_ERRORDEF_( Invalid_Version, 0x04, \ + "invalid FreeType version" ) +FT_ERRORDEF_( Lower_Module_Version, 0x05, \ + "module version is too low" ) +FT_ERRORDEF_( Invalid_Argument, 0x06, \ + "invalid argument" ) +FT_ERRORDEF_( Unimplemented_Feature, 0x07, \ + "unimplemented feature" ) +FT_ERRORDEF_( Invalid_Table, 0x08, \ + "broken table" ) +FT_ERRORDEF_( Invalid_Offset, 0x09, \ + "broken offset within table" ) +FT_ERRORDEF_( Array_Too_Large, 0x0A, \ + "array allocation size too large" ) +FT_ERRORDEF_( Missing_Module, 0x0B, \ + "missing module" ) +FT_ERRORDEF_( Missing_Property, 0x0C, \ + "missing property" ) + +/* glyph/character errors */ + +FT_ERRORDEF_( Invalid_Glyph_Index, 0x10, \ + "invalid glyph index" ) +FT_ERRORDEF_( Invalid_Character_Code, 0x11, \ + "invalid character code" ) +FT_ERRORDEF_( Invalid_Glyph_Format, 0x12, \ + "unsupported glyph image format" ) +FT_ERRORDEF_( Cannot_Render_Glyph, 0x13, \ + "cannot render this glyph format" ) +FT_ERRORDEF_( Invalid_Outline, 0x14, \ + "invalid outline" ) +FT_ERRORDEF_( Invalid_Composite, 0x15, \ + "invalid composite glyph" ) +FT_ERRORDEF_( Too_Many_Hints, 0x16, \ + "too many hints" ) +FT_ERRORDEF_( Invalid_Pixel_Size, 0x17, \ + "invalid pixel size" ) + +/* handle errors */ + +FT_ERRORDEF_( Invalid_Handle, 0x20, \ + "invalid object handle" ) +FT_ERRORDEF_( Invalid_Library_Handle, 0x21, \ + "invalid library handle" ) +FT_ERRORDEF_( Invalid_Driver_Handle, 0x22, \ + "invalid module handle" ) +FT_ERRORDEF_( Invalid_Face_Handle, 0x23, \ + "invalid face handle" ) +FT_ERRORDEF_( Invalid_Size_Handle, 0x24, \ + "invalid size handle" ) +FT_ERRORDEF_( Invalid_Slot_Handle, 0x25, \ + "invalid glyph slot handle" ) +FT_ERRORDEF_( Invalid_CharMap_Handle, 0x26, \ + "invalid charmap handle" ) +FT_ERRORDEF_( Invalid_Cache_Handle, 0x27, \ + "invalid cache manager handle" ) +FT_ERRORDEF_( Invalid_Stream_Handle, 0x28, \ + "invalid stream handle" ) + +/* driver errors */ + +FT_ERRORDEF_( Too_Many_Drivers, 0x30, \ + "too many modules" ) +FT_ERRORDEF_( Too_Many_Extensions, 0x31, \ + "too many extensions" ) + +/* memory errors */ + +FT_ERRORDEF_( Out_Of_Memory, 0x40, \ + "out of memory" ) +FT_ERRORDEF_( Unlisted_Object, 0x41, \ + "unlisted object" ) + +/* stream errors */ + +FT_ERRORDEF_( Cannot_Open_Stream, 0x51, \ + "cannot open stream" ) +FT_ERRORDEF_( Invalid_Stream_Seek, 0x52, \ + "invalid stream seek" ) +FT_ERRORDEF_( Invalid_Stream_Skip, 0x53, \ + "invalid stream skip" ) +FT_ERRORDEF_( Invalid_Stream_Read, 0x54, \ + "invalid stream read" ) +FT_ERRORDEF_( Invalid_Stream_Operation, 0x55, \ + "invalid stream operation" ) +FT_ERRORDEF_( Invalid_Frame_Operation, 0x56, \ + "invalid frame operation" ) +FT_ERRORDEF_( Nested_Frame_Access, 0x57, \ + "nested frame access" ) +FT_ERRORDEF_( Invalid_Frame_Read, 0x58, \ + "invalid frame read" ) + +/* raster errors */ + +FT_ERRORDEF_( Raster_Uninitialized, 0x60, \ + "raster uninitialized" ) +FT_ERRORDEF_( Raster_Corrupted, 0x61, \ + "raster corrupted" ) +FT_ERRORDEF_( Raster_Overflow, 0x62, \ + "raster overflow" ) +FT_ERRORDEF_( Raster_Negative_Height, 0x63, \ + "negative height while rastering" ) + +/* cache errors */ + +FT_ERRORDEF_( Too_Many_Caches, 0x70, \ + "too many registered caches" ) + +/* TrueType and SFNT errors */ + +FT_ERRORDEF_( Invalid_Opcode, 0x80, \ + "invalid opcode" ) +FT_ERRORDEF_( Too_Few_Arguments, 0x81, \ + "too few arguments" ) +FT_ERRORDEF_( Stack_Overflow, 0x82, \ + "stack overflow" ) +FT_ERRORDEF_( Code_Overflow, 0x83, \ + "code overflow" ) +FT_ERRORDEF_( Bad_Argument, 0x84, \ + "bad argument" ) +FT_ERRORDEF_( Divide_By_Zero, 0x85, \ + "division by zero" ) +FT_ERRORDEF_( Invalid_Reference, 0x86, \ + "invalid reference" ) +FT_ERRORDEF_( Debug_OpCode, 0x87, \ + "found debug opcode" ) +FT_ERRORDEF_( ENDF_In_Exec_Stream, 0x88, \ + "found ENDF opcode in execution stream" ) +FT_ERRORDEF_( Nested_DEFS, 0x89, \ + "nested DEFS" ) +FT_ERRORDEF_( Invalid_CodeRange, 0x8A, \ + "invalid code range" ) +FT_ERRORDEF_( Execution_Too_Long, 0x8B, \ + "execution context too long" ) +FT_ERRORDEF_( Too_Many_Function_Defs, 0x8C, \ + "too many function definitions" ) +FT_ERRORDEF_( Too_Many_Instruction_Defs, 0x8D, \ + "too many instruction definitions" ) +FT_ERRORDEF_( Table_Missing, 0x8E, \ + "SFNT font table missing" ) +FT_ERRORDEF_( Horiz_Header_Missing, 0x8F, \ + "horizontal header (hhea) table missing" ) +FT_ERRORDEF_( Locations_Missing, 0x90, \ + "locations (loca) table missing" ) +FT_ERRORDEF_( Name_Table_Missing, 0x91, \ + "name table missing" ) +FT_ERRORDEF_( CMap_Table_Missing, 0x92, \ + "character map (cmap) table missing" ) +FT_ERRORDEF_( Hmtx_Table_Missing, 0x93, \ + "horizontal metrics (hmtx) table missing" ) +FT_ERRORDEF_( Post_Table_Missing, 0x94, \ + "PostScript (post) table missing" ) +FT_ERRORDEF_( Invalid_Horiz_Metrics, 0x95, \ + "invalid horizontal metrics" ) +FT_ERRORDEF_( Invalid_CharMap_Format, 0x96, \ + "invalid character map (cmap) format" ) +FT_ERRORDEF_( Invalid_PPem, 0x97, \ + "invalid ppem value" ) +FT_ERRORDEF_( Invalid_Vert_Metrics, 0x98, \ + "invalid vertical metrics" ) +FT_ERRORDEF_( Could_Not_Find_Context, 0x99, \ + "could not find context" ) +FT_ERRORDEF_( Invalid_Post_Table_Format, 0x9A, \ + "invalid PostScript (post) table format" ) +FT_ERRORDEF_( Invalid_Post_Table, 0x9B, \ + "invalid PostScript (post) table" ) + +/* CFF, CID, and Type 1 errors */ + +FT_ERRORDEF_( Syntax_Error, 0xA0, \ + "opcode syntax error" ) +FT_ERRORDEF_( Stack_Underflow, 0xA1, \ + "argument stack underflow" ) +FT_ERRORDEF_( Ignore, 0xA2, \ + "ignore" ) +FT_ERRORDEF_( No_Unicode_Glyph_Name, 0xA3, \ + "no Unicode glyph name found" ) +FT_ERRORDEF_( Glyph_Too_Big, 0xA4, \ + "glyph to big for hinting" ) + +/* BDF errors */ + +FT_ERRORDEF_( Missing_Startfont_Field, 0xB0, \ + "`STARTFONT' field missing" ) +FT_ERRORDEF_( Missing_Font_Field, 0xB1, \ + "`FONT' field missing" ) +FT_ERRORDEF_( Missing_Size_Field, 0xB2, \ + "`SIZE' field missing" ) +FT_ERRORDEF_( Missing_Fontboundingbox_Field, 0xB3, \ + "`FONTBOUNDINGBOX' field missing" ) +FT_ERRORDEF_( Missing_Chars_Field, 0xB4, \ + "`CHARS' field missing" ) +FT_ERRORDEF_( Missing_Startchar_Field, 0xB5, \ + "`STARTCHAR' field missing" ) +FT_ERRORDEF_( Missing_Encoding_Field, 0xB6, \ + "`ENCODING' field missing" ) +FT_ERRORDEF_( Missing_Bbx_Field, 0xB7, \ + "`BBX' field missing" ) +FT_ERRORDEF_( Bbx_Too_Big, 0xB8, \ + "`BBX' too big" ) +FT_ERRORDEF_( Corrupted_Font_Header, 0xB9, \ + "Font header corrupted or missing fields" ) +FT_ERRORDEF_( Corrupted_Font_Glyphs, 0xBA, \ + "Font glyphs corrupted or missing fields" ) /* END */ diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/fterrors.h b/thirdparties/common/include/libfreetype/freetype2/freetype/fterrors.h index 0fa3e4d..f260ce0 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/fterrors.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/fterrors.h @@ -16,101 +16,101 @@ /***************************************************************************/ - /*************************************************************************/ - /* */ - /* This special header file is used to define the handling of FT2 */ - /* enumeration constants. It can also be used to generate error message */ - /* strings with a small macro trick explained below. */ - /* */ - /* I - Error Formats */ - /* ----------------- */ - /* */ - /* The configuration macro FT_CONFIG_OPTION_USE_MODULE_ERRORS can be */ - /* 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). See the file `ftmoderr.h' for */ - /* more details. */ - /* */ - /* */ - /* II - Error Message strings */ - /* -------------------------- */ - /* */ - /* The error definitions below are made through special macros that */ - /* allow client applications to build a table of error message strings */ - /* if they need it. The strings are not included in a normal build of */ - /* FreeType 2 to save space (most client applications do not use */ - /* them). */ - /* */ - /* To do so, you have to define the following macros before including */ - /* this file: */ - /* */ - /* FT_ERROR_START_LIST :: */ - /* This macro is called before anything else to define the start of */ - /* the error list. It is followed by several FT_ERROR_DEF calls */ - /* (see below). */ - /* */ - /* FT_ERROR_DEF( e, v, s ) :: */ - /* This macro is called to define one single error. */ - /* `e' is the error code identifier (e.g. FT_Err_Invalid_Argument). */ - /* `v' is the error numerical value. */ - /* `s' is the corresponding error string. */ - /* */ - /* FT_ERROR_END_LIST :: */ - /* This macro ends the list. */ - /* */ - /* Additionally, you have to undefine __FTERRORS_H__ before #including */ - /* this file. */ - /* */ - /* Here is a simple example: */ - /* */ - /* { */ - /* #undef __FTERRORS_H__ */ - /* #define FT_ERRORDEF( e, v, s ) { e, s }, */ - /* #define FT_ERROR_START_LIST { */ - /* #define FT_ERROR_END_LIST { 0, 0 } }; */ - /* */ - /* const struct */ - /* { */ - /* int err_code; */ - /* const char* err_msg; */ - /* } ft_errors[] = */ - /* */ - /* #include FT_ERRORS_H */ - /* } */ - /* */ - /*************************************************************************/ +/*************************************************************************/ +/* */ +/* This special header file is used to define the handling of FT2 */ +/* enumeration constants. It can also be used to generate error message */ +/* strings with a small macro trick explained below. */ +/* */ +/* I - Error Formats */ +/* ----------------- */ +/* */ +/* The configuration macro FT_CONFIG_OPTION_USE_MODULE_ERRORS can be */ +/* 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). See the file `ftmoderr.h' for */ +/* more details. */ +/* */ +/* */ +/* II - Error Message strings */ +/* -------------------------- */ +/* */ +/* The error definitions below are made through special macros that */ +/* allow client applications to build a table of error message strings */ +/* if they need it. The strings are not included in a normal build of */ +/* FreeType 2 to save space (most client applications do not use */ +/* them). */ +/* */ +/* To do so, you have to define the following macros before including */ +/* this file: */ +/* */ +/* FT_ERROR_START_LIST :: */ +/* This macro is called before anything else to define the start of */ +/* the error list. It is followed by several FT_ERROR_DEF calls */ +/* (see below). */ +/* */ +/* FT_ERROR_DEF( e, v, s ) :: */ +/* This macro is called to define one single error. */ +/* `e' is the error code identifier (e.g. FT_Err_Invalid_Argument). */ +/* `v' is the error numerical value. */ +/* `s' is the corresponding error string. */ +/* */ +/* FT_ERROR_END_LIST :: */ +/* This macro ends the list. */ +/* */ +/* Additionally, you have to undefine __FTERRORS_H__ before #including */ +/* this file. */ +/* */ +/* Here is a simple example: */ +/* */ +/* { */ +/* #undef __FTERRORS_H__ */ +/* #define FT_ERRORDEF( e, v, s ) { e, s }, */ +/* #define FT_ERROR_START_LIST { */ +/* #define FT_ERROR_END_LIST { 0, 0 } }; */ +/* */ +/* const struct */ +/* { */ +/* int err_code; */ +/* const char* err_msg; */ +/* } ft_errors[] = */ +/* */ +/* #include FT_ERRORS_H */ +/* } */ +/* */ +/*************************************************************************/ #ifndef __FTERRORS_H__ #define __FTERRORS_H__ - /* include module base error codes */ +/* include module base error codes */ #include FT_MODULE_ERRORS_H - /*******************************************************************/ - /*******************************************************************/ - /***** *****/ - /***** SETUP MACROS *****/ - /***** *****/ - /*******************************************************************/ - /*******************************************************************/ +/*******************************************************************/ +/*******************************************************************/ +/***** *****/ +/***** SETUP MACROS *****/ +/***** *****/ +/*******************************************************************/ +/*******************************************************************/ #undef FT_NEED_EXTERN_C - /* FT_ERR_PREFIX is used as a prefix for error identifiers. */ - /* By default, we use `FT_Err_'. */ - /* */ +/* FT_ERR_PREFIX is used as a prefix for error identifiers. */ +/* By default, we use `FT_Err_'. */ +/* */ #ifndef FT_ERR_PREFIX #define FT_ERR_PREFIX FT_Err_ #endif - /* FT_ERR_BASE is used as the base for module-specific errors. */ - /* */ +/* FT_ERR_BASE is used as the base for module-specific errors. */ +/* */ #ifdef FT_CONFIG_OPTION_USE_MODULE_ERRORS #ifndef FT_ERR_BASE @@ -125,9 +125,9 @@ #endif /* FT_CONFIG_OPTION_USE_MODULE_ERRORS */ - /* If FT_ERRORDEF is not defined, we need to define a simple */ - /* enumeration type. */ - /* */ +/* If FT_ERRORDEF is not defined, we need to define a simple */ +/* enumeration type. */ +/* */ #ifndef FT_ERRORDEF #define FT_ERRORDEF( e, v, s ) e = v, @@ -136,45 +136,45 @@ #ifdef __cplusplus #define FT_NEED_EXTERN_C - extern "C" { +extern "C" { #endif #endif /* !FT_ERRORDEF */ - /* this macro is used to define an error */ +/* this macro is used to define an error */ #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 <module>_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 ) #ifdef FT_ERROR_START_LIST - FT_ERROR_START_LIST +FT_ERROR_START_LIST #endif - /* now include the error codes */ +/* now include the error codes */ #include FT_ERROR_DEFINITIONS_H #ifdef FT_ERROR_END_LIST - FT_ERROR_END_LIST +FT_ERROR_END_LIST #endif - /*******************************************************************/ - /*******************************************************************/ - /***** *****/ - /***** SIMPLE CLEANUP *****/ - /***** *****/ - /*******************************************************************/ - /*******************************************************************/ +/*******************************************************************/ +/*******************************************************************/ +/***** *****/ +/***** SIMPLE CLEANUP *****/ +/***** *****/ +/*******************************************************************/ +/*******************************************************************/ #ifdef FT_NEED_EXTERN_C - } +} #endif #undef FT_ERROR_START_LIST @@ -187,7 +187,7 @@ #undef FT_NEED_EXTERN_C #undef FT_ERR_BASE - /* FT_ERR_PREFIX is needed internally */ +/* FT_ERR_PREFIX is needed internally */ #ifndef FT2_BUILD_LIBRARY #undef FT_ERR_PREFIX #endif diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/ftgasp.h b/thirdparties/common/include/libfreetype/freetype2/freetype/ftgasp.h index 453d4fa..55fc70e 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/ftgasp.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/ftgasp.h @@ -29,66 +29,66 @@ #endif - /*************************************************************************** - * - * @section: - * gasp_table - * - * @title: - * Gasp Table - * - * @abstract: - * Retrieving TrueType `gasp' table entries. - * - * @description: - * The function @FT_Get_Gasp can be used to query a TrueType or OpenType - * font for specific entries in its `gasp' table, if any. This is - * mainly useful when implementing native TrueType hinting with the - * bytecode interpreter to duplicate the Windows text rendering results. - */ +/*************************************************************************** + * + * @section: + * gasp_table + * + * @title: + * Gasp Table + * + * @abstract: + * Retrieving TrueType `gasp' table entries. + * + * @description: + * The function @FT_Get_Gasp can be used to query a TrueType or OpenType + * font for specific entries in its `gasp' table, if any. This is + * mainly useful when implementing native TrueType hinting with the + * bytecode interpreter to duplicate the Windows text rendering results. + */ - /************************************************************************* - * - * @enum: - * FT_GASP_XXX - * - * @description: - * A list of values and/or bit-flags returned by the @FT_Get_Gasp - * function. - * - * @values: - * FT_GASP_NO_TABLE :: - * This special value means that there is no GASP table in this face. - * It is up to the client to decide what to do. - * - * FT_GASP_DO_GRIDFIT :: - * Grid-fitting and hinting should be performed at the specified ppem. - * This *really* means TrueType bytecode interpretation. If this bit - * is not set, no hinting gets applied. - * - * FT_GASP_DO_GRAY :: - * Anti-aliased rendering should be performed at the specified ppem. - * If not set, do monochrome rendering. - * - * FT_GASP_SYMMETRIC_SMOOTHING :: - * If set, smoothing along multiple axes must be used with ClearType. - * - * FT_GASP_SYMMETRIC_GRIDFIT :: - * Grid-fitting must be used with ClearType's symmetric smoothing. - * - * @note: - * The bit-flags `FT_GASP_DO_GRIDFIT' and `FT_GASP_DO_GRAY' are to be - * used for standard font rasterization only. Independently of that, - * `FT_GASP_SYMMETRIC_SMOOTHING' and `FT_GASP_SYMMETRIC_GRIDFIT' are to - * be used if ClearType is enabled (and `FT_GASP_DO_GRIDFIT' and - * `FT_GASP_DO_GRAY' are consequently ignored). - * - * `ClearType' is Microsoft's implementation of LCD rendering, partly - * protected by patents. - * - * @since: - * 2.3.0 - */ +/************************************************************************* + * + * @enum: + * FT_GASP_XXX + * + * @description: + * A list of values and/or bit-flags returned by the @FT_Get_Gasp + * function. + * + * @values: + * FT_GASP_NO_TABLE :: + * This special value means that there is no GASP table in this face. + * It is up to the client to decide what to do. + * + * FT_GASP_DO_GRIDFIT :: + * Grid-fitting and hinting should be performed at the specified ppem. + * This *really* means TrueType bytecode interpretation. If this bit + * is not set, no hinting gets applied. + * + * FT_GASP_DO_GRAY :: + * Anti-aliased rendering should be performed at the specified ppem. + * If not set, do monochrome rendering. + * + * FT_GASP_SYMMETRIC_SMOOTHING :: + * If set, smoothing along multiple axes must be used with ClearType. + * + * FT_GASP_SYMMETRIC_GRIDFIT :: + * Grid-fitting must be used with ClearType's symmetric smoothing. + * + * @note: + * The bit-flags `FT_GASP_DO_GRIDFIT' and `FT_GASP_DO_GRAY' are to be + * used for standard font rasterization only. Independently of that, + * `FT_GASP_SYMMETRIC_SMOOTHING' and `FT_GASP_SYMMETRIC_GRIDFIT' are to + * be used if ClearType is enabled (and `FT_GASP_DO_GRIDFIT' and + * `FT_GASP_DO_GRAY' are consequently ignored). + * + * `ClearType' is Microsoft's implementation of LCD rendering, partly + * protected by patents. + * + * @since: + * 2.3.0 + */ #define FT_GASP_NO_TABLE -1 #define FT_GASP_DO_GRIDFIT 0x01 #define FT_GASP_DO_GRAY 0x02 @@ -96,29 +96,29 @@ #define FT_GASP_SYMMETRIC_GRIDFIT 0x10 - /************************************************************************* - * - * @func: - * FT_Get_Gasp - * - * @description: - * Read the `gasp' table from a TrueType or OpenType font file and - * return the entry corresponding to a given character pixel size. - * - * @input: - * face :: The source face handle. - * ppem :: The vertical character pixel size. - * - * @return: - * Bit flags (see @FT_GASP_XXX), or @FT_GASP_NO_TABLE if there is no - * `gasp' table in the face. - * - * @since: - * 2.3.0 - */ - FT_EXPORT( FT_Int ) - FT_Get_Gasp( FT_Face face, - FT_UInt ppem ); +/************************************************************************* + * + * @func: + * FT_Get_Gasp + * + * @description: + * Read the `gasp' table from a TrueType or OpenType font file and + * return the entry corresponding to a given character pixel size. + * + * @input: + * face :: The source face handle. + * ppem :: The vertical character pixel size. + * + * @return: + * Bit flags (see @FT_GASP_XXX), or @FT_GASP_NO_TABLE if there is no + * `gasp' table in the face. + * + * @since: + * 2.3.0 + */ +FT_EXPORT( FT_Int ) +FT_Get_Gasp( FT_Face face, + FT_UInt ppem ); /* */ diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/ftglyph.h b/thirdparties/common/include/libfreetype/freetype2/freetype/ftglyph.h index 31dc331..34c0525 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/ftglyph.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/ftglyph.h @@ -16,17 +16,17 @@ /***************************************************************************/ - /*************************************************************************/ - /* */ - /* This file contains the definition of several convenience functions */ - /* that can be used by client applications to easily retrieve glyph */ - /* bitmaps and outlines from a given face. */ - /* */ - /* These functions should be optional if you are writing a font server */ - /* or text layout engine on top of FreeType. However, they are pretty */ - /* handy for many other simple uses of the library. */ - /* */ - /*************************************************************************/ +/*************************************************************************/ +/* */ +/* This file contains the definition of several convenience functions */ +/* that can be used by client applications to easily retrieve glyph */ +/* bitmaps and outlines from a given face. */ +/* */ +/* These functions should be optional if you are writing a font server */ +/* or text layout engine on top of FreeType. However, they are pretty */ +/* handy for many other simple uses of the library. */ +/* */ +/*************************************************************************/ #ifndef __FTGLYPH_H__ @@ -46,301 +46,297 @@ FT_BEGIN_HEADER - /*************************************************************************/ - /* */ - /* <Section> */ - /* glyph_management */ - /* */ - /* <Title> */ - /* Glyph Management */ - /* */ - /* <Abstract> */ - /* Generic interface to manage individual glyph data. */ - /* */ - /* <Description> */ - /* This section contains definitions used to manage glyph data */ - /* through generic FT_Glyph objects. Each of them can contain a */ - /* bitmap, a vector outline, or even images in other formats. */ - /* */ - /*************************************************************************/ - - - /* forward declaration to a private type */ - typedef struct FT_Glyph_Class_ FT_Glyph_Class; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Glyph */ - /* */ - /* <Description> */ - /* Handle to an object used to model generic glyph images. It is a */ - /* pointer to the @FT_GlyphRec structure and can contain a glyph */ - /* bitmap or pointer. */ - /* */ - /* <Note> */ - /* Glyph objects are not owned by the library. You must thus release */ - /* them manually (through @FT_Done_Glyph) _before_ calling */ - /* @FT_Done_FreeType. */ - /* */ - typedef struct FT_GlyphRec_* FT_Glyph; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_GlyphRec */ - /* */ - /* <Description> */ - /* The root glyph structure contains a given glyph image plus its */ - /* advance width in 16.16 fixed-point format. */ - /* */ - /* <Fields> */ - /* library :: A handle to the FreeType library object. */ - /* */ - /* clazz :: A pointer to the glyph's class. Private. */ - /* */ - /* format :: The format of the glyph's image. */ - /* */ - /* advance :: A 16.16 vector that gives the glyph's advance width. */ - /* */ - typedef struct FT_GlyphRec_ - { +/*************************************************************************/ +/* */ +/* <Section> */ +/* glyph_management */ +/* */ +/* <Title> */ +/* Glyph Management */ +/* */ +/* <Abstract> */ +/* Generic interface to manage individual glyph data. */ +/* */ +/* <Description> */ +/* This section contains definitions used to manage glyph data */ +/* through generic FT_Glyph objects. Each of them can contain a */ +/* bitmap, a vector outline, or even images in other formats. */ +/* */ +/*************************************************************************/ + + +/* forward declaration to a private type */ +typedef struct FT_Glyph_Class_ FT_Glyph_Class; + + +/*************************************************************************/ +/* */ +/* <Type> */ +/* FT_Glyph */ +/* */ +/* <Description> */ +/* Handle to an object used to model generic glyph images. It is a */ +/* pointer to the @FT_GlyphRec structure and can contain a glyph */ +/* bitmap or pointer. */ +/* */ +/* <Note> */ +/* Glyph objects are not owned by the library. You must thus release */ +/* them manually (through @FT_Done_Glyph) _before_ calling */ +/* @FT_Done_FreeType. */ +/* */ +typedef struct FT_GlyphRec_* FT_Glyph; + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* FT_GlyphRec */ +/* */ +/* <Description> */ +/* The root glyph structure contains a given glyph image plus its */ +/* advance width in 16.16 fixed-point format. */ +/* */ +/* <Fields> */ +/* library :: A handle to the FreeType library object. */ +/* */ +/* clazz :: A pointer to the glyph's class. Private. */ +/* */ +/* format :: The format of the glyph's image. */ +/* */ +/* advance :: A 16.16 vector that gives the glyph's advance width. */ +/* */ +typedef struct FT_GlyphRec_ { FT_Library library; const FT_Glyph_Class* clazz; FT_Glyph_Format format; FT_Vector advance; - } FT_GlyphRec; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_BitmapGlyph */ - /* */ - /* <Description> */ - /* A handle to an object used to model a bitmap glyph image. This is */ - /* a sub-class of @FT_Glyph, and a pointer to @FT_BitmapGlyphRec. */ - /* */ - typedef struct FT_BitmapGlyphRec_* FT_BitmapGlyph; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_BitmapGlyphRec */ - /* */ - /* <Description> */ - /* A structure used for bitmap glyph images. This really is a */ - /* `sub-class' of @FT_GlyphRec. */ - /* */ - /* <Fields> */ - /* root :: The root @FT_Glyph fields. */ - /* */ - /* left :: The left-side bearing, i.e., the horizontal distance */ - /* from the current pen position to the left border of the */ - /* glyph bitmap. */ - /* */ - /* top :: The top-side bearing, i.e., the vertical distance from */ - /* the current pen position to the top border of the glyph */ - /* bitmap. This distance is positive for upwards~y! */ - /* */ - /* bitmap :: A descriptor for the bitmap. */ - /* */ - /* <Note> */ - /* You can typecast an @FT_Glyph to @FT_BitmapGlyph if you have */ - /* `glyph->format == FT_GLYPH_FORMAT_BITMAP'. This lets you access */ - /* the bitmap's contents easily. */ - /* */ - /* The corresponding pixel buffer is always owned by @FT_BitmapGlyph */ - /* and is thus created and destroyed with it. */ - /* */ - typedef struct FT_BitmapGlyphRec_ - { +} FT_GlyphRec; + + +/*************************************************************************/ +/* */ +/* <Type> */ +/* FT_BitmapGlyph */ +/* */ +/* <Description> */ +/* A handle to an object used to model a bitmap glyph image. This is */ +/* a sub-class of @FT_Glyph, and a pointer to @FT_BitmapGlyphRec. */ +/* */ +typedef struct FT_BitmapGlyphRec_* FT_BitmapGlyph; + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* FT_BitmapGlyphRec */ +/* */ +/* <Description> */ +/* A structure used for bitmap glyph images. This really is a */ +/* `sub-class' of @FT_GlyphRec. */ +/* */ +/* <Fields> */ +/* root :: The root @FT_Glyph fields. */ +/* */ +/* left :: The left-side bearing, i.e., the horizontal distance */ +/* from the current pen position to the left border of the */ +/* glyph bitmap. */ +/* */ +/* top :: The top-side bearing, i.e., the vertical distance from */ +/* the current pen position to the top border of the glyph */ +/* bitmap. This distance is positive for upwards~y! */ +/* */ +/* bitmap :: A descriptor for the bitmap. */ +/* */ +/* <Note> */ +/* You can typecast an @FT_Glyph to @FT_BitmapGlyph if you have */ +/* `glyph->format == FT_GLYPH_FORMAT_BITMAP'. This lets you access */ +/* the bitmap's contents easily. */ +/* */ +/* The corresponding pixel buffer is always owned by @FT_BitmapGlyph */ +/* and is thus created and destroyed with it. */ +/* */ +typedef struct FT_BitmapGlyphRec_ { FT_GlyphRec root; FT_Int left; FT_Int top; FT_Bitmap bitmap; - } FT_BitmapGlyphRec; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_OutlineGlyph */ - /* */ - /* <Description> */ - /* A handle to an object used to model an outline glyph image. This */ - /* is a sub-class of @FT_Glyph, and a pointer to @FT_OutlineGlyphRec. */ - /* */ - typedef struct FT_OutlineGlyphRec_* FT_OutlineGlyph; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_OutlineGlyphRec */ - /* */ - /* <Description> */ - /* A structure used for outline (vectorial) glyph images. This */ - /* really is a `sub-class' of @FT_GlyphRec. */ - /* */ - /* <Fields> */ - /* root :: The root @FT_Glyph fields. */ - /* */ - /* outline :: A descriptor for the outline. */ - /* */ - /* <Note> */ - /* You can typecast an @FT_Glyph to @FT_OutlineGlyph if you have */ - /* `glyph->format == FT_GLYPH_FORMAT_OUTLINE'. This lets you access */ - /* the outline's content easily. */ - /* */ - /* As the outline is extracted from a glyph slot, its coordinates are */ - /* expressed normally in 26.6 pixels, unless the flag */ - /* @FT_LOAD_NO_SCALE was used in @FT_Load_Glyph() or @FT_Load_Char(). */ - /* */ - /* The outline's tables are always owned by the object and are */ - /* destroyed with it. */ - /* */ - typedef struct FT_OutlineGlyphRec_ - { +} FT_BitmapGlyphRec; + + +/*************************************************************************/ +/* */ +/* <Type> */ +/* FT_OutlineGlyph */ +/* */ +/* <Description> */ +/* A handle to an object used to model an outline glyph image. This */ +/* is a sub-class of @FT_Glyph, and a pointer to @FT_OutlineGlyphRec. */ +/* */ +typedef struct FT_OutlineGlyphRec_* FT_OutlineGlyph; + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* FT_OutlineGlyphRec */ +/* */ +/* <Description> */ +/* A structure used for outline (vectorial) glyph images. This */ +/* really is a `sub-class' of @FT_GlyphRec. */ +/* */ +/* <Fields> */ +/* root :: The root @FT_Glyph fields. */ +/* */ +/* outline :: A descriptor for the outline. */ +/* */ +/* <Note> */ +/* You can typecast an @FT_Glyph to @FT_OutlineGlyph if you have */ +/* `glyph->format == FT_GLYPH_FORMAT_OUTLINE'. This lets you access */ +/* the outline's content easily. */ +/* */ +/* As the outline is extracted from a glyph slot, its coordinates are */ +/* expressed normally in 26.6 pixels, unless the flag */ +/* @FT_LOAD_NO_SCALE was used in @FT_Load_Glyph() or @FT_Load_Char(). */ +/* */ +/* The outline's tables are always owned by the object and are */ +/* destroyed with it. */ +/* */ +typedef struct FT_OutlineGlyphRec_ { FT_GlyphRec root; FT_Outline outline; - } FT_OutlineGlyphRec; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Glyph */ - /* */ - /* <Description> */ - /* A function used to extract a glyph image from a slot. Note that */ - /* the created @FT_Glyph object must be released with @FT_Done_Glyph. */ - /* */ - /* <Input> */ - /* slot :: A handle to the source glyph slot. */ - /* */ - /* <Output> */ - /* aglyph :: A handle to the glyph object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Get_Glyph( FT_GlyphSlot slot, - FT_Glyph *aglyph ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Glyph_Copy */ - /* */ - /* <Description> */ - /* A function used to copy a glyph image. Note that the created */ - /* @FT_Glyph object must be released with @FT_Done_Glyph. */ - /* */ - /* <Input> */ - /* source :: A handle to the source glyph object. */ - /* */ - /* <Output> */ - /* target :: A handle to the target glyph object. 0~in case of */ - /* error. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Glyph_Copy( FT_Glyph source, - FT_Glyph *target ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Glyph_Transform */ - /* */ - /* <Description> */ - /* Transform a glyph image if its format is scalable. */ - /* */ - /* <InOut> */ - /* glyph :: A handle to the target glyph object. */ - /* */ - /* <Input> */ - /* matrix :: A pointer to a 2x2 matrix to apply. */ - /* */ - /* delta :: A pointer to a 2d vector to apply. Coordinates are */ - /* expressed in 1/64th of a pixel. */ - /* */ - /* <Return> */ - /* FreeType error code (if not 0, the glyph format is not scalable). */ - /* */ - /* <Note> */ - /* The 2x2 transformation matrix is also applied to the glyph's */ - /* advance vector. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Glyph_Transform( FT_Glyph glyph, - FT_Matrix* matrix, - FT_Vector* delta ); - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_Glyph_BBox_Mode */ - /* */ - /* <Description> */ - /* The mode how the values of @FT_Glyph_Get_CBox are returned. */ - /* */ - /* <Values> */ - /* FT_GLYPH_BBOX_UNSCALED :: */ - /* Return unscaled font units. */ - /* */ - /* FT_GLYPH_BBOX_SUBPIXELS :: */ - /* Return unfitted 26.6 coordinates. */ - /* */ - /* FT_GLYPH_BBOX_GRIDFIT :: */ - /* Return grid-fitted 26.6 coordinates. */ - /* */ - /* FT_GLYPH_BBOX_TRUNCATE :: */ - /* Return coordinates in integer pixels. */ - /* */ - /* FT_GLYPH_BBOX_PIXELS :: */ - /* Return grid-fitted pixel coordinates. */ - /* */ - typedef enum FT_Glyph_BBox_Mode_ - { +} FT_OutlineGlyphRec; + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Get_Glyph */ +/* */ +/* <Description> */ +/* A function used to extract a glyph image from a slot. Note that */ +/* the created @FT_Glyph object must be released with @FT_Done_Glyph. */ +/* */ +/* <Input> */ +/* slot :: A handle to the source glyph slot. */ +/* */ +/* <Output> */ +/* aglyph :: A handle to the glyph object. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +FT_EXPORT( FT_Error ) +FT_Get_Glyph( FT_GlyphSlot slot, + FT_Glyph *aglyph ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Glyph_Copy */ +/* */ +/* <Description> */ +/* A function used to copy a glyph image. Note that the created */ +/* @FT_Glyph object must be released with @FT_Done_Glyph. */ +/* */ +/* <Input> */ +/* source :: A handle to the source glyph object. */ +/* */ +/* <Output> */ +/* target :: A handle to the target glyph object. 0~in case of */ +/* error. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +FT_EXPORT( FT_Error ) +FT_Glyph_Copy( FT_Glyph source, + FT_Glyph *target ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Glyph_Transform */ +/* */ +/* <Description> */ +/* Transform a glyph image if its format is scalable. */ +/* */ +/* <InOut> */ +/* glyph :: A handle to the target glyph object. */ +/* */ +/* <Input> */ +/* matrix :: A pointer to a 2x2 matrix to apply. */ +/* */ +/* delta :: A pointer to a 2d vector to apply. Coordinates are */ +/* expressed in 1/64th of a pixel. */ +/* */ +/* <Return> */ +/* FreeType error code (if not 0, the glyph format is not scalable). */ +/* */ +/* <Note> */ +/* The 2x2 transformation matrix is also applied to the glyph's */ +/* advance vector. */ +/* */ +FT_EXPORT( FT_Error ) +FT_Glyph_Transform( FT_Glyph glyph, + FT_Matrix* matrix, + FT_Vector* delta ); + + +/*************************************************************************/ +/* */ +/* <Enum> */ +/* FT_Glyph_BBox_Mode */ +/* */ +/* <Description> */ +/* The mode how the values of @FT_Glyph_Get_CBox are returned. */ +/* */ +/* <Values> */ +/* FT_GLYPH_BBOX_UNSCALED :: */ +/* Return unscaled font units. */ +/* */ +/* FT_GLYPH_BBOX_SUBPIXELS :: */ +/* Return unfitted 26.6 coordinates. */ +/* */ +/* FT_GLYPH_BBOX_GRIDFIT :: */ +/* Return grid-fitted 26.6 coordinates. */ +/* */ +/* FT_GLYPH_BBOX_TRUNCATE :: */ +/* Return coordinates in integer pixels. */ +/* */ +/* FT_GLYPH_BBOX_PIXELS :: */ +/* Return grid-fitted pixel coordinates. */ +/* */ +typedef enum FT_Glyph_BBox_Mode_ { FT_GLYPH_BBOX_UNSCALED = 0, FT_GLYPH_BBOX_SUBPIXELS = 0, FT_GLYPH_BBOX_GRIDFIT = 1, FT_GLYPH_BBOX_TRUNCATE = 2, FT_GLYPH_BBOX_PIXELS = 3 - } FT_Glyph_BBox_Mode; - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* ft_glyph_bbox_xxx */ - /* */ - /* <Description> */ - /* These constants are deprecated. Use the corresponding */ - /* @FT_Glyph_BBox_Mode values instead. */ - /* */ - /* <Values> */ - /* ft_glyph_bbox_unscaled :: See @FT_GLYPH_BBOX_UNSCALED. */ - /* ft_glyph_bbox_subpixels :: See @FT_GLYPH_BBOX_SUBPIXELS. */ - /* ft_glyph_bbox_gridfit :: See @FT_GLYPH_BBOX_GRIDFIT. */ - /* ft_glyph_bbox_truncate :: See @FT_GLYPH_BBOX_TRUNCATE. */ - /* ft_glyph_bbox_pixels :: See @FT_GLYPH_BBOX_PIXELS. */ - /* */ +} FT_Glyph_BBox_Mode; + + +/*************************************************************************/ +/* */ +/* <Enum> */ +/* ft_glyph_bbox_xxx */ +/* */ +/* <Description> */ +/* These constants are deprecated. Use the corresponding */ +/* @FT_Glyph_BBox_Mode values instead. */ +/* */ +/* <Values> */ +/* ft_glyph_bbox_unscaled :: See @FT_GLYPH_BBOX_UNSCALED. */ +/* ft_glyph_bbox_subpixels :: See @FT_GLYPH_BBOX_SUBPIXELS. */ +/* ft_glyph_bbox_gridfit :: See @FT_GLYPH_BBOX_GRIDFIT. */ +/* ft_glyph_bbox_truncate :: See @FT_GLYPH_BBOX_TRUNCATE. */ +/* ft_glyph_bbox_pixels :: See @FT_GLYPH_BBOX_PIXELS. */ +/* */ #define ft_glyph_bbox_unscaled FT_GLYPH_BBOX_UNSCALED #define ft_glyph_bbox_subpixels FT_GLYPH_BBOX_SUBPIXELS #define ft_glyph_bbox_gridfit FT_GLYPH_BBOX_GRIDFIT @@ -348,263 +344,263 @@ FT_BEGIN_HEADER #define ft_glyph_bbox_pixels FT_GLYPH_BBOX_PIXELS - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Glyph_Get_CBox */ - /* */ - /* <Description> */ - /* Return a glyph's `control box'. The control box encloses all the */ - /* outline's points, including Bézier control points. Though it */ - /* coincides with the exact bounding box for most glyphs, it can be */ - /* slightly larger in some situations (like when rotating an outline */ - /* which contains Bézier outside arcs). */ - /* */ - /* Computing the control box is very fast, while getting the bounding */ - /* box can take much more time as it needs to walk over all segments */ - /* and arcs in the outline. To get the latter, you can use the */ - /* `ftbbox' component which is dedicated to this single task. */ - /* */ - /* <Input> */ - /* glyph :: A handle to the source glyph object. */ - /* */ - /* mode :: The mode which indicates how to interpret the returned */ - /* bounding box values. */ - /* */ - /* <Output> */ - /* acbox :: The glyph coordinate bounding box. Coordinates are */ - /* expressed in 1/64th of pixels if it is grid-fitted. */ - /* */ - /* <Note> */ - /* Coordinates are relative to the glyph origin, using the y~upwards */ - /* convention. */ - /* */ - /* If the glyph has been loaded with @FT_LOAD_NO_SCALE, `bbox_mode' */ - /* must be set to @FT_GLYPH_BBOX_UNSCALED to get unscaled font */ - /* units in 26.6 pixel format. The value @FT_GLYPH_BBOX_SUBPIXELS */ - /* is another name for this constant. */ - /* */ - /* If the font is tricky and the glyph has been loaded with */ - /* @FT_LOAD_NO_SCALE, the resulting CBox is meaningless. To get */ - /* reasonable values for the CBox it is necessary to load the glyph */ - /* at a large ppem value (so that the hinting instructions can */ - /* properly shift and scale the subglyphs), then extracting the CBox */ - /* which can be eventually converted back to font units. */ - /* */ - /* Note that the maximum coordinates are exclusive, which means that */ - /* one can compute the width and height of the glyph image (be it in */ - /* integer or 26.6 pixels) as: */ - /* */ - /* { */ - /* width = bbox.xMax - bbox.xMin; */ - /* height = bbox.yMax - bbox.yMin; */ - /* } */ - /* */ - /* Note also that for 26.6 coordinates, if `bbox_mode' is set to */ - /* @FT_GLYPH_BBOX_GRIDFIT, the coordinates will also be grid-fitted, */ - /* which corresponds to: */ - /* */ - /* { */ - /* bbox.xMin = FLOOR(bbox.xMin); */ - /* bbox.yMin = FLOOR(bbox.yMin); */ - /* bbox.xMax = CEILING(bbox.xMax); */ - /* bbox.yMax = CEILING(bbox.yMax); */ - /* } */ - /* */ - /* To get the bbox in pixel coordinates, set `bbox_mode' to */ - /* @FT_GLYPH_BBOX_TRUNCATE. */ - /* */ - /* To get the bbox in grid-fitted pixel coordinates, set `bbox_mode' */ - /* to @FT_GLYPH_BBOX_PIXELS. */ - /* */ - FT_EXPORT( void ) - FT_Glyph_Get_CBox( FT_Glyph glyph, - FT_UInt bbox_mode, - FT_BBox *acbox ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Glyph_To_Bitmap */ - /* */ - /* <Description> */ - /* Convert a given glyph object to a bitmap glyph object. */ - /* */ - /* <InOut> */ - /* the_glyph :: A pointer to a handle to the target glyph. */ - /* */ - /* <Input> */ - /* render_mode :: An enumeration that describes how the data is */ - /* rendered. */ - /* */ - /* origin :: A pointer to a vector used to translate the glyph */ - /* image before rendering. Can be~0 (if no */ - /* translation). The origin is expressed in */ - /* 26.6 pixels. */ - /* */ - /* destroy :: A boolean that indicates that the original glyph */ - /* image should be destroyed by this function. It is */ - /* never destroyed in case of error. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* This function does nothing if the glyph format isn't scalable. */ - /* */ - /* The glyph image is translated with the `origin' vector before */ - /* rendering. */ - /* */ - /* The first parameter is a pointer to an @FT_Glyph handle, that will */ - /* be _replaced_ by this function (with newly allocated data). */ - /* Typically, you would use (omitting error handling): */ - /* */ - /* */ - /* { */ - /* FT_Glyph glyph; */ - /* FT_BitmapGlyph glyph_bitmap; */ - /* */ - /* */ - /* // load glyph */ - /* error = FT_Load_Char( face, glyph_index, FT_LOAD_DEFAUT ); */ - /* */ - /* // extract glyph image */ - /* error = FT_Get_Glyph( face->glyph, &glyph ); */ - /* */ - /* // convert to a bitmap (default render mode + destroying old) */ - /* if ( glyph->format != FT_GLYPH_FORMAT_BITMAP ) */ - /* { */ - /* error = FT_Glyph_To_Bitmap( &glyph, FT_RENDER_MODE_NORMAL, */ - /* 0, 1 ); */ - /* if ( error ) // `glyph' unchanged */ - /* ... */ - /* } */ - /* */ - /* // access bitmap content by typecasting */ - /* glyph_bitmap = (FT_BitmapGlyph)glyph; */ - /* */ - /* // do funny stuff with it, like blitting/drawing */ - /* ... */ - /* */ - /* // discard glyph image (bitmap or not) */ - /* FT_Done_Glyph( glyph ); */ - /* } */ - /* */ - /* */ - /* Here another example, again without error handling: */ - /* */ - /* */ - /* { */ - /* FT_Glyph glyphs[MAX_GLYPHS] */ - /* */ - /* */ - /* ... */ - /* */ - /* for ( idx = 0; i < MAX_GLYPHS; i++ ) */ - /* error = FT_Load_Glyph( face, idx, FT_LOAD_DEFAULT ) || */ - /* FT_Get_Glyph ( face->glyph, &glyph[idx] ); */ - /* */ - /* ... */ - /* */ - /* for ( idx = 0; i < MAX_GLYPHS; i++ ) */ - /* { */ - /* FT_Glyph bitmap = glyphs[idx]; */ - /* */ - /* */ - /* ... */ - /* */ - /* // after this call, `bitmap' no longer points into */ - /* // the `glyphs' array (and the old value isn't destroyed) */ - /* FT_Glyph_To_Bitmap( &bitmap, FT_RENDER_MODE_MONO, 0, 0 ); */ - /* */ - /* ... */ - /* */ - /* FT_Done_Glyph( bitmap ); */ - /* } */ - /* */ - /* ... */ - /* */ - /* for ( idx = 0; i < MAX_GLYPHS; i++ ) */ - /* FT_Done_Glyph( glyphs[idx] ); */ - /* } */ - /* */ - FT_EXPORT( FT_Error ) - FT_Glyph_To_Bitmap( FT_Glyph* the_glyph, - FT_Render_Mode render_mode, - FT_Vector* origin, - FT_Bool destroy ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Done_Glyph */ - /* */ - /* <Description> */ - /* Destroy a given glyph. */ - /* */ - /* <Input> */ - /* glyph :: A handle to the target glyph object. */ - /* */ - FT_EXPORT( void ) - FT_Done_Glyph( FT_Glyph glyph ); - - /* */ - - - /* other helpful functions */ - - /*************************************************************************/ - /* */ - /* <Section> */ - /* computations */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Matrix_Multiply */ - /* */ - /* <Description> */ - /* Perform the matrix operation `b = a*b'. */ - /* */ - /* <Input> */ - /* a :: A pointer to matrix `a'. */ - /* */ - /* <InOut> */ - /* b :: A pointer to matrix `b'. */ - /* */ - /* <Note> */ - /* The result is undefined if either `a' or `b' is zero. */ - /* */ - FT_EXPORT( void ) - FT_Matrix_Multiply( const FT_Matrix* a, - FT_Matrix* b ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Matrix_Invert */ - /* */ - /* <Description> */ - /* Invert a 2x2 matrix. Return an error if it can't be inverted. */ - /* */ - /* <InOut> */ - /* matrix :: A pointer to the target matrix. Remains untouched in */ - /* case of error. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Matrix_Invert( FT_Matrix* matrix ); - - - /* */ +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Glyph_Get_CBox */ +/* */ +/* <Description> */ +/* Return a glyph's `control box'. The control box encloses all the */ +/* outline's points, including Bézier control points. Though it */ +/* coincides with the exact bounding box for most glyphs, it can be */ +/* slightly larger in some situations (like when rotating an outline */ +/* which contains Bézier outside arcs). */ +/* */ +/* Computing the control box is very fast, while getting the bounding */ +/* box can take much more time as it needs to walk over all segments */ +/* and arcs in the outline. To get the latter, you can use the */ +/* `ftbbox' component which is dedicated to this single task. */ +/* */ +/* <Input> */ +/* glyph :: A handle to the source glyph object. */ +/* */ +/* mode :: The mode which indicates how to interpret the returned */ +/* bounding box values. */ +/* */ +/* <Output> */ +/* acbox :: The glyph coordinate bounding box. Coordinates are */ +/* expressed in 1/64th of pixels if it is grid-fitted. */ +/* */ +/* <Note> */ +/* Coordinates are relative to the glyph origin, using the y~upwards */ +/* convention. */ +/* */ +/* If the glyph has been loaded with @FT_LOAD_NO_SCALE, `bbox_mode' */ +/* must be set to @FT_GLYPH_BBOX_UNSCALED to get unscaled font */ +/* units in 26.6 pixel format. The value @FT_GLYPH_BBOX_SUBPIXELS */ +/* is another name for this constant. */ +/* */ +/* If the font is tricky and the glyph has been loaded with */ +/* @FT_LOAD_NO_SCALE, the resulting CBox is meaningless. To get */ +/* reasonable values for the CBox it is necessary to load the glyph */ +/* at a large ppem value (so that the hinting instructions can */ +/* properly shift and scale the subglyphs), then extracting the CBox */ +/* which can be eventually converted back to font units. */ +/* */ +/* Note that the maximum coordinates are exclusive, which means that */ +/* one can compute the width and height of the glyph image (be it in */ +/* integer or 26.6 pixels) as: */ +/* */ +/* { */ +/* width = bbox.xMax - bbox.xMin; */ +/* height = bbox.yMax - bbox.yMin; */ +/* } */ +/* */ +/* Note also that for 26.6 coordinates, if `bbox_mode' is set to */ +/* @FT_GLYPH_BBOX_GRIDFIT, the coordinates will also be grid-fitted, */ +/* which corresponds to: */ +/* */ +/* { */ +/* bbox.xMin = FLOOR(bbox.xMin); */ +/* bbox.yMin = FLOOR(bbox.yMin); */ +/* bbox.xMax = CEILING(bbox.xMax); */ +/* bbox.yMax = CEILING(bbox.yMax); */ +/* } */ +/* */ +/* To get the bbox in pixel coordinates, set `bbox_mode' to */ +/* @FT_GLYPH_BBOX_TRUNCATE. */ +/* */ +/* To get the bbox in grid-fitted pixel coordinates, set `bbox_mode' */ +/* to @FT_GLYPH_BBOX_PIXELS. */ +/* */ +FT_EXPORT( void ) +FT_Glyph_Get_CBox( FT_Glyph glyph, + FT_UInt bbox_mode, + FT_BBox *acbox ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Glyph_To_Bitmap */ +/* */ +/* <Description> */ +/* Convert a given glyph object to a bitmap glyph object. */ +/* */ +/* <InOut> */ +/* the_glyph :: A pointer to a handle to the target glyph. */ +/* */ +/* <Input> */ +/* render_mode :: An enumeration that describes how the data is */ +/* rendered. */ +/* */ +/* origin :: A pointer to a vector used to translate the glyph */ +/* image before rendering. Can be~0 (if no */ +/* translation). The origin is expressed in */ +/* 26.6 pixels. */ +/* */ +/* destroy :: A boolean that indicates that the original glyph */ +/* image should be destroyed by this function. It is */ +/* never destroyed in case of error. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +/* <Note> */ +/* This function does nothing if the glyph format isn't scalable. */ +/* */ +/* The glyph image is translated with the `origin' vector before */ +/* rendering. */ +/* */ +/* The first parameter is a pointer to an @FT_Glyph handle, that will */ +/* be _replaced_ by this function (with newly allocated data). */ +/* Typically, you would use (omitting error handling): */ +/* */ +/* */ +/* { */ +/* FT_Glyph glyph; */ +/* FT_BitmapGlyph glyph_bitmap; */ +/* */ +/* */ +/* // load glyph */ +/* error = FT_Load_Char( face, glyph_index, FT_LOAD_DEFAUT ); */ +/* */ +/* // extract glyph image */ +/* error = FT_Get_Glyph( face->glyph, &glyph ); */ +/* */ +/* // convert to a bitmap (default render mode + destroying old) */ +/* if ( glyph->format != FT_GLYPH_FORMAT_BITMAP ) */ +/* { */ +/* error = FT_Glyph_To_Bitmap( &glyph, FT_RENDER_MODE_NORMAL, */ +/* 0, 1 ); */ +/* if ( error ) // `glyph' unchanged */ +/* ... */ +/* } */ +/* */ +/* // access bitmap content by typecasting */ +/* glyph_bitmap = (FT_BitmapGlyph)glyph; */ +/* */ +/* // do funny stuff with it, like blitting/drawing */ +/* ... */ +/* */ +/* // discard glyph image (bitmap or not) */ +/* FT_Done_Glyph( glyph ); */ +/* } */ +/* */ +/* */ +/* Here another example, again without error handling: */ +/* */ +/* */ +/* { */ +/* FT_Glyph glyphs[MAX_GLYPHS] */ +/* */ +/* */ +/* ... */ +/* */ +/* for ( idx = 0; i < MAX_GLYPHS; i++ ) */ +/* error = FT_Load_Glyph( face, idx, FT_LOAD_DEFAULT ) || */ +/* FT_Get_Glyph ( face->glyph, &glyph[idx] ); */ +/* */ +/* ... */ +/* */ +/* for ( idx = 0; i < MAX_GLYPHS; i++ ) */ +/* { */ +/* FT_Glyph bitmap = glyphs[idx]; */ +/* */ +/* */ +/* ... */ +/* */ +/* // after this call, `bitmap' no longer points into */ +/* // the `glyphs' array (and the old value isn't destroyed) */ +/* FT_Glyph_To_Bitmap( &bitmap, FT_RENDER_MODE_MONO, 0, 0 ); */ +/* */ +/* ... */ +/* */ +/* FT_Done_Glyph( bitmap ); */ +/* } */ +/* */ +/* ... */ +/* */ +/* for ( idx = 0; i < MAX_GLYPHS; i++ ) */ +/* FT_Done_Glyph( glyphs[idx] ); */ +/* } */ +/* */ +FT_EXPORT( FT_Error ) +FT_Glyph_To_Bitmap( FT_Glyph* the_glyph, + FT_Render_Mode render_mode, + FT_Vector* origin, + FT_Bool destroy ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Done_Glyph */ +/* */ +/* <Description> */ +/* Destroy a given glyph. */ +/* */ +/* <Input> */ +/* glyph :: A handle to the target glyph object. */ +/* */ +FT_EXPORT( void ) +FT_Done_Glyph( FT_Glyph glyph ); + +/* */ + + +/* other helpful functions */ + +/*************************************************************************/ +/* */ +/* <Section> */ +/* computations */ +/* */ +/*************************************************************************/ + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Matrix_Multiply */ +/* */ +/* <Description> */ +/* Perform the matrix operation `b = a*b'. */ +/* */ +/* <Input> */ +/* a :: A pointer to matrix `a'. */ +/* */ +/* <InOut> */ +/* b :: A pointer to matrix `b'. */ +/* */ +/* <Note> */ +/* The result is undefined if either `a' or `b' is zero. */ +/* */ +FT_EXPORT( void ) +FT_Matrix_Multiply( const FT_Matrix* a, + FT_Matrix* b ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Matrix_Invert */ +/* */ +/* <Description> */ +/* Invert a 2x2 matrix. Return an error if it can't be inverted. */ +/* */ +/* <InOut> */ +/* matrix :: A pointer to the target matrix. Remains untouched in */ +/* case of error. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +FT_EXPORT( FT_Error ) +FT_Matrix_Invert( FT_Matrix* matrix ); + + +/* */ FT_END_HEADER diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/ftgxval.h b/thirdparties/common/include/libfreetype/freetype2/freetype/ftgxval.h index 497015c..a56ca6d 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/ftgxval.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/ftgxval.h @@ -41,33 +41,33 @@ FT_BEGIN_HEADER - /*************************************************************************/ - /* */ - /* <Section> */ - /* gx_validation */ - /* */ - /* <Title> */ - /* TrueTypeGX/AAT Validation */ - /* */ - /* <Abstract> */ - /* An API to validate TrueTypeGX/AAT tables. */ - /* */ - /* <Description> */ - /* This section contains the declaration of functions to validate */ - /* some TrueTypeGX tables (feat, mort, morx, bsln, just, kern, opbd, */ - /* trak, prop, lcar). */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* */ - /* Warning: Use FT_VALIDATE_XXX to validate a table. */ - /* Following definitions are for gxvalid developers. */ - /* */ - /* */ - /*************************************************************************/ +/*************************************************************************/ +/* */ +/* <Section> */ +/* gx_validation */ +/* */ +/* <Title> */ +/* TrueTypeGX/AAT Validation */ +/* */ +/* <Abstract> */ +/* An API to validate TrueTypeGX/AAT tables. */ +/* */ +/* <Description> */ +/* This section contains the declaration of functions to validate */ +/* some TrueTypeGX tables (feat, mort, morx, bsln, just, kern, opbd, */ +/* trak, prop, lcar). */ +/* */ +/*************************************************************************/ + + +/*************************************************************************/ +/* */ +/* */ +/* Warning: Use FT_VALIDATE_XXX to validate a table. */ +/* Following definitions are for gxvalid developers. */ +/* */ +/* */ +/*************************************************************************/ #define FT_VALIDATE_feat_INDEX 0 #define FT_VALIDATE_mort_INDEX 1 @@ -82,71 +82,71 @@ FT_BEGIN_HEADER #define FT_VALIDATE_GX_LAST_INDEX FT_VALIDATE_lcar_INDEX - /************************************************************************* - * - * @macro: - * FT_VALIDATE_GX_LENGTH - * - * @description: - * The number of tables checked in this module. Use it as a parameter - * for the `table-length' argument of function @FT_TrueTypeGX_Validate. - */ +/************************************************************************* + * + * @macro: + * FT_VALIDATE_GX_LENGTH + * + * @description: + * The number of tables checked in this module. Use it as a parameter + * for the `table-length' argument of function @FT_TrueTypeGX_Validate. + */ #define FT_VALIDATE_GX_LENGTH (FT_VALIDATE_GX_LAST_INDEX + 1) - /* */ +/* */ - /* Up to 0x1000 is used by otvalid. - Ox2xxx is reserved for feature OT extension. */ +/* Up to 0x1000 is used by otvalid. + Ox2xxx is reserved for feature OT extension. */ #define FT_VALIDATE_GX_START 0x4000 #define FT_VALIDATE_GX_BITFIELD( tag ) \ ( FT_VALIDATE_GX_START << FT_VALIDATE_##tag##_INDEX ) - /********************************************************************** - * - * @enum: - * FT_VALIDATE_GXXXX - * - * @description: - * A list of bit-field constants used with @FT_TrueTypeGX_Validate to - * indicate which TrueTypeGX/AAT Type tables should be validated. - * - * @values: - * FT_VALIDATE_feat :: - * Validate `feat' table. - * - * FT_VALIDATE_mort :: - * Validate `mort' table. - * - * FT_VALIDATE_morx :: - * Validate `morx' table. - * - * FT_VALIDATE_bsln :: - * Validate `bsln' table. - * - * FT_VALIDATE_just :: - * Validate `just' table. - * - * FT_VALIDATE_kern :: - * Validate `kern' table. - * - * FT_VALIDATE_opbd :: - * Validate `opbd' table. - * - * FT_VALIDATE_trak :: - * Validate `trak' table. - * - * FT_VALIDATE_prop :: - * Validate `prop' table. - * - * FT_VALIDATE_lcar :: - * Validate `lcar' table. - * - * FT_VALIDATE_GX :: - * Validate all TrueTypeGX tables (feat, mort, morx, bsln, just, kern, - * opbd, trak, prop and lcar). - * - */ +/********************************************************************** + * + * @enum: + * FT_VALIDATE_GXXXX + * + * @description: + * A list of bit-field constants used with @FT_TrueTypeGX_Validate to + * indicate which TrueTypeGX/AAT Type tables should be validated. + * + * @values: + * FT_VALIDATE_feat :: + * Validate `feat' table. + * + * FT_VALIDATE_mort :: + * Validate `mort' table. + * + * FT_VALIDATE_morx :: + * Validate `morx' table. + * + * FT_VALIDATE_bsln :: + * Validate `bsln' table. + * + * FT_VALIDATE_just :: + * Validate `just' table. + * + * FT_VALIDATE_kern :: + * Validate `kern' table. + * + * FT_VALIDATE_opbd :: + * Validate `opbd' table. + * + * FT_VALIDATE_trak :: + * Validate `trak' table. + * + * FT_VALIDATE_prop :: + * Validate `prop' table. + * + * FT_VALIDATE_lcar :: + * Validate `lcar' table. + * + * FT_VALIDATE_GX :: + * Validate all TrueTypeGX tables (feat, mort, morx, bsln, just, kern, + * opbd, trak, prop and lcar). + * + */ #define FT_VALIDATE_feat FT_VALIDATE_GX_BITFIELD( feat ) #define FT_VALIDATE_mort FT_VALIDATE_GX_BITFIELD( mort ) @@ -171,183 +171,183 @@ FT_BEGIN_HEADER FT_VALIDATE_lcar ) - /* */ - - /********************************************************************** - * - * @function: - * FT_TrueTypeGX_Validate - * - * @description: - * Validate various TrueTypeGX 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_GXXXX for possible values. - * - * table_length :: - * The size of the `tables' array. Normally, @FT_VALIDATE_GX_LENGTH - * should be passed. - * - * @output: - * tables :: - * The array where all validated sfnt tables are stored. - * The array itself must be allocated by a client. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * This function only works with TrueTypeGX fonts, returning an error - * otherwise. - * - * After use, the application should deallocate the buffers pointed to by - * each `tables' element, by calling @FT_TrueTypeGX_Free. A NULL value - * indicates that the table either doesn't exist in the font, the - * application hasn't asked for validation, or the validator doesn't have - * the ability to validate the sfnt table. - */ - FT_EXPORT( FT_Error ) - FT_TrueTypeGX_Validate( FT_Face face, - FT_UInt validation_flags, - FT_Bytes tables[FT_VALIDATE_GX_LENGTH], - FT_UInt table_length ); - - - /* */ - - /********************************************************************** - * - * @function: - * FT_TrueTypeGX_Free - * - * @description: - * Free the buffer allocated by TrueTypeGX validator. - * - * @input: - * face :: - * A handle to the input face. - * - * table :: - * The pointer to the buffer allocated by - * @FT_TrueTypeGX_Validate. - * - * @note: - * This function must be used to free the buffer allocated by - * @FT_TrueTypeGX_Validate only. - */ - FT_EXPORT( void ) - FT_TrueTypeGX_Free( FT_Face face, - FT_Bytes table ); - - - /* */ - - /********************************************************************** - * - * @enum: - * FT_VALIDATE_CKERNXXX - * - * @description: - * A list of bit-field constants used with @FT_ClassicKern_Validate - * to indicate the classic kern dialect or dialects. If the selected - * type doesn't fit, @FT_ClassicKern_Validate regards the table as - * invalid. - * - * @values: - * FT_VALIDATE_MS :: - * Handle the `kern' table as a classic Microsoft kern table. - * - * FT_VALIDATE_APPLE :: - * Handle the `kern' table as a classic Apple kern table. - * - * FT_VALIDATE_CKERN :: - * Handle the `kern' as either classic Apple or Microsoft kern table. - */ +/* */ + +/********************************************************************** + * + * @function: + * FT_TrueTypeGX_Validate + * + * @description: + * Validate various TrueTypeGX 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_GXXXX for possible values. + * + * table_length :: + * The size of the `tables' array. Normally, @FT_VALIDATE_GX_LENGTH + * should be passed. + * + * @output: + * tables :: + * The array where all validated sfnt tables are stored. + * The array itself must be allocated by a client. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with TrueTypeGX fonts, returning an error + * otherwise. + * + * After use, the application should deallocate the buffers pointed to by + * each `tables' element, by calling @FT_TrueTypeGX_Free. A NULL value + * indicates that the table either doesn't exist in the font, the + * application hasn't asked for validation, or the validator doesn't have + * the ability to validate the sfnt table. + */ +FT_EXPORT( FT_Error ) +FT_TrueTypeGX_Validate( FT_Face face, + FT_UInt validation_flags, + FT_Bytes tables[FT_VALIDATE_GX_LENGTH], + FT_UInt table_length ); + + +/* */ + +/********************************************************************** + * + * @function: + * FT_TrueTypeGX_Free + * + * @description: + * Free the buffer allocated by TrueTypeGX validator. + * + * @input: + * face :: + * A handle to the input face. + * + * table :: + * The pointer to the buffer allocated by + * @FT_TrueTypeGX_Validate. + * + * @note: + * This function must be used to free the buffer allocated by + * @FT_TrueTypeGX_Validate only. + */ +FT_EXPORT( void ) +FT_TrueTypeGX_Free( FT_Face face, + FT_Bytes table ); + + +/* */ + +/********************************************************************** + * + * @enum: + * FT_VALIDATE_CKERNXXX + * + * @description: + * A list of bit-field constants used with @FT_ClassicKern_Validate + * to indicate the classic kern dialect or dialects. If the selected + * type doesn't fit, @FT_ClassicKern_Validate regards the table as + * invalid. + * + * @values: + * FT_VALIDATE_MS :: + * Handle the `kern' table as a classic Microsoft kern table. + * + * FT_VALIDATE_APPLE :: + * Handle the `kern' table as a classic Apple kern table. + * + * FT_VALIDATE_CKERN :: + * Handle the `kern' as either classic Apple or Microsoft kern table. + */ #define FT_VALIDATE_MS ( FT_VALIDATE_GX_START << 0 ) #define FT_VALIDATE_APPLE ( FT_VALIDATE_GX_START << 1 ) #define FT_VALIDATE_CKERN ( FT_VALIDATE_MS | FT_VALIDATE_APPLE ) - /* */ - - /********************************************************************** - * - * @function: - * FT_ClassicKern_Validate - * - * @description: - * Validate classic (16-bit format) kern table to assure that the 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). - * - * The `kern' table validator in @FT_TrueTypeGX_Validate deals with both - * the new 32-bit format and the classic 16-bit format, while - * FT_ClassicKern_Validate only supports the classic 16-bit format. - * - * @input: - * face :: - * A handle to the input face. - * - * validation_flags :: - * A bit field which specifies the dialect to be validated. See - * @FT_VALIDATE_CKERNXXX for possible values. - * - * @output: - * ckern_table :: - * A pointer to the kern table. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * After use, the application should deallocate the buffers pointed to by - * `ckern_table', by calling @FT_ClassicKern_Free. A NULL value - * indicates that the table doesn't exist in the font. - */ - FT_EXPORT( FT_Error ) - FT_ClassicKern_Validate( FT_Face face, - FT_UInt validation_flags, - FT_Bytes *ckern_table ); - - - /* */ - - /********************************************************************** - * - * @function: - * FT_ClassicKern_Free - * - * @description: - * Free the buffer allocated by classic Kern validator. - * - * @input: - * face :: - * A handle to the input face. - * - * table :: - * The pointer to the buffer that is allocated by - * @FT_ClassicKern_Validate. - * - * @note: - * This function must be used to free the buffer allocated by - * @FT_ClassicKern_Validate only. - */ - FT_EXPORT( void ) - FT_ClassicKern_Free( FT_Face face, - FT_Bytes table ); - - - /* */ +/* */ + +/********************************************************************** + * + * @function: + * FT_ClassicKern_Validate + * + * @description: + * Validate classic (16-bit format) kern table to assure that the 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). + * + * The `kern' table validator in @FT_TrueTypeGX_Validate deals with both + * the new 32-bit format and the classic 16-bit format, while + * FT_ClassicKern_Validate only supports the classic 16-bit format. + * + * @input: + * face :: + * A handle to the input face. + * + * validation_flags :: + * A bit field which specifies the dialect to be validated. See + * @FT_VALIDATE_CKERNXXX for possible values. + * + * @output: + * ckern_table :: + * A pointer to the kern table. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * After use, the application should deallocate the buffers pointed to by + * `ckern_table', by calling @FT_ClassicKern_Free. A NULL value + * indicates that the table doesn't exist in the font. + */ +FT_EXPORT( FT_Error ) +FT_ClassicKern_Validate( FT_Face face, + FT_UInt validation_flags, + FT_Bytes *ckern_table ); + + +/* */ + +/********************************************************************** + * + * @function: + * FT_ClassicKern_Free + * + * @description: + * Free the buffer allocated by classic Kern validator. + * + * @input: + * face :: + * A handle to the input face. + * + * table :: + * The pointer to the buffer that is allocated by + * @FT_ClassicKern_Validate. + * + * @note: + * This function must be used to free the buffer allocated by + * @FT_ClassicKern_Validate only. + */ +FT_EXPORT( void ) +FT_ClassicKern_Free( FT_Face face, + FT_Bytes table ); + + +/* */ FT_END_HEADER diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/ftgzip.h b/thirdparties/common/include/libfreetype/freetype2/freetype/ftgzip.h index acbc4f0..09838d0 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/ftgzip.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/ftgzip.h @@ -31,67 +31,67 @@ FT_BEGIN_HEADER - /*************************************************************************/ - /* */ - /* <Section> */ - /* gzip */ - /* */ - /* <Title> */ - /* GZIP Streams */ - /* */ - /* <Abstract> */ - /* Using gzip-compressed font files. */ - /* */ - /* <Description> */ - /* This section contains the declaration of Gzip-specific functions. */ - /* */ - /*************************************************************************/ +/*************************************************************************/ +/* */ +/* <Section> */ +/* gzip */ +/* */ +/* <Title> */ +/* GZIP Streams */ +/* */ +/* <Abstract> */ +/* Using gzip-compressed font files. */ +/* */ +/* <Description> */ +/* This section contains the declaration of Gzip-specific functions. */ +/* */ +/*************************************************************************/ - /************************************************************************ - * - * @function: - * FT_Stream_OpenGzip - * - * @description: - * Open a new stream to parse gzip-compressed font files. This is - * mainly used to support the compressed `*.pcf.gz' fonts that come - * with XFree86. - * - * @input: - * stream :: - * The target embedding stream. - * - * source :: - * The source stream. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * The source stream must be opened _before_ calling this function. - * - * Calling the internal function `FT_Stream_Close' on the new stream will - * *not* call `FT_Stream_Close' on the source stream. None of the stream - * objects will be released to the heap. - * - * The stream implementation is very basic and resets the decompression - * process each time seeking backwards is needed within the stream. - * - * In certain builds of the library, gzip compression recognition is - * automatically handled when calling @FT_New_Face or @FT_Open_Face. - * This means that if no font driver is capable of handling the raw - * compressed file, the library will try to open a gzipped stream from - * it and re-open the face with it. - * - * This function may return `FT_Err_Unimplemented_Feature' if your build - * of FreeType was not compiled with zlib support. - */ - FT_EXPORT( FT_Error ) - FT_Stream_OpenGzip( FT_Stream stream, - FT_Stream source ); +/************************************************************************ + * + * @function: + * FT_Stream_OpenGzip + * + * @description: + * Open a new stream to parse gzip-compressed font files. This is + * mainly used to support the compressed `*.pcf.gz' fonts that come + * with XFree86. + * + * @input: + * stream :: + * The target embedding stream. + * + * source :: + * The source stream. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The source stream must be opened _before_ calling this function. + * + * Calling the internal function `FT_Stream_Close' on the new stream will + * *not* call `FT_Stream_Close' on the source stream. None of the stream + * objects will be released to the heap. + * + * The stream implementation is very basic and resets the decompression + * process each time seeking backwards is needed within the stream. + * + * In certain builds of the library, gzip compression recognition is + * automatically handled when calling @FT_New_Face or @FT_Open_Face. + * This means that if no font driver is capable of handling the raw + * compressed file, the library will try to open a gzipped stream from + * it and re-open the face with it. + * + * This function may return `FT_Err_Unimplemented_Feature' if your build + * of FreeType was not compiled with zlib support. + */ +FT_EXPORT( FT_Error ) +FT_Stream_OpenGzip( FT_Stream stream, + FT_Stream source ); - /* */ +/* */ FT_END_HEADER diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/ftimage.h b/thirdparties/common/include/libfreetype/freetype2/freetype/ftimage.h index 7834303..1766702 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/ftimage.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/ftimage.h @@ -17,19 +17,19 @@ /* */ /***************************************************************************/ - /*************************************************************************/ - /* */ - /* Note: A `raster' is simply a scan-line converter, used to render */ - /* FT_Outlines into FT_Bitmaps. */ - /* */ - /*************************************************************************/ +/*************************************************************************/ +/* */ +/* Note: A `raster' is simply a scan-line converter, used to render */ +/* FT_Outlines into FT_Bitmaps. */ +/* */ +/*************************************************************************/ #ifndef __FTIMAGE_H__ #define __FTIMAGE_H__ - /* _STANDALONE_ is from ftgrays.c */ +/* _STANDALONE_ is from ftgrays.c */ #ifndef _STANDALONE_ #include <ft2build.h> #endif @@ -38,139 +38,136 @@ FT_BEGIN_HEADER - /*************************************************************************/ - /* */ - /* <Section> */ - /* basic_types */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Pos */ - /* */ - /* <Description> */ - /* The type FT_Pos is used to store vectorial coordinates. Depending */ - /* on the context, these can represent distances in integer font */ - /* units, or 16.16, or 26.6 fixed-point pixel coordinates. */ - /* */ - typedef signed long FT_Pos; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Vector */ - /* */ - /* <Description> */ - /* A simple structure used to store a 2D vector; coordinates are of */ - /* the FT_Pos type. */ - /* */ - /* <Fields> */ - /* x :: The horizontal coordinate. */ - /* y :: The vertical coordinate. */ - /* */ - typedef struct FT_Vector_ - { +/*************************************************************************/ +/* */ +/* <Section> */ +/* basic_types */ +/* */ +/*************************************************************************/ + + +/*************************************************************************/ +/* */ +/* <Type> */ +/* FT_Pos */ +/* */ +/* <Description> */ +/* The type FT_Pos is used to store vectorial coordinates. Depending */ +/* on the context, these can represent distances in integer font */ +/* units, or 16.16, or 26.6 fixed-point pixel coordinates. */ +/* */ +typedef signed long FT_Pos; + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* FT_Vector */ +/* */ +/* <Description> */ +/* A simple structure used to store a 2D vector; coordinates are of */ +/* the FT_Pos type. */ +/* */ +/* <Fields> */ +/* x :: The horizontal coordinate. */ +/* y :: The vertical coordinate. */ +/* */ +typedef struct FT_Vector_ { FT_Pos x; FT_Pos y; - } FT_Vector; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_BBox */ - /* */ - /* <Description> */ - /* A structure used to hold an outline's bounding box, i.e., the */ - /* coordinates of its extrema in the horizontal and vertical */ - /* directions. */ - /* */ - /* <Fields> */ - /* xMin :: The horizontal minimum (left-most). */ - /* */ - /* yMin :: The vertical minimum (bottom-most). */ - /* */ - /* xMax :: The horizontal maximum (right-most). */ - /* */ - /* yMax :: The vertical maximum (top-most). */ - /* */ - /* <Note> */ - /* The bounding box is specified with the coordinates of the lower */ - /* left and the upper right corner. In PostScript, those values are */ - /* often called (llx,lly) and (urx,ury), respectively. */ - /* */ - /* If `yMin' is negative, this value gives the glyph's descender. */ - /* Otherwise, the glyph doesn't descend below the baseline. */ - /* Similarly, if `ymax' is positive, this value gives the glyph's */ - /* ascender. */ - /* */ - /* `xMin' gives the horizontal distance from the glyph's origin to */ - /* the left edge of the glyph's bounding box. If `xMin' is negative, */ - /* the glyph extends to the left of the origin. */ - /* */ - typedef struct FT_BBox_ - { +} FT_Vector; + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* FT_BBox */ +/* */ +/* <Description> */ +/* A structure used to hold an outline's bounding box, i.e., the */ +/* coordinates of its extrema in the horizontal and vertical */ +/* directions. */ +/* */ +/* <Fields> */ +/* xMin :: The horizontal minimum (left-most). */ +/* */ +/* yMin :: The vertical minimum (bottom-most). */ +/* */ +/* xMax :: The horizontal maximum (right-most). */ +/* */ +/* yMax :: The vertical maximum (top-most). */ +/* */ +/* <Note> */ +/* The bounding box is specified with the coordinates of the lower */ +/* left and the upper right corner. In PostScript, those values are */ +/* often called (llx,lly) and (urx,ury), respectively. */ +/* */ +/* If `yMin' is negative, this value gives the glyph's descender. */ +/* Otherwise, the glyph doesn't descend below the baseline. */ +/* Similarly, if `ymax' is positive, this value gives the glyph's */ +/* ascender. */ +/* */ +/* `xMin' gives the horizontal distance from the glyph's origin to */ +/* the left edge of the glyph's bounding box. If `xMin' is negative, */ +/* the glyph extends to the left of the origin. */ +/* */ +typedef struct FT_BBox_ { FT_Pos xMin, yMin; FT_Pos xMax, yMax; - } FT_BBox; - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_Pixel_Mode */ - /* */ - /* <Description> */ - /* An enumeration type used to describe the format of pixels in a */ - /* given bitmap. Note that additional formats may be added in the */ - /* future. */ - /* */ - /* <Values> */ - /* FT_PIXEL_MODE_NONE :: */ - /* Value~0 is reserved. */ - /* */ - /* FT_PIXEL_MODE_MONO :: */ - /* A monochrome bitmap, using 1~bit per pixel. Note that pixels */ - /* are stored in most-significant order (MSB), which means that */ - /* the left-most pixel in a byte has value 128. */ - /* */ - /* FT_PIXEL_MODE_GRAY :: */ - /* An 8-bit bitmap, generally used to represent anti-aliased glyph */ - /* images. Each pixel is stored in one byte. Note that the number */ - /* of `gray' levels is stored in the `num_grays' field of the */ - /* @FT_Bitmap structure (it generally is 256). */ - /* */ - /* FT_PIXEL_MODE_GRAY2 :: */ - /* A 2-bit per pixel bitmap, used to represent embedded */ - /* anti-aliased bitmaps in font files according to the OpenType */ - /* specification. We haven't found a single font using this */ - /* format, however. */ - /* */ - /* FT_PIXEL_MODE_GRAY4 :: */ - /* A 4-bit per pixel bitmap, representing embedded anti-aliased */ - /* bitmaps in font files according to the OpenType specification. */ - /* We haven't found a single font using this format, however. */ - /* */ - /* FT_PIXEL_MODE_LCD :: */ - /* An 8-bit bitmap, representing RGB or BGR decimated glyph images */ - /* used for display on LCD displays; the bitmap is three times */ - /* wider than the original glyph image. See also */ - /* @FT_RENDER_MODE_LCD. */ - /* */ - /* FT_PIXEL_MODE_LCD_V :: */ - /* An 8-bit bitmap, representing RGB or BGR decimated glyph images */ - /* used for display on rotated LCD displays; the bitmap is three */ - /* times taller than the original glyph image. See also */ - /* @FT_RENDER_MODE_LCD_V. */ - /* */ - typedef enum FT_Pixel_Mode_ - { +} FT_BBox; + + +/*************************************************************************/ +/* */ +/* <Enum> */ +/* FT_Pixel_Mode */ +/* */ +/* <Description> */ +/* An enumeration type used to describe the format of pixels in a */ +/* given bitmap. Note that additional formats may be added in the */ +/* future. */ +/* */ +/* <Values> */ +/* FT_PIXEL_MODE_NONE :: */ +/* Value~0 is reserved. */ +/* */ +/* FT_PIXEL_MODE_MONO :: */ +/* A monochrome bitmap, using 1~bit per pixel. Note that pixels */ +/* are stored in most-significant order (MSB), which means that */ +/* the left-most pixel in a byte has value 128. */ +/* */ +/* FT_PIXEL_MODE_GRAY :: */ +/* An 8-bit bitmap, generally used to represent anti-aliased glyph */ +/* images. Each pixel is stored in one byte. Note that the number */ +/* of `gray' levels is stored in the `num_grays' field of the */ +/* @FT_Bitmap structure (it generally is 256). */ +/* */ +/* FT_PIXEL_MODE_GRAY2 :: */ +/* A 2-bit per pixel bitmap, used to represent embedded */ +/* anti-aliased bitmaps in font files according to the OpenType */ +/* specification. We haven't found a single font using this */ +/* format, however. */ +/* */ +/* FT_PIXEL_MODE_GRAY4 :: */ +/* A 4-bit per pixel bitmap, representing embedded anti-aliased */ +/* bitmaps in font files according to the OpenType specification. */ +/* We haven't found a single font using this format, however. */ +/* */ +/* FT_PIXEL_MODE_LCD :: */ +/* An 8-bit bitmap, representing RGB or BGR decimated glyph images */ +/* used for display on LCD displays; the bitmap is three times */ +/* wider than the original glyph image. See also */ +/* @FT_RENDER_MODE_LCD. */ +/* */ +/* FT_PIXEL_MODE_LCD_V :: */ +/* An 8-bit bitmap, representing RGB or BGR decimated glyph images */ +/* used for display on rotated LCD displays; the bitmap is three */ +/* times taller than the original glyph image. See also */ +/* @FT_RENDER_MODE_LCD_V. */ +/* */ +typedef enum FT_Pixel_Mode_ { FT_PIXEL_MODE_NONE = 0, FT_PIXEL_MODE_MONO, FT_PIXEL_MODE_GRAY, @@ -181,134 +178,132 @@ FT_BEGIN_HEADER FT_PIXEL_MODE_MAX /* do not remove */ - } FT_Pixel_Mode; - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* ft_pixel_mode_xxx */ - /* */ - /* <Description> */ - /* A list of deprecated constants. Use the corresponding */ - /* @FT_Pixel_Mode values instead. */ - /* */ - /* <Values> */ - /* ft_pixel_mode_none :: See @FT_PIXEL_MODE_NONE. */ - /* ft_pixel_mode_mono :: See @FT_PIXEL_MODE_MONO. */ - /* ft_pixel_mode_grays :: See @FT_PIXEL_MODE_GRAY. */ - /* ft_pixel_mode_pal2 :: See @FT_PIXEL_MODE_GRAY2. */ - /* ft_pixel_mode_pal4 :: See @FT_PIXEL_MODE_GRAY4. */ - /* */ +} FT_Pixel_Mode; + + +/*************************************************************************/ +/* */ +/* <Enum> */ +/* ft_pixel_mode_xxx */ +/* */ +/* <Description> */ +/* A list of deprecated constants. Use the corresponding */ +/* @FT_Pixel_Mode values instead. */ +/* */ +/* <Values> */ +/* ft_pixel_mode_none :: See @FT_PIXEL_MODE_NONE. */ +/* ft_pixel_mode_mono :: See @FT_PIXEL_MODE_MONO. */ +/* ft_pixel_mode_grays :: See @FT_PIXEL_MODE_GRAY. */ +/* ft_pixel_mode_pal2 :: See @FT_PIXEL_MODE_GRAY2. */ +/* ft_pixel_mode_pal4 :: See @FT_PIXEL_MODE_GRAY4. */ +/* */ #define ft_pixel_mode_none FT_PIXEL_MODE_NONE #define ft_pixel_mode_mono FT_PIXEL_MODE_MONO #define ft_pixel_mode_grays FT_PIXEL_MODE_GRAY #define ft_pixel_mode_pal2 FT_PIXEL_MODE_GRAY2 #define ft_pixel_mode_pal4 FT_PIXEL_MODE_GRAY4 - /* */ +/* */ #if 0 - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_Palette_Mode */ - /* */ - /* <Description> */ - /* THIS TYPE IS DEPRECATED. DO NOT USE IT! */ - /* */ - /* An enumeration type to describe the format of a bitmap palette, */ - /* used with ft_pixel_mode_pal4 and ft_pixel_mode_pal8. */ - /* */ - /* <Values> */ - /* ft_palette_mode_rgb :: The palette is an array of 3-byte RGB */ - /* records. */ - /* */ - /* ft_palette_mode_rgba :: The palette is an array of 4-byte RGBA */ - /* records. */ - /* */ - /* <Note> */ - /* As ft_pixel_mode_pal2, pal4 and pal8 are currently unused by */ - /* FreeType, these types are not handled by the library itself. */ - /* */ - typedef enum FT_Palette_Mode_ - { +/*************************************************************************/ +/* */ +/* <Enum> */ +/* FT_Palette_Mode */ +/* */ +/* <Description> */ +/* THIS TYPE IS DEPRECATED. DO NOT USE IT! */ +/* */ +/* An enumeration type to describe the format of a bitmap palette, */ +/* used with ft_pixel_mode_pal4 and ft_pixel_mode_pal8. */ +/* */ +/* <Values> */ +/* ft_palette_mode_rgb :: The palette is an array of 3-byte RGB */ +/* records. */ +/* */ +/* ft_palette_mode_rgba :: The palette is an array of 4-byte RGBA */ +/* records. */ +/* */ +/* <Note> */ +/* As ft_pixel_mode_pal2, pal4 and pal8 are currently unused by */ +/* FreeType, these types are not handled by the library itself. */ +/* */ +typedef enum FT_Palette_Mode_ { ft_palette_mode_rgb = 0, ft_palette_mode_rgba, ft_palette_mode_max /* do not remove */ - } FT_Palette_Mode; +} FT_Palette_Mode; - /* */ +/* */ #endif - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Bitmap */ - /* */ - /* <Description> */ - /* A structure used to describe a bitmap or pixmap to the raster. */ - /* Note that we now manage pixmaps of various depths through the */ - /* `pixel_mode' field. */ - /* */ - /* <Fields> */ - /* rows :: The number of bitmap rows. */ - /* */ - /* width :: The number of pixels in bitmap row. */ - /* */ - /* pitch :: The pitch's absolute value is the number of bytes */ - /* taken by one bitmap row, including padding. */ - /* However, the pitch is positive when the bitmap has */ - /* a `down' flow, and negative when it has an `up' */ - /* flow. In all cases, the pitch is an offset to add */ - /* to a bitmap pointer in order to go down one row. */ - /* */ - /* Note that `padding' means the alignment of a */ - /* bitmap to a byte border, and FreeType functions */ - /* normally align to the smallest possible integer */ - /* value. */ - /* */ - /* For the B/W rasterizer, `pitch' is always an even */ - /* number. */ - /* */ - /* To change the pitch of a bitmap (say, to make it a */ - /* multiple of 4), use @FT_Bitmap_Convert. */ - /* Alternatively, you might use callback functions to */ - /* directly render to the application's surface; see */ - /* the file `example2.cpp' in the tutorial for a */ - /* demonstration. */ - /* */ - /* buffer :: A typeless pointer to the bitmap buffer. This */ - /* value should be aligned on 32-bit boundaries in */ - /* most cases. */ - /* */ - /* num_grays :: This field is only used with */ - /* @FT_PIXEL_MODE_GRAY; it gives the number of gray */ - /* levels used in the bitmap. */ - /* */ - /* pixel_mode :: The pixel mode, i.e., how pixel bits are stored. */ - /* See @FT_Pixel_Mode for possible values. */ - /* */ - /* 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; this */ - /* field is intended for paletted pixel modes. Not */ - /* used currently. */ - /* */ - /* <Note> */ - /* 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. */ - /* */ - typedef struct FT_Bitmap_ - { +/*************************************************************************/ +/* */ +/* <Struct> */ +/* FT_Bitmap */ +/* */ +/* <Description> */ +/* A structure used to describe a bitmap or pixmap to the raster. */ +/* Note that we now manage pixmaps of various depths through the */ +/* `pixel_mode' field. */ +/* */ +/* <Fields> */ +/* rows :: The number of bitmap rows. */ +/* */ +/* width :: The number of pixels in bitmap row. */ +/* */ +/* pitch :: The pitch's absolute value is the number of bytes */ +/* taken by one bitmap row, including padding. */ +/* However, the pitch is positive when the bitmap has */ +/* a `down' flow, and negative when it has an `up' */ +/* flow. In all cases, the pitch is an offset to add */ +/* to a bitmap pointer in order to go down one row. */ +/* */ +/* Note that `padding' means the alignment of a */ +/* bitmap to a byte border, and FreeType functions */ +/* normally align to the smallest possible integer */ +/* value. */ +/* */ +/* For the B/W rasterizer, `pitch' is always an even */ +/* number. */ +/* */ +/* To change the pitch of a bitmap (say, to make it a */ +/* multiple of 4), use @FT_Bitmap_Convert. */ +/* Alternatively, you might use callback functions to */ +/* directly render to the application's surface; see */ +/* the file `example2.cpp' in the tutorial for a */ +/* demonstration. */ +/* */ +/* buffer :: A typeless pointer to the bitmap buffer. This */ +/* value should be aligned on 32-bit boundaries in */ +/* most cases. */ +/* */ +/* num_grays :: This field is only used with */ +/* @FT_PIXEL_MODE_GRAY; it gives the number of gray */ +/* levels used in the bitmap. */ +/* */ +/* pixel_mode :: The pixel mode, i.e., how pixel bits are stored. */ +/* See @FT_Pixel_Mode for possible values. */ +/* */ +/* 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; this */ +/* field is intended for paletted pixel modes. Not */ +/* used currently. */ +/* */ +/* <Note> */ +/* 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. */ +/* */ +typedef struct FT_Bitmap_ { int rows; int width; int pitch; @@ -318,70 +313,69 @@ FT_BEGIN_HEADER char palette_mode; void* palette; - } FT_Bitmap; - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* outline_processing */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Outline */ - /* */ - /* <Description> */ - /* This structure is used to describe an outline to the scan-line */ - /* converter. */ - /* */ - /* <Fields> */ - /* n_contours :: The number of contours in the outline. */ - /* */ - /* n_points :: The number of points in the outline. */ - /* */ - /* points :: A pointer to an array of `n_points' @FT_Vector */ - /* elements, giving the outline's point coordinates. */ - /* */ - /* tags :: A pointer to an array of `n_points' chars, giving */ - /* each outline point's type. */ - /* */ - /* If bit~0 is unset, the point is `off' the curve, */ - /* i.e., a Bézier control point, while it is `on' if */ - /* set. */ - /* */ - /* Bit~1 is meaningful for `off' points only. If set, */ - /* it indicates a third-order Bézier arc control point; */ - /* and a second-order control point if unset. */ - /* */ - /* If bit~2 is set, bits 5-7 contain the drop-out mode */ - /* (as defined in the OpenType specification; the value */ - /* is the same as the argument to the SCANMODE */ - /* instruction). */ - /* */ - /* Bits 3 and~4 are reserved for internal purposes. */ - /* */ - /* contours :: An array of `n_contours' shorts, giving the end */ - /* point of each contour within the outline. For */ - /* example, the first contour is defined by the points */ - /* `0' to `contours[0]', the second one is defined by */ - /* the points `contours[0]+1' to `contours[1]', etc. */ - /* */ - /* flags :: A set of bit flags used to characterize the outline */ - /* and give hints to the scan-converter and hinter on */ - /* how to convert/grid-fit it. See @FT_OUTLINE_FLAGS. */ - /* */ - /* <Note> */ - /* The B/W rasterizer only checks bit~2 in the `tags' array for the */ - /* first point of each contour. The drop-out mode as given with */ - /* @FT_OUTLINE_IGNORE_DROPOUTS, @FT_OUTLINE_SMART_DROPOUTS, and */ - /* @FT_OUTLINE_INCLUDE_STUBS in `flags' is then overridden. */ - /* */ - typedef struct FT_Outline_ - { +} FT_Bitmap; + + +/*************************************************************************/ +/* */ +/* <Section> */ +/* outline_processing */ +/* */ +/*************************************************************************/ + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* FT_Outline */ +/* */ +/* <Description> */ +/* This structure is used to describe an outline to the scan-line */ +/* converter. */ +/* */ +/* <Fields> */ +/* n_contours :: The number of contours in the outline. */ +/* */ +/* n_points :: The number of points in the outline. */ +/* */ +/* points :: A pointer to an array of `n_points' @FT_Vector */ +/* elements, giving the outline's point coordinates. */ +/* */ +/* tags :: A pointer to an array of `n_points' chars, giving */ +/* each outline point's type. */ +/* */ +/* If bit~0 is unset, the point is `off' the curve, */ +/* i.e., a Bézier control point, while it is `on' if */ +/* set. */ +/* */ +/* Bit~1 is meaningful for `off' points only. If set, */ +/* it indicates a third-order Bézier arc control point; */ +/* and a second-order control point if unset. */ +/* */ +/* If bit~2 is set, bits 5-7 contain the drop-out mode */ +/* (as defined in the OpenType specification; the value */ +/* is the same as the argument to the SCANMODE */ +/* instruction). */ +/* */ +/* Bits 3 and~4 are reserved for internal purposes. */ +/* */ +/* contours :: An array of `n_contours' shorts, giving the end */ +/* point of each contour within the outline. For */ +/* example, the first contour is defined by the points */ +/* `0' to `contours[0]', the second one is defined by */ +/* the points `contours[0]+1' to `contours[1]', etc. */ +/* */ +/* flags :: A set of bit flags used to characterize the outline */ +/* and give hints to the scan-converter and hinter on */ +/* how to convert/grid-fit it. See @FT_OUTLINE_FLAGS. */ +/* */ +/* <Note> */ +/* The B/W rasterizer only checks bit~2 in the `tags' array for the */ +/* first point of each contour. The drop-out mode as given with */ +/* @FT_OUTLINE_IGNORE_DROPOUTS, @FT_OUTLINE_SMART_DROPOUTS, and */ +/* @FT_OUTLINE_INCLUDE_STUBS in `flags' is then overridden. */ +/* */ +typedef struct FT_Outline_ { short n_contours; /* number of contours in glyph */ short n_points; /* number of points in the glyph */ @@ -391,86 +385,86 @@ FT_BEGIN_HEADER int flags; /* outline masks */ - } FT_Outline; +} FT_Outline; - /* Following limits must be consistent with */ - /* FT_Outline.{n_contours,n_points} */ +/* Following limits must be consistent with */ +/* FT_Outline.{n_contours,n_points} */ #define FT_OUTLINE_CONTOURS_MAX SHRT_MAX #define FT_OUTLINE_POINTS_MAX SHRT_MAX - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_OUTLINE_FLAGS */ - /* */ - /* <Description> */ - /* A list of bit-field constants use for the flags in an outline's */ - /* `flags' field. */ - /* */ - /* <Values> */ - /* FT_OUTLINE_NONE :: */ - /* Value~0 is reserved. */ - /* */ - /* FT_OUTLINE_OWNER :: */ - /* If set, this flag indicates that the outline's field arrays */ - /* (i.e., `points', `flags', and `contours') are `owned' by the */ - /* outline object, and should thus be freed when it is destroyed. */ - /* */ - /* FT_OUTLINE_EVEN_ODD_FILL :: */ - /* By default, outlines are filled using the non-zero winding rule. */ - /* If set to 1, the outline will be filled using the even-odd fill */ - /* rule (only works with the smooth rasterizer). */ - /* */ - /* FT_OUTLINE_REVERSE_FILL :: */ - /* By default, outside contours of an outline are oriented in */ - /* clock-wise direction, as defined in the TrueType specification. */ - /* This flag is set if the outline uses the opposite direction */ - /* (typically for Type~1 fonts). This flag is ignored by the scan */ - /* converter. */ - /* */ - /* FT_OUTLINE_IGNORE_DROPOUTS :: */ - /* By default, the scan converter will try to detect drop-outs in */ - /* an outline and correct the glyph bitmap to ensure consistent */ - /* shape continuity. If set, this flag hints the scan-line */ - /* converter to ignore such cases. See below for more information. */ - /* */ - /* FT_OUTLINE_SMART_DROPOUTS :: */ - /* Select smart dropout control. If unset, use simple dropout */ - /* control. Ignored if @FT_OUTLINE_IGNORE_DROPOUTS is set. See */ - /* below for more information. */ - /* */ - /* FT_OUTLINE_INCLUDE_STUBS :: */ - /* If set, turn pixels on for `stubs', otherwise exclude them. */ - /* Ignored if @FT_OUTLINE_IGNORE_DROPOUTS is set. See below for */ - /* more information. */ - /* */ - /* FT_OUTLINE_HIGH_PRECISION :: */ - /* This flag indicates that the scan-line converter should try to */ - /* convert this outline to bitmaps with the highest possible */ - /* quality. It is typically set for small character sizes. Note */ - /* that this is only a hint that might be completely ignored by a */ - /* given scan-converter. */ - /* */ - /* FT_OUTLINE_SINGLE_PASS :: */ - /* This flag is set to force a given scan-converter to only use a */ - /* single pass over the outline to render a bitmap glyph image. */ - /* Normally, it is set for very large character sizes. It is only */ - /* a hint that might be completely ignored by a given */ - /* scan-converter. */ - /* */ - /* <Note> */ - /* The flags @FT_OUTLINE_IGNORE_DROPOUTS, @FT_OUTLINE_SMART_DROPOUTS, */ - /* and @FT_OUTLINE_INCLUDE_STUBS are ignored by the smooth */ - /* rasterizer. */ - /* */ - /* There exists a second mechanism to pass the drop-out mode to the */ - /* B/W rasterizer; see the `tags' field in @FT_Outline. */ - /* */ - /* Please refer to the description of the `SCANTYPE' instruction in */ - /* the OpenType specification (in file `ttinst1.doc') how simple */ - /* drop-outs, smart drop-outs, and stubs are defined. */ - /* */ +/*************************************************************************/ +/* */ +/* <Enum> */ +/* FT_OUTLINE_FLAGS */ +/* */ +/* <Description> */ +/* A list of bit-field constants use for the flags in an outline's */ +/* `flags' field. */ +/* */ +/* <Values> */ +/* FT_OUTLINE_NONE :: */ +/* Value~0 is reserved. */ +/* */ +/* FT_OUTLINE_OWNER :: */ +/* If set, this flag indicates that the outline's field arrays */ +/* (i.e., `points', `flags', and `contours') are `owned' by the */ +/* outline object, and should thus be freed when it is destroyed. */ +/* */ +/* FT_OUTLINE_EVEN_ODD_FILL :: */ +/* By default, outlines are filled using the non-zero winding rule. */ +/* If set to 1, the outline will be filled using the even-odd fill */ +/* rule (only works with the smooth rasterizer). */ +/* */ +/* FT_OUTLINE_REVERSE_FILL :: */ +/* By default, outside contours of an outline are oriented in */ +/* clock-wise direction, as defined in the TrueType specification. */ +/* This flag is set if the outline uses the opposite direction */ +/* (typically for Type~1 fonts). This flag is ignored by the scan */ +/* converter. */ +/* */ +/* FT_OUTLINE_IGNORE_DROPOUTS :: */ +/* By default, the scan converter will try to detect drop-outs in */ +/* an outline and correct the glyph bitmap to ensure consistent */ +/* shape continuity. If set, this flag hints the scan-line */ +/* converter to ignore such cases. See below for more information. */ +/* */ +/* FT_OUTLINE_SMART_DROPOUTS :: */ +/* Select smart dropout control. If unset, use simple dropout */ +/* control. Ignored if @FT_OUTLINE_IGNORE_DROPOUTS is set. See */ +/* below for more information. */ +/* */ +/* FT_OUTLINE_INCLUDE_STUBS :: */ +/* If set, turn pixels on for `stubs', otherwise exclude them. */ +/* Ignored if @FT_OUTLINE_IGNORE_DROPOUTS is set. See below for */ +/* more information. */ +/* */ +/* FT_OUTLINE_HIGH_PRECISION :: */ +/* This flag indicates that the scan-line converter should try to */ +/* convert this outline to bitmaps with the highest possible */ +/* quality. It is typically set for small character sizes. Note */ +/* that this is only a hint that might be completely ignored by a */ +/* given scan-converter. */ +/* */ +/* FT_OUTLINE_SINGLE_PASS :: */ +/* This flag is set to force a given scan-converter to only use a */ +/* single pass over the outline to render a bitmap glyph image. */ +/* Normally, it is set for very large character sizes. It is only */ +/* a hint that might be completely ignored by a given */ +/* scan-converter. */ +/* */ +/* <Note> */ +/* The flags @FT_OUTLINE_IGNORE_DROPOUTS, @FT_OUTLINE_SMART_DROPOUTS, */ +/* and @FT_OUTLINE_INCLUDE_STUBS are ignored by the smooth */ +/* rasterizer. */ +/* */ +/* There exists a second mechanism to pass the drop-out mode to the */ +/* B/W rasterizer; see the `tags' field in @FT_Outline. */ +/* */ +/* Please refer to the description of the `SCANTYPE' instruction in */ +/* the OpenType specification (in file `ttinst1.doc') how simple */ +/* drop-outs, smart drop-outs, and stubs are defined. */ +/* */ #define FT_OUTLINE_NONE 0x0 #define FT_OUTLINE_OWNER 0x1 #define FT_OUTLINE_EVEN_ODD_FILL 0x2 @@ -483,24 +477,24 @@ FT_BEGIN_HEADER #define FT_OUTLINE_SINGLE_PASS 0x200 - /************************************************************************* - * - * @enum: - * ft_outline_flags - * - * @description: - * These constants are deprecated. Please use the corresponding - * @FT_OUTLINE_FLAGS values. - * - * @values: - * ft_outline_none :: See @FT_OUTLINE_NONE. - * ft_outline_owner :: See @FT_OUTLINE_OWNER. - * ft_outline_even_odd_fill :: See @FT_OUTLINE_EVEN_ODD_FILL. - * ft_outline_reverse_fill :: See @FT_OUTLINE_REVERSE_FILL. - * ft_outline_ignore_dropouts :: See @FT_OUTLINE_IGNORE_DROPOUTS. - * ft_outline_high_precision :: See @FT_OUTLINE_HIGH_PRECISION. - * ft_outline_single_pass :: See @FT_OUTLINE_SINGLE_PASS. - */ +/************************************************************************* + * + * @enum: + * ft_outline_flags + * + * @description: + * These constants are deprecated. Please use the corresponding + * @FT_OUTLINE_FLAGS values. + * + * @values: + * ft_outline_none :: See @FT_OUTLINE_NONE. + * ft_outline_owner :: See @FT_OUTLINE_OWNER. + * ft_outline_even_odd_fill :: See @FT_OUTLINE_EVEN_ODD_FILL. + * ft_outline_reverse_fill :: See @FT_OUTLINE_REVERSE_FILL. + * ft_outline_ignore_dropouts :: See @FT_OUTLINE_IGNORE_DROPOUTS. + * ft_outline_high_precision :: See @FT_OUTLINE_HIGH_PRECISION. + * ft_outline_single_pass :: See @FT_OUTLINE_SINGLE_PASS. + */ #define ft_outline_none FT_OUTLINE_NONE #define ft_outline_owner FT_OUTLINE_OWNER #define ft_outline_even_odd_fill FT_OUTLINE_EVEN_ODD_FILL @@ -509,7 +503,7 @@ FT_BEGIN_HEADER #define ft_outline_high_precision FT_OUTLINE_HIGH_PRECISION #define ft_outline_single_pass FT_OUTLINE_SINGLE_PASS - /* */ +/* */ #define FT_CURVE_TAG( flag ) ( flag & 3 ) @@ -532,164 +526,163 @@ FT_BEGIN_HEADER #define FT_Curve_Tag_Touch_Y FT_CURVE_TAG_TOUCH_Y - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Outline_MoveToFunc */ - /* */ - /* <Description> */ - /* A function pointer type used to describe the signature of a `move */ - /* to' function during outline walking/decomposition. */ - /* */ - /* A `move to' is emitted to start a new contour in an outline. */ - /* */ - /* <Input> */ - /* to :: A pointer to the target point of the `move to'. */ - /* */ - /* user :: A typeless pointer which is passed from the caller of the */ - /* decomposition function. */ - /* */ - /* <Return> */ - /* Error code. 0~means success. */ - /* */ - typedef int - (*FT_Outline_MoveToFunc)( const FT_Vector* to, - void* user ); +/*************************************************************************/ +/* */ +/* <FuncType> */ +/* FT_Outline_MoveToFunc */ +/* */ +/* <Description> */ +/* A function pointer type used to describe the signature of a `move */ +/* to' function during outline walking/decomposition. */ +/* */ +/* A `move to' is emitted to start a new contour in an outline. */ +/* */ +/* <Input> */ +/* to :: A pointer to the target point of the `move to'. */ +/* */ +/* user :: A typeless pointer which is passed from the caller of the */ +/* decomposition function. */ +/* */ +/* <Return> */ +/* Error code. 0~means success. */ +/* */ +typedef int +(*FT_Outline_MoveToFunc)( const FT_Vector* to, + void* user ); #define FT_Outline_MoveTo_Func FT_Outline_MoveToFunc - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Outline_LineToFunc */ - /* */ - /* <Description> */ - /* A function pointer type used to describe the signature of a `line */ - /* to' function during outline walking/decomposition. */ - /* */ - /* A `line to' is emitted to indicate a segment in the outline. */ - /* */ - /* <Input> */ - /* to :: A pointer to the target point of the `line to'. */ - /* */ - /* user :: A typeless pointer which is passed from the caller of the */ - /* decomposition function. */ - /* */ - /* <Return> */ - /* Error code. 0~means success. */ - /* */ - typedef int - (*FT_Outline_LineToFunc)( const FT_Vector* to, - void* user ); +/*************************************************************************/ +/* */ +/* <FuncType> */ +/* FT_Outline_LineToFunc */ +/* */ +/* <Description> */ +/* A function pointer type used to describe the signature of a `line */ +/* to' function during outline walking/decomposition. */ +/* */ +/* A `line to' is emitted to indicate a segment in the outline. */ +/* */ +/* <Input> */ +/* to :: A pointer to the target point of the `line to'. */ +/* */ +/* user :: A typeless pointer which is passed from the caller of the */ +/* decomposition function. */ +/* */ +/* <Return> */ +/* Error code. 0~means success. */ +/* */ +typedef int +(*FT_Outline_LineToFunc)( const FT_Vector* to, + void* user ); #define FT_Outline_LineTo_Func FT_Outline_LineToFunc - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Outline_ConicToFunc */ - /* */ - /* <Description> */ - /* A function pointer type used to describe the signature of a `conic */ - /* to' function during outline walking or decomposition. */ - /* */ - /* A `conic to' is emitted to indicate a second-order Bézier arc in */ - /* the outline. */ - /* */ - /* <Input> */ - /* control :: An intermediate control point between the last position */ - /* and the new target in `to'. */ - /* */ - /* to :: A pointer to the target end point of the conic arc. */ - /* */ - /* user :: A typeless pointer which is passed from the caller of */ - /* the decomposition function. */ - /* */ - /* <Return> */ - /* Error code. 0~means success. */ - /* */ - typedef int - (*FT_Outline_ConicToFunc)( const FT_Vector* control, - const FT_Vector* to, - void* user ); +/*************************************************************************/ +/* */ +/* <FuncType> */ +/* FT_Outline_ConicToFunc */ +/* */ +/* <Description> */ +/* A function pointer type used to describe the signature of a `conic */ +/* to' function during outline walking or decomposition. */ +/* */ +/* A `conic to' is emitted to indicate a second-order Bézier arc in */ +/* the outline. */ +/* */ +/* <Input> */ +/* control :: An intermediate control point between the last position */ +/* and the new target in `to'. */ +/* */ +/* to :: A pointer to the target end point of the conic arc. */ +/* */ +/* user :: A typeless pointer which is passed from the caller of */ +/* the decomposition function. */ +/* */ +/* <Return> */ +/* Error code. 0~means success. */ +/* */ +typedef int +(*FT_Outline_ConicToFunc)( const FT_Vector* control, + const FT_Vector* to, + void* user ); #define FT_Outline_ConicTo_Func FT_Outline_ConicToFunc - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Outline_CubicToFunc */ - /* */ - /* <Description> */ - /* A function pointer type used to describe the signature of a `cubic */ - /* to' function during outline walking or decomposition. */ - /* */ - /* A `cubic to' is emitted to indicate a third-order Bézier arc. */ - /* */ - /* <Input> */ - /* control1 :: A pointer to the first Bézier control point. */ - /* */ - /* control2 :: A pointer to the second Bézier control point. */ - /* */ - /* to :: A pointer to the target end point. */ - /* */ - /* user :: A typeless pointer which is passed from the caller of */ - /* the decomposition function. */ - /* */ - /* <Return> */ - /* Error code. 0~means success. */ - /* */ - typedef int - (*FT_Outline_CubicToFunc)( const FT_Vector* control1, - const FT_Vector* control2, - const FT_Vector* to, - void* user ); +/*************************************************************************/ +/* */ +/* <FuncType> */ +/* FT_Outline_CubicToFunc */ +/* */ +/* <Description> */ +/* A function pointer type used to describe the signature of a `cubic */ +/* to' function during outline walking or decomposition. */ +/* */ +/* A `cubic to' is emitted to indicate a third-order Bézier arc. */ +/* */ +/* <Input> */ +/* control1 :: A pointer to the first Bézier control point. */ +/* */ +/* control2 :: A pointer to the second Bézier control point. */ +/* */ +/* to :: A pointer to the target end point. */ +/* */ +/* user :: A typeless pointer which is passed from the caller of */ +/* the decomposition function. */ +/* */ +/* <Return> */ +/* Error code. 0~means success. */ +/* */ +typedef int +(*FT_Outline_CubicToFunc)( const FT_Vector* control1, + const FT_Vector* control2, + const FT_Vector* to, + void* user ); #define FT_Outline_CubicTo_Func FT_Outline_CubicToFunc - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Outline_Funcs */ - /* */ - /* <Description> */ - /* A structure to hold various function pointers used during outline */ - /* decomposition in order to emit segments, conic, and cubic Béziers. */ - /* */ - /* <Fields> */ - /* move_to :: The `move to' emitter. */ - /* */ - /* line_to :: The segment emitter. */ - /* */ - /* conic_to :: The second-order Bézier arc emitter. */ - /* */ - /* cubic_to :: The third-order Bézier arc emitter. */ - /* */ - /* shift :: The shift that is applied to coordinates before they */ - /* are sent to the emitter. */ - /* */ - /* delta :: The delta that is applied to coordinates before they */ - /* are sent to the emitter, but after the shift. */ - /* */ - /* <Note> */ - /* The point coordinates sent to the emitters are the transformed */ - /* version of the original coordinates (this is important for high */ - /* accuracy during scan-conversion). The transformation is simple: */ - /* */ - /* { */ - /* x' = (x << shift) - delta */ - /* y' = (x << shift) - delta */ - /* } */ - /* */ - /* Set the values of `shift' and `delta' to~0 to get the original */ - /* point coordinates. */ - /* */ - typedef struct FT_Outline_Funcs_ - { +/*************************************************************************/ +/* */ +/* <Struct> */ +/* FT_Outline_Funcs */ +/* */ +/* <Description> */ +/* A structure to hold various function pointers used during outline */ +/* decomposition in order to emit segments, conic, and cubic Béziers. */ +/* */ +/* <Fields> */ +/* move_to :: The `move to' emitter. */ +/* */ +/* line_to :: The segment emitter. */ +/* */ +/* conic_to :: The second-order Bézier arc emitter. */ +/* */ +/* cubic_to :: The third-order Bézier arc emitter. */ +/* */ +/* shift :: The shift that is applied to coordinates before they */ +/* are sent to the emitter. */ +/* */ +/* delta :: The delta that is applied to coordinates before they */ +/* are sent to the emitter, but after the shift. */ +/* */ +/* <Note> */ +/* The point coordinates sent to the emitters are the transformed */ +/* version of the original coordinates (this is important for high */ +/* accuracy during scan-conversion). The transformation is simple: */ +/* */ +/* { */ +/* x' = (x << shift) - delta */ +/* y' = (x << shift) - delta */ +/* } */ +/* */ +/* Set the values of `shift' and `delta' to~0 to get the original */ +/* point coordinates. */ +/* */ +typedef struct FT_Outline_Funcs_ { FT_Outline_MoveToFunc move_to; FT_Outline_LineToFunc line_to; FT_Outline_ConicToFunc conic_to; @@ -698,36 +691,36 @@ FT_BEGIN_HEADER int shift; FT_Pos delta; - } FT_Outline_Funcs; - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* basic_types */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Macro> */ - /* FT_IMAGE_TAG */ - /* */ - /* <Description> */ - /* This macro converts four-letter tags to an unsigned long type. */ - /* */ - /* <Note> */ - /* Since many 16-bit compilers don't like 32-bit enumerations, you */ - /* should redefine this macro in case of problems to something like */ - /* this: */ - /* */ - /* { */ - /* #define FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 ) value */ - /* } */ - /* */ - /* to get a simple enumeration without assigning special numbers. */ - /* */ +} FT_Outline_Funcs; + + +/*************************************************************************/ +/* */ +/* <Section> */ +/* basic_types */ +/* */ +/*************************************************************************/ + + +/*************************************************************************/ +/* */ +/* <Macro> */ +/* FT_IMAGE_TAG */ +/* */ +/* <Description> */ +/* This macro converts four-letter tags to an unsigned long type. */ +/* */ +/* <Note> */ +/* Since many 16-bit compilers don't like 32-bit enumerations, you */ +/* should redefine this macro in case of problems to something like */ +/* this: */ +/* */ +/* { */ +/* #define FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 ) value */ +/* } */ +/* */ +/* to get a simple enumeration without assigning special numbers. */ +/* */ #ifndef FT_IMAGE_TAG #define FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 ) \ value = ( ( (unsigned long)_x1 << 24 ) | \ @@ -737,46 +730,45 @@ FT_BEGIN_HEADER #endif /* FT_IMAGE_TAG */ - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_Glyph_Format */ - /* */ - /* <Description> */ - /* An enumeration type used to describe the format of a given glyph */ - /* image. Note that this version of FreeType only supports two image */ - /* formats, even though future font drivers will be able to register */ - /* their own format. */ - /* */ - /* <Values> */ - /* FT_GLYPH_FORMAT_NONE :: */ - /* The value~0 is reserved. */ - /* */ - /* FT_GLYPH_FORMAT_COMPOSITE :: */ - /* The glyph image is a composite of several other images. This */ - /* format is _only_ used with @FT_LOAD_NO_RECURSE, and is used to */ - /* report compound glyphs (like accented characters). */ - /* */ - /* FT_GLYPH_FORMAT_BITMAP :: */ - /* The glyph image is a bitmap, and can be described as an */ - /* @FT_Bitmap. You generally need to access the `bitmap' field of */ - /* the @FT_GlyphSlotRec structure to read it. */ - /* */ - /* FT_GLYPH_FORMAT_OUTLINE :: */ - /* The glyph image is a vectorial outline made of line segments */ - /* and Bézier arcs; it can be described as an @FT_Outline; you */ - /* generally want to access the `outline' field of the */ - /* @FT_GlyphSlotRec structure to read it. */ - /* */ - /* FT_GLYPH_FORMAT_PLOTTER :: */ - /* The glyph image is a vectorial path with no inside and outside */ - /* contours. Some Type~1 fonts, like those in the Hershey family, */ - /* contain glyphs in this format. These are described as */ - /* @FT_Outline, but FreeType isn't currently capable of rendering */ - /* them correctly. */ - /* */ - typedef enum FT_Glyph_Format_ - { +/*************************************************************************/ +/* */ +/* <Enum> */ +/* FT_Glyph_Format */ +/* */ +/* <Description> */ +/* An enumeration type used to describe the format of a given glyph */ +/* image. Note that this version of FreeType only supports two image */ +/* formats, even though future font drivers will be able to register */ +/* their own format. */ +/* */ +/* <Values> */ +/* FT_GLYPH_FORMAT_NONE :: */ +/* The value~0 is reserved. */ +/* */ +/* FT_GLYPH_FORMAT_COMPOSITE :: */ +/* The glyph image is a composite of several other images. This */ +/* format is _only_ used with @FT_LOAD_NO_RECURSE, and is used to */ +/* report compound glyphs (like accented characters). */ +/* */ +/* FT_GLYPH_FORMAT_BITMAP :: */ +/* The glyph image is a bitmap, and can be described as an */ +/* @FT_Bitmap. You generally need to access the `bitmap' field of */ +/* the @FT_GlyphSlotRec structure to read it. */ +/* */ +/* FT_GLYPH_FORMAT_OUTLINE :: */ +/* The glyph image is a vectorial outline made of line segments */ +/* and Bézier arcs; it can be described as an @FT_Outline; you */ +/* generally want to access the `outline' field of the */ +/* @FT_GlyphSlotRec structure to read it. */ +/* */ +/* FT_GLYPH_FORMAT_PLOTTER :: */ +/* The glyph image is a vectorial path with no inside and outside */ +/* contours. Some Type~1 fonts, like those in the Hershey family, */ +/* contain glyphs in this format. These are described as */ +/* @FT_Outline, but FreeType isn't currently capable of rendering */ +/* them correctly. */ +/* */ +typedef enum FT_Glyph_Format_ { FT_IMAGE_TAG( FT_GLYPH_FORMAT_NONE, 0, 0, 0, 0 ), FT_IMAGE_TAG( FT_GLYPH_FORMAT_COMPOSITE, 'c', 'o', 'm', 'p' ), @@ -784,25 +776,25 @@ FT_BEGIN_HEADER FT_IMAGE_TAG( FT_GLYPH_FORMAT_OUTLINE, 'o', 'u', 't', 'l' ), FT_IMAGE_TAG( FT_GLYPH_FORMAT_PLOTTER, 'p', 'l', 'o', 't' ) - } FT_Glyph_Format; - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* ft_glyph_format_xxx */ - /* */ - /* <Description> */ - /* A list of deprecated constants. Use the corresponding */ - /* @FT_Glyph_Format values instead. */ - /* */ - /* <Values> */ - /* ft_glyph_format_none :: See @FT_GLYPH_FORMAT_NONE. */ - /* ft_glyph_format_composite :: See @FT_GLYPH_FORMAT_COMPOSITE. */ - /* ft_glyph_format_bitmap :: See @FT_GLYPH_FORMAT_BITMAP. */ - /* ft_glyph_format_outline :: See @FT_GLYPH_FORMAT_OUTLINE. */ - /* ft_glyph_format_plotter :: See @FT_GLYPH_FORMAT_PLOTTER. */ - /* */ +} FT_Glyph_Format; + + +/*************************************************************************/ +/* */ +/* <Enum> */ +/* ft_glyph_format_xxx */ +/* */ +/* <Description> */ +/* A list of deprecated constants. Use the corresponding */ +/* @FT_Glyph_Format values instead. */ +/* */ +/* <Values> */ +/* ft_glyph_format_none :: See @FT_GLYPH_FORMAT_NONE. */ +/* ft_glyph_format_composite :: See @FT_GLYPH_FORMAT_COMPOSITE. */ +/* ft_glyph_format_bitmap :: See @FT_GLYPH_FORMAT_BITMAP. */ +/* ft_glyph_format_outline :: See @FT_GLYPH_FORMAT_OUTLINE. */ +/* ft_glyph_format_plotter :: See @FT_GLYPH_FORMAT_PLOTTER. */ +/* */ #define ft_glyph_format_none FT_GLYPH_FORMAT_NONE #define ft_glyph_format_composite FT_GLYPH_FORMAT_COMPOSITE #define ft_glyph_format_bitmap FT_GLYPH_FORMAT_BITMAP @@ -810,299 +802,297 @@ FT_BEGIN_HEADER #define ft_glyph_format_plotter FT_GLYPH_FORMAT_PLOTTER - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** R A S T E R D E F I N I T I O N S *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* A raster is a scan converter, in charge of rendering an outline into */ - /* a a bitmap. This section contains the public API for rasters. */ - /* */ - /* Note that in FreeType 2, all rasters are now encapsulated within */ - /* specific modules called `renderers'. See `freetype/ftrender.h' for */ - /* more details on renderers. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* raster */ - /* */ - /* <Title> */ - /* Scanline Converter */ - /* */ - /* <Abstract> */ - /* How vectorial outlines are converted into bitmaps and pixmaps. */ - /* */ - /* <Description> */ - /* This section contains technical definitions. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Raster */ - /* */ - /* <Description> */ - /* A handle (pointer) to a raster object. Each object can be used */ - /* independently to convert an outline into a bitmap or pixmap. */ - /* */ - typedef struct FT_RasterRec_* FT_Raster; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Span */ - /* */ - /* <Description> */ - /* A structure used to model a single span of gray (or black) pixels */ - /* when rendering a monochrome or anti-aliased bitmap. */ - /* */ - /* <Fields> */ - /* x :: The span's horizontal start position. */ - /* */ - /* len :: The span's length in pixels. */ - /* */ - /* coverage :: The span color/coverage, ranging from 0 (background) */ - /* to 255 (foreground). Only used for anti-aliased */ - /* rendering. */ - /* */ - /* <Note> */ - /* This structure is used by the span drawing callback type named */ - /* @FT_SpanFunc which takes the y~coordinate of the span as a */ - /* a parameter. */ - /* */ - /* The coverage value is always between 0 and 255. If you want less */ - /* gray values, the callback function has to reduce them. */ - /* */ - typedef struct FT_Span_ - { +/*************************************************************************/ +/*************************************************************************/ +/*************************************************************************/ +/***** *****/ +/***** R A S T E R D E F I N I T I O N S *****/ +/***** *****/ +/*************************************************************************/ +/*************************************************************************/ +/*************************************************************************/ + + +/*************************************************************************/ +/* */ +/* A raster is a scan converter, in charge of rendering an outline into */ +/* a a bitmap. This section contains the public API for rasters. */ +/* */ +/* Note that in FreeType 2, all rasters are now encapsulated within */ +/* specific modules called `renderers'. See `freetype/ftrender.h' for */ +/* more details on renderers. */ +/* */ +/*************************************************************************/ + + +/*************************************************************************/ +/* */ +/* <Section> */ +/* raster */ +/* */ +/* <Title> */ +/* Scanline Converter */ +/* */ +/* <Abstract> */ +/* How vectorial outlines are converted into bitmaps and pixmaps. */ +/* */ +/* <Description> */ +/* This section contains technical definitions. */ +/* */ +/*************************************************************************/ + + +/*************************************************************************/ +/* */ +/* <Type> */ +/* FT_Raster */ +/* */ +/* <Description> */ +/* A handle (pointer) to a raster object. Each object can be used */ +/* independently to convert an outline into a bitmap or pixmap. */ +/* */ +typedef struct FT_RasterRec_* FT_Raster; + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* FT_Span */ +/* */ +/* <Description> */ +/* A structure used to model a single span of gray (or black) pixels */ +/* when rendering a monochrome or anti-aliased bitmap. */ +/* */ +/* <Fields> */ +/* x :: The span's horizontal start position. */ +/* */ +/* len :: The span's length in pixels. */ +/* */ +/* coverage :: The span color/coverage, ranging from 0 (background) */ +/* to 255 (foreground). Only used for anti-aliased */ +/* rendering. */ +/* */ +/* <Note> */ +/* This structure is used by the span drawing callback type named */ +/* @FT_SpanFunc which takes the y~coordinate of the span as a */ +/* a parameter. */ +/* */ +/* The coverage value is always between 0 and 255. If you want less */ +/* gray values, the callback function has to reduce them. */ +/* */ +typedef struct FT_Span_ { short x; unsigned short len; unsigned char coverage; - } FT_Span; - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_SpanFunc */ - /* */ - /* <Description> */ - /* A function used as a call-back by the anti-aliased renderer in */ - /* order to let client applications draw themselves the gray pixel */ - /* spans on each scan line. */ - /* */ - /* <Input> */ - /* y :: The scanline's y~coordinate. */ - /* */ - /* count :: The number of spans to draw on this scanline. */ - /* */ - /* spans :: A table of `count' spans to draw on the scanline. */ - /* */ - /* user :: User-supplied data that is passed to the callback. */ - /* */ - /* <Note> */ - /* This callback allows client applications to directly render the */ - /* gray spans of the anti-aliased bitmap to any kind of surfaces. */ - /* */ - /* This can be used to write anti-aliased outlines directly to a */ - /* given background bitmap, and even perform translucency. */ - /* */ - /* Note that the `count' field cannot be greater than a fixed value */ - /* defined by the `FT_MAX_GRAY_SPANS' configuration macro in */ - /* `ftoption.h'. By default, this value is set to~32, which means */ - /* that if there are more than 32~spans on a given scanline, the */ - /* callback is called several times with the same `y' parameter in */ - /* order to draw all callbacks. */ - /* */ - /* Otherwise, the callback is only called once per scan-line, and */ - /* only for those scanlines that do have `gray' pixels on them. */ - /* */ - typedef void - (*FT_SpanFunc)( int y, - int count, - const FT_Span* spans, - void* user ); +} FT_Span; + + +/*************************************************************************/ +/* */ +/* <FuncType> */ +/* FT_SpanFunc */ +/* */ +/* <Description> */ +/* A function used as a call-back by the anti-aliased renderer in */ +/* order to let client applications draw themselves the gray pixel */ +/* spans on each scan line. */ +/* */ +/* <Input> */ +/* y :: The scanline's y~coordinate. */ +/* */ +/* count :: The number of spans to draw on this scanline. */ +/* */ +/* spans :: A table of `count' spans to draw on the scanline. */ +/* */ +/* user :: User-supplied data that is passed to the callback. */ +/* */ +/* <Note> */ +/* This callback allows client applications to directly render the */ +/* gray spans of the anti-aliased bitmap to any kind of surfaces. */ +/* */ +/* This can be used to write anti-aliased outlines directly to a */ +/* given background bitmap, and even perform translucency. */ +/* */ +/* Note that the `count' field cannot be greater than a fixed value */ +/* defined by the `FT_MAX_GRAY_SPANS' configuration macro in */ +/* `ftoption.h'. By default, this value is set to~32, which means */ +/* that if there are more than 32~spans on a given scanline, the */ +/* callback is called several times with the same `y' parameter in */ +/* order to draw all callbacks. */ +/* */ +/* Otherwise, the callback is only called once per scan-line, and */ +/* only for those scanlines that do have `gray' pixels on them. */ +/* */ +typedef void +(*FT_SpanFunc)( int y, + int count, + const FT_Span* spans, + void* user ); #define FT_Raster_Span_Func FT_SpanFunc - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Raster_BitTest_Func */ - /* */ - /* <Description> */ - /* THIS TYPE IS DEPRECATED. DO NOT USE IT. */ - /* */ - /* A function used as a call-back by the monochrome scan-converter */ - /* to test whether a given target pixel is already set to the drawing */ - /* `color'. These tests are crucial to implement drop-out control */ - /* per-se the TrueType spec. */ - /* */ - /* <Input> */ - /* y :: The pixel's y~coordinate. */ - /* */ - /* x :: The pixel's x~coordinate. */ - /* */ - /* user :: User-supplied data that is passed to the callback. */ - /* */ - /* <Return> */ - /* 1~if the pixel is `set', 0~otherwise. */ - /* */ - typedef int - (*FT_Raster_BitTest_Func)( int y, - int x, - void* user ); - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Raster_BitSet_Func */ - /* */ - /* <Description> */ - /* THIS TYPE IS DEPRECATED. DO NOT USE IT. */ - /* */ - /* A function used as a call-back by the monochrome scan-converter */ - /* to set an individual target pixel. This is crucial to implement */ - /* drop-out control according to the TrueType specification. */ - /* */ - /* <Input> */ - /* y :: The pixel's y~coordinate. */ - /* */ - /* x :: The pixel's x~coordinate. */ - /* */ - /* user :: User-supplied data that is passed to the callback. */ - /* */ - /* <Return> */ - /* 1~if the pixel is `set', 0~otherwise. */ - /* */ - typedef void - (*FT_Raster_BitSet_Func)( int y, - int x, - void* user ); - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_RASTER_FLAG_XXX */ - /* */ - /* <Description> */ - /* A list of bit flag constants as used in the `flags' field of a */ - /* @FT_Raster_Params structure. */ - /* */ - /* <Values> */ - /* FT_RASTER_FLAG_DEFAULT :: This value is 0. */ - /* */ - /* FT_RASTER_FLAG_AA :: This flag is set to indicate that an */ - /* anti-aliased glyph image should be */ - /* generated. Otherwise, it will be */ - /* monochrome (1-bit). */ - /* */ - /* FT_RASTER_FLAG_DIRECT :: This flag is set to indicate direct */ - /* rendering. In this mode, client */ - /* applications must provide their own span */ - /* callback. This lets them directly */ - /* draw or compose over an existing bitmap. */ - /* If this bit is not set, the target */ - /* pixmap's buffer _must_ be zeroed before */ - /* rendering. */ - /* */ - /* Note that for now, direct rendering is */ - /* only possible with anti-aliased glyphs. */ - /* */ - /* FT_RASTER_FLAG_CLIP :: This flag is only used in direct */ - /* rendering mode. If set, the output will */ - /* be clipped to a box specified in the */ - /* `clip_box' field of the */ - /* @FT_Raster_Params structure. */ - /* */ - /* Note that by default, the glyph bitmap */ - /* is clipped to the target pixmap, except */ - /* in direct rendering mode where all spans */ - /* are generated if no clipping box is set. */ - /* */ +/*************************************************************************/ +/* */ +/* <FuncType> */ +/* FT_Raster_BitTest_Func */ +/* */ +/* <Description> */ +/* THIS TYPE IS DEPRECATED. DO NOT USE IT. */ +/* */ +/* A function used as a call-back by the monochrome scan-converter */ +/* to test whether a given target pixel is already set to the drawing */ +/* `color'. These tests are crucial to implement drop-out control */ +/* per-se the TrueType spec. */ +/* */ +/* <Input> */ +/* y :: The pixel's y~coordinate. */ +/* */ +/* x :: The pixel's x~coordinate. */ +/* */ +/* user :: User-supplied data that is passed to the callback. */ +/* */ +/* <Return> */ +/* 1~if the pixel is `set', 0~otherwise. */ +/* */ +typedef int +(*FT_Raster_BitTest_Func)( int y, + int x, + void* user ); + + +/*************************************************************************/ +/* */ +/* <FuncType> */ +/* FT_Raster_BitSet_Func */ +/* */ +/* <Description> */ +/* THIS TYPE IS DEPRECATED. DO NOT USE IT. */ +/* */ +/* A function used as a call-back by the monochrome scan-converter */ +/* to set an individual target pixel. This is crucial to implement */ +/* drop-out control according to the TrueType specification. */ +/* */ +/* <Input> */ +/* y :: The pixel's y~coordinate. */ +/* */ +/* x :: The pixel's x~coordinate. */ +/* */ +/* user :: User-supplied data that is passed to the callback. */ +/* */ +/* <Return> */ +/* 1~if the pixel is `set', 0~otherwise. */ +/* */ +typedef void +(*FT_Raster_BitSet_Func)( int y, + int x, + void* user ); + + +/*************************************************************************/ +/* */ +/* <Enum> */ +/* FT_RASTER_FLAG_XXX */ +/* */ +/* <Description> */ +/* A list of bit flag constants as used in the `flags' field of a */ +/* @FT_Raster_Params structure. */ +/* */ +/* <Values> */ +/* FT_RASTER_FLAG_DEFAULT :: This value is 0. */ +/* */ +/* FT_RASTER_FLAG_AA :: This flag is set to indicate that an */ +/* anti-aliased glyph image should be */ +/* generated. Otherwise, it will be */ +/* monochrome (1-bit). */ +/* */ +/* FT_RASTER_FLAG_DIRECT :: This flag is set to indicate direct */ +/* rendering. In this mode, client */ +/* applications must provide their own span */ +/* callback. This lets them directly */ +/* draw or compose over an existing bitmap. */ +/* If this bit is not set, the target */ +/* pixmap's buffer _must_ be zeroed before */ +/* rendering. */ +/* */ +/* Note that for now, direct rendering is */ +/* only possible with anti-aliased glyphs. */ +/* */ +/* FT_RASTER_FLAG_CLIP :: This flag is only used in direct */ +/* rendering mode. If set, the output will */ +/* be clipped to a box specified in the */ +/* `clip_box' field of the */ +/* @FT_Raster_Params structure. */ +/* */ +/* Note that by default, the glyph bitmap */ +/* is clipped to the target pixmap, except */ +/* in direct rendering mode where all spans */ +/* are generated if no clipping box is set. */ +/* */ #define FT_RASTER_FLAG_DEFAULT 0x0 #define FT_RASTER_FLAG_AA 0x1 #define FT_RASTER_FLAG_DIRECT 0x2 #define FT_RASTER_FLAG_CLIP 0x4 - /* deprecated */ +/* deprecated */ #define ft_raster_flag_default FT_RASTER_FLAG_DEFAULT #define ft_raster_flag_aa FT_RASTER_FLAG_AA #define ft_raster_flag_direct FT_RASTER_FLAG_DIRECT #define ft_raster_flag_clip FT_RASTER_FLAG_CLIP - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Raster_Params */ - /* */ - /* <Description> */ - /* A structure to hold the arguments used by a raster's render */ - /* function. */ - /* */ - /* <Fields> */ - /* target :: The target bitmap. */ - /* */ - /* source :: A pointer to the source glyph image (e.g., an */ - /* @FT_Outline). */ - /* */ - /* flags :: The rendering flags. */ - /* */ - /* gray_spans :: The gray span drawing callback. */ - /* */ - /* black_spans :: The black span drawing callback. UNIMPLEMENTED! */ - /* */ - /* bit_test :: The bit test callback. UNIMPLEMENTED! */ - /* */ - /* bit_set :: The bit set callback. UNIMPLEMENTED! */ - /* */ - /* user :: User-supplied data that is passed to each drawing */ - /* callback. */ - /* */ - /* clip_box :: An optional clipping box. It is only used in */ - /* direct rendering mode. Note that coordinates here */ - /* should be expressed in _integer_ pixels (and not in */ - /* 26.6 fixed-point units). */ - /* */ - /* <Note> */ - /* An anti-aliased glyph bitmap is drawn if the @FT_RASTER_FLAG_AA */ - /* bit flag is set in the `flags' field, otherwise a monochrome */ - /* bitmap is generated. */ - /* */ - /* If the @FT_RASTER_FLAG_DIRECT bit flag is set in `flags', the */ - /* raster will call the `gray_spans' callback to draw gray pixel */ - /* spans, in the case of an aa glyph bitmap, it will call */ - /* `black_spans', and `bit_test' and `bit_set' in the case of a */ - /* monochrome bitmap. This allows direct composition over a */ - /* pre-existing bitmap through user-provided callbacks to perform the */ - /* span drawing/composition. */ - /* */ - /* Note that the `bit_test' and `bit_set' callbacks are required when */ - /* rendering a monochrome bitmap, as they are crucial to implement */ - /* correct drop-out control as defined in the TrueType specification. */ - /* */ - typedef struct FT_Raster_Params_ - { +/*************************************************************************/ +/* */ +/* <Struct> */ +/* FT_Raster_Params */ +/* */ +/* <Description> */ +/* A structure to hold the arguments used by a raster's render */ +/* function. */ +/* */ +/* <Fields> */ +/* target :: The target bitmap. */ +/* */ +/* source :: A pointer to the source glyph image (e.g., an */ +/* @FT_Outline). */ +/* */ +/* flags :: The rendering flags. */ +/* */ +/* gray_spans :: The gray span drawing callback. */ +/* */ +/* black_spans :: The black span drawing callback. UNIMPLEMENTED! */ +/* */ +/* bit_test :: The bit test callback. UNIMPLEMENTED! */ +/* */ +/* bit_set :: The bit set callback. UNIMPLEMENTED! */ +/* */ +/* user :: User-supplied data that is passed to each drawing */ +/* callback. */ +/* */ +/* clip_box :: An optional clipping box. It is only used in */ +/* direct rendering mode. Note that coordinates here */ +/* should be expressed in _integer_ pixels (and not in */ +/* 26.6 fixed-point units). */ +/* */ +/* <Note> */ +/* An anti-aliased glyph bitmap is drawn if the @FT_RASTER_FLAG_AA */ +/* bit flag is set in the `flags' field, otherwise a monochrome */ +/* bitmap is generated. */ +/* */ +/* If the @FT_RASTER_FLAG_DIRECT bit flag is set in `flags', the */ +/* raster will call the `gray_spans' callback to draw gray pixel */ +/* spans, in the case of an aa glyph bitmap, it will call */ +/* `black_spans', and `bit_test' and `bit_set' in the case of a */ +/* monochrome bitmap. This allows direct composition over a */ +/* pre-existing bitmap through user-provided callbacks to perform the */ +/* span drawing/composition. */ +/* */ +/* Note that the `bit_test' and `bit_set' callbacks are required when */ +/* rendering a monochrome bitmap, as they are crucial to implement */ +/* correct drop-out control as defined in the TrueType specification. */ +/* */ +typedef struct FT_Raster_Params_ { const FT_Bitmap* target; const void* source; int flags; @@ -1113,180 +1103,179 @@ FT_BEGIN_HEADER void* user; FT_BBox clip_box; - } FT_Raster_Params; - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Raster_NewFunc */ - /* */ - /* <Description> */ - /* A function used to create a new raster object. */ - /* */ - /* <Input> */ - /* memory :: A handle to the memory allocator. */ - /* */ - /* <Output> */ - /* raster :: A handle to the new raster object. */ - /* */ - /* <Return> */ - /* Error code. 0~means success. */ - /* */ - /* <Note> */ - /* The `memory' parameter is a typeless pointer in order to avoid */ - /* un-wanted dependencies on the rest of the FreeType code. In */ - /* practice, it is an @FT_Memory object, i.e., a handle to the */ - /* standard FreeType memory allocator. However, this field can be */ - /* completely ignored by a given raster implementation. */ - /* */ - typedef int - (*FT_Raster_NewFunc)( void* memory, - FT_Raster* raster ); +} FT_Raster_Params; + + +/*************************************************************************/ +/* */ +/* <FuncType> */ +/* FT_Raster_NewFunc */ +/* */ +/* <Description> */ +/* A function used to create a new raster object. */ +/* */ +/* <Input> */ +/* memory :: A handle to the memory allocator. */ +/* */ +/* <Output> */ +/* raster :: A handle to the new raster object. */ +/* */ +/* <Return> */ +/* Error code. 0~means success. */ +/* */ +/* <Note> */ +/* The `memory' parameter is a typeless pointer in order to avoid */ +/* un-wanted dependencies on the rest of the FreeType code. In */ +/* practice, it is an @FT_Memory object, i.e., a handle to the */ +/* standard FreeType memory allocator. However, this field can be */ +/* completely ignored by a given raster implementation. */ +/* */ +typedef int +(*FT_Raster_NewFunc)( void* memory, + FT_Raster* raster ); #define FT_Raster_New_Func FT_Raster_NewFunc - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Raster_DoneFunc */ - /* */ - /* <Description> */ - /* A function used to destroy a given raster object. */ - /* */ - /* <Input> */ - /* raster :: A handle to the raster object. */ - /* */ - typedef void - (*FT_Raster_DoneFunc)( FT_Raster raster ); +/*************************************************************************/ +/* */ +/* <FuncType> */ +/* FT_Raster_DoneFunc */ +/* */ +/* <Description> */ +/* A function used to destroy a given raster object. */ +/* */ +/* <Input> */ +/* raster :: A handle to the raster object. */ +/* */ +typedef void +(*FT_Raster_DoneFunc)( FT_Raster raster ); #define FT_Raster_Done_Func FT_Raster_DoneFunc - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Raster_ResetFunc */ - /* */ - /* <Description> */ - /* FreeType provides an area of memory called the `render pool', */ - /* available to all registered rasters. This pool can be freely used */ - /* during a given scan-conversion but is shared by all rasters. Its */ - /* content is thus transient. */ - /* */ - /* This function is called each time the render pool changes, or just */ - /* after a new raster object is created. */ - /* */ - /* <Input> */ - /* raster :: A handle to the new raster object. */ - /* */ - /* pool_base :: The address in memory of the render pool. */ - /* */ - /* pool_size :: The size in bytes of the render pool. */ - /* */ - /* <Note> */ - /* Rasters can ignore the render pool and rely on dynamic memory */ - /* allocation if they want to (a handle to the memory allocator is */ - /* passed to the raster constructor). However, this is not */ - /* recommended for efficiency purposes. */ - /* */ - typedef void - (*FT_Raster_ResetFunc)( FT_Raster raster, - unsigned char* pool_base, - unsigned long pool_size ); +/*************************************************************************/ +/* */ +/* <FuncType> */ +/* FT_Raster_ResetFunc */ +/* */ +/* <Description> */ +/* FreeType provides an area of memory called the `render pool', */ +/* available to all registered rasters. This pool can be freely used */ +/* during a given scan-conversion but is shared by all rasters. Its */ +/* content is thus transient. */ +/* */ +/* This function is called each time the render pool changes, or just */ +/* after a new raster object is created. */ +/* */ +/* <Input> */ +/* raster :: A handle to the new raster object. */ +/* */ +/* pool_base :: The address in memory of the render pool. */ +/* */ +/* pool_size :: The size in bytes of the render pool. */ +/* */ +/* <Note> */ +/* Rasters can ignore the render pool and rely on dynamic memory */ +/* allocation if they want to (a handle to the memory allocator is */ +/* passed to the raster constructor). However, this is not */ +/* recommended for efficiency purposes. */ +/* */ +typedef void +(*FT_Raster_ResetFunc)( FT_Raster raster, + unsigned char* pool_base, + unsigned long pool_size ); #define FT_Raster_Reset_Func FT_Raster_ResetFunc - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Raster_SetModeFunc */ - /* */ - /* <Description> */ - /* This function is a generic facility to change modes or attributes */ - /* in a given raster. This can be used for debugging purposes, or */ - /* simply to allow implementation-specific `features' in a given */ - /* raster module. */ - /* */ - /* <Input> */ - /* raster :: A handle to the new raster object. */ - /* */ - /* mode :: A 4-byte tag used to name the mode or property. */ - /* */ - /* args :: A pointer to the new mode/property to use. */ - /* */ - typedef int - (*FT_Raster_SetModeFunc)( FT_Raster raster, - unsigned long mode, - void* args ); +/*************************************************************************/ +/* */ +/* <FuncType> */ +/* FT_Raster_SetModeFunc */ +/* */ +/* <Description> */ +/* This function is a generic facility to change modes or attributes */ +/* in a given raster. This can be used for debugging purposes, or */ +/* simply to allow implementation-specific `features' in a given */ +/* raster module. */ +/* */ +/* <Input> */ +/* raster :: A handle to the new raster object. */ +/* */ +/* mode :: A 4-byte tag used to name the mode or property. */ +/* */ +/* args :: A pointer to the new mode/property to use. */ +/* */ +typedef int +(*FT_Raster_SetModeFunc)( FT_Raster raster, + unsigned long mode, + void* args ); #define FT_Raster_Set_Mode_Func FT_Raster_SetModeFunc - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Raster_RenderFunc */ - /* */ - /* <Description> */ - /* Invoke a given raster to scan-convert a given glyph image into a */ - /* target bitmap. */ - /* */ - /* <Input> */ - /* raster :: A handle to the raster object. */ - /* */ - /* params :: A pointer to an @FT_Raster_Params structure used to */ - /* store the rendering parameters. */ - /* */ - /* <Return> */ - /* Error code. 0~means success. */ - /* */ - /* <Note> */ - /* The exact format of the source image depends on the raster's glyph */ - /* format defined in its @FT_Raster_Funcs structure. It can be an */ - /* @FT_Outline or anything else in order to support a large array of */ - /* glyph formats. */ - /* */ - /* Note also that the render function can fail and return a */ - /* `FT_Err_Unimplemented_Feature' error code if the raster used does */ - /* not support direct composition. */ - /* */ - /* XXX: For now, the standard raster doesn't support direct */ - /* composition but this should change for the final release (see */ - /* the files `demos/src/ftgrays.c' and `demos/src/ftgrays2.c' */ - /* for examples of distinct implementations which support direct */ - /* composition). */ - /* */ - typedef int - (*FT_Raster_RenderFunc)( FT_Raster raster, - const FT_Raster_Params* params ); +/*************************************************************************/ +/* */ +/* <FuncType> */ +/* FT_Raster_RenderFunc */ +/* */ +/* <Description> */ +/* Invoke a given raster to scan-convert a given glyph image into a */ +/* target bitmap. */ +/* */ +/* <Input> */ +/* raster :: A handle to the raster object. */ +/* */ +/* params :: A pointer to an @FT_Raster_Params structure used to */ +/* store the rendering parameters. */ +/* */ +/* <Return> */ +/* Error code. 0~means success. */ +/* */ +/* <Note> */ +/* The exact format of the source image depends on the raster's glyph */ +/* format defined in its @FT_Raster_Funcs structure. It can be an */ +/* @FT_Outline or anything else in order to support a large array of */ +/* glyph formats. */ +/* */ +/* Note also that the render function can fail and return a */ +/* `FT_Err_Unimplemented_Feature' error code if the raster used does */ +/* not support direct composition. */ +/* */ +/* XXX: For now, the standard raster doesn't support direct */ +/* composition but this should change for the final release (see */ +/* the files `demos/src/ftgrays.c' and `demos/src/ftgrays2.c' */ +/* for examples of distinct implementations which support direct */ +/* composition). */ +/* */ +typedef int +(*FT_Raster_RenderFunc)( FT_Raster raster, + const FT_Raster_Params* params ); #define FT_Raster_Render_Func FT_Raster_RenderFunc - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Raster_Funcs */ - /* */ - /* <Description> */ - /* A structure used to describe a given raster class to the library. */ - /* */ - /* <Fields> */ - /* glyph_format :: The supported glyph format for this raster. */ - /* */ - /* raster_new :: The raster constructor. */ - /* */ - /* raster_reset :: Used to reset the render pool within the raster. */ - /* */ - /* raster_render :: A function to render a glyph into a given bitmap. */ - /* */ - /* raster_done :: The raster destructor. */ - /* */ - typedef struct FT_Raster_Funcs_ - { +/*************************************************************************/ +/* */ +/* <Struct> */ +/* FT_Raster_Funcs */ +/* */ +/* <Description> */ +/* A structure used to describe a given raster class to the library. */ +/* */ +/* <Fields> */ +/* glyph_format :: The supported glyph format for this raster. */ +/* */ +/* raster_new :: The raster constructor. */ +/* */ +/* raster_reset :: Used to reset the render pool within the raster. */ +/* */ +/* raster_render :: A function to render a glyph into a given bitmap. */ +/* */ +/* raster_done :: The raster destructor. */ +/* */ +typedef struct FT_Raster_Funcs_ { FT_Glyph_Format glyph_format; FT_Raster_NewFunc raster_new; FT_Raster_ResetFunc raster_reset; @@ -1294,10 +1283,10 @@ FT_BEGIN_HEADER FT_Raster_RenderFunc raster_render; FT_Raster_DoneFunc raster_done; - } FT_Raster_Funcs; +} FT_Raster_Funcs; - /* */ +/* */ FT_END_HEADER diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/ftincrem.h b/thirdparties/common/include/libfreetype/freetype2/freetype/ftincrem.h index aaf689f..01e4041 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/ftincrem.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/ftincrem.h @@ -31,319 +31,316 @@ FT_BEGIN_HEADER - /*************************************************************************** - * - * @section: - * incremental - * - * @title: - * Incremental Loading - * - * @abstract: - * Custom Glyph Loading. - * - * @description: - * This section contains various functions used to perform so-called - * `incremental' glyph loading. This is a mode where all glyphs loaded - * from a given @FT_Face are provided by the client application, - * - * Apart from that, all other tables are loaded normally from the font - * file. This mode is useful when FreeType is used within another - * engine, e.g., a PostScript Imaging Processor. - * - * To enable this mode, you must use @FT_Open_Face, passing an - * @FT_Parameter with the @FT_PARAM_TAG_INCREMENTAL tag and an - * @FT_Incremental_Interface value. See the comments for - * @FT_Incremental_InterfaceRec for an example. - * - */ - - - /*************************************************************************** - * - * @type: - * FT_Incremental - * - * @description: - * An opaque type describing a user-provided object used to implement - * `incremental' glyph loading within FreeType. This is used to support - * embedded fonts in certain environments (e.g., PostScript interpreters), - * where the glyph data isn't in the font file, or must be overridden by - * different values. - * - * @note: - * It is up to client applications to create and implement @FT_Incremental - * objects, as long as they provide implementations for the methods - * @FT_Incremental_GetGlyphDataFunc, @FT_Incremental_FreeGlyphDataFunc - * and @FT_Incremental_GetGlyphMetricsFunc. - * - * See the description of @FT_Incremental_InterfaceRec to understand how - * to use incremental objects with FreeType. - * - */ - typedef struct FT_IncrementalRec_* FT_Incremental; - - - /*************************************************************************** - * - * @struct: - * FT_Incremental_MetricsRec - * - * @description: - * A small structure used to contain the basic glyph metrics returned - * by the @FT_Incremental_GetGlyphMetricsFunc method. - * - * @fields: - * bearing_x :: - * Left bearing, in font units. - * - * bearing_y :: - * Top bearing, in font units. - * - * advance :: - * Horizontal component of glyph advance, in font units. - * - * advance_v :: - * Vertical component of glyph advance, in font units. - * - * @note: - * These correspond to horizontal or vertical metrics depending on the - * value of the `vertical' argument to the function - * @FT_Incremental_GetGlyphMetricsFunc. - * - */ - typedef struct FT_Incremental_MetricsRec_ - { +/*************************************************************************** + * + * @section: + * incremental + * + * @title: + * Incremental Loading + * + * @abstract: + * Custom Glyph Loading. + * + * @description: + * This section contains various functions used to perform so-called + * `incremental' glyph loading. This is a mode where all glyphs loaded + * from a given @FT_Face are provided by the client application, + * + * Apart from that, all other tables are loaded normally from the font + * file. This mode is useful when FreeType is used within another + * engine, e.g., a PostScript Imaging Processor. + * + * To enable this mode, you must use @FT_Open_Face, passing an + * @FT_Parameter with the @FT_PARAM_TAG_INCREMENTAL tag and an + * @FT_Incremental_Interface value. See the comments for + * @FT_Incremental_InterfaceRec for an example. + * + */ + + +/*************************************************************************** + * + * @type: + * FT_Incremental + * + * @description: + * An opaque type describing a user-provided object used to implement + * `incremental' glyph loading within FreeType. This is used to support + * embedded fonts in certain environments (e.g., PostScript interpreters), + * where the glyph data isn't in the font file, or must be overridden by + * different values. + * + * @note: + * It is up to client applications to create and implement @FT_Incremental + * objects, as long as they provide implementations for the methods + * @FT_Incremental_GetGlyphDataFunc, @FT_Incremental_FreeGlyphDataFunc + * and @FT_Incremental_GetGlyphMetricsFunc. + * + * See the description of @FT_Incremental_InterfaceRec to understand how + * to use incremental objects with FreeType. + * + */ +typedef struct FT_IncrementalRec_* FT_Incremental; + + +/*************************************************************************** + * + * @struct: + * FT_Incremental_MetricsRec + * + * @description: + * A small structure used to contain the basic glyph metrics returned + * by the @FT_Incremental_GetGlyphMetricsFunc method. + * + * @fields: + * bearing_x :: + * Left bearing, in font units. + * + * bearing_y :: + * Top bearing, in font units. + * + * advance :: + * Horizontal component of glyph advance, in font units. + * + * advance_v :: + * Vertical component of glyph advance, in font units. + * + * @note: + * These correspond to horizontal or vertical metrics depending on the + * value of the `vertical' argument to the function + * @FT_Incremental_GetGlyphMetricsFunc. + * + */ +typedef struct FT_Incremental_MetricsRec_ { FT_Long bearing_x; FT_Long bearing_y; FT_Long advance; FT_Long advance_v; /* since 2.3.12 */ - } FT_Incremental_MetricsRec; - - - /*************************************************************************** - * - * @struct: - * FT_Incremental_Metrics - * - * @description: - * A handle to an @FT_Incremental_MetricsRec structure. - * - */ - typedef struct FT_Incremental_MetricsRec_* FT_Incremental_Metrics; - - - /*************************************************************************** - * - * @type: - * FT_Incremental_GetGlyphDataFunc - * - * @description: - * A function called by FreeType to access a given glyph's data bytes - * during @FT_Load_Glyph or @FT_Load_Char if incremental loading is - * enabled. - * - * Note that the format of the glyph's data bytes depends on the font - * file format. For TrueType, it must correspond to the raw bytes within - * the `glyf' table. For PostScript formats, it must correspond to the - * *unencrypted* charstring bytes, without any `lenIV' header. It is - * undefined for any other format. - * - * @input: - * incremental :: - * Handle to an opaque @FT_Incremental handle provided by the client - * application. - * - * glyph_index :: - * Index of relevant glyph. - * - * @output: - * adata :: - * A structure describing the returned glyph data bytes (which will be - * accessed as a read-only byte block). - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * If this function returns successfully the method - * @FT_Incremental_FreeGlyphDataFunc will be called later to release - * the data bytes. - * - * Nested calls to @FT_Incremental_GetGlyphDataFunc can happen for - * compound glyphs. - * - */ - typedef FT_Error - (*FT_Incremental_GetGlyphDataFunc)( FT_Incremental incremental, - FT_UInt glyph_index, - FT_Data* adata ); - - - /*************************************************************************** - * - * @type: - * FT_Incremental_FreeGlyphDataFunc - * - * @description: - * A function used to release the glyph data bytes returned by a - * successful call to @FT_Incremental_GetGlyphDataFunc. - * - * @input: - * incremental :: - * A handle to an opaque @FT_Incremental handle provided by the client - * application. - * - * data :: - * A structure describing the glyph data bytes (which will be accessed - * as a read-only byte block). - * - */ - typedef void - (*FT_Incremental_FreeGlyphDataFunc)( FT_Incremental incremental, - FT_Data* data ); - - - /*************************************************************************** - * - * @type: - * FT_Incremental_GetGlyphMetricsFunc - * - * @description: - * A function used to retrieve the basic metrics of a given glyph index - * before accessing its data. This is necessary because, in certain - * formats like TrueType, the metrics are stored in a different place from - * the glyph images proper. - * - * @input: - * incremental :: - * A handle to an opaque @FT_Incremental handle provided by the client - * application. - * - * glyph_index :: - * Index of relevant glyph. - * - * vertical :: - * If true, return vertical metrics. - * - * ametrics :: - * This parameter is used for both input and output. - * The original glyph metrics, if any, in font units. If metrics are - * not available all the values must be set to zero. - * - * @output: - * ametrics :: - * The replacement glyph metrics in font units. - * - */ - typedef FT_Error - (*FT_Incremental_GetGlyphMetricsFunc) - ( FT_Incremental incremental, - FT_UInt glyph_index, - FT_Bool vertical, - FT_Incremental_MetricsRec *ametrics ); - - - /************************************************************************** - * - * @struct: - * FT_Incremental_FuncsRec - * - * @description: - * A table of functions for accessing fonts that load data - * incrementally. Used in @FT_Incremental_InterfaceRec. - * - * @fields: - * get_glyph_data :: - * The function to get glyph data. Must not be null. - * - * free_glyph_data :: - * The function to release glyph data. Must not be null. - * - * get_glyph_metrics :: - * The function to get glyph metrics. May be null if the font does - * not provide overriding glyph metrics. - * - */ - typedef struct FT_Incremental_FuncsRec_ - { +} FT_Incremental_MetricsRec; + + +/*************************************************************************** + * + * @struct: + * FT_Incremental_Metrics + * + * @description: + * A handle to an @FT_Incremental_MetricsRec structure. + * + */ +typedef struct FT_Incremental_MetricsRec_* FT_Incremental_Metrics; + + +/*************************************************************************** + * + * @type: + * FT_Incremental_GetGlyphDataFunc + * + * @description: + * A function called by FreeType to access a given glyph's data bytes + * during @FT_Load_Glyph or @FT_Load_Char if incremental loading is + * enabled. + * + * Note that the format of the glyph's data bytes depends on the font + * file format. For TrueType, it must correspond to the raw bytes within + * the `glyf' table. For PostScript formats, it must correspond to the + * *unencrypted* charstring bytes, without any `lenIV' header. It is + * undefined for any other format. + * + * @input: + * incremental :: + * Handle to an opaque @FT_Incremental handle provided by the client + * application. + * + * glyph_index :: + * Index of relevant glyph. + * + * @output: + * adata :: + * A structure describing the returned glyph data bytes (which will be + * accessed as a read-only byte block). + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If this function returns successfully the method + * @FT_Incremental_FreeGlyphDataFunc will be called later to release + * the data bytes. + * + * Nested calls to @FT_Incremental_GetGlyphDataFunc can happen for + * compound glyphs. + * + */ +typedef FT_Error +(*FT_Incremental_GetGlyphDataFunc)( FT_Incremental incremental, + FT_UInt glyph_index, + FT_Data* adata ); + + +/*************************************************************************** + * + * @type: + * FT_Incremental_FreeGlyphDataFunc + * + * @description: + * A function used to release the glyph data bytes returned by a + * successful call to @FT_Incremental_GetGlyphDataFunc. + * + * @input: + * incremental :: + * A handle to an opaque @FT_Incremental handle provided by the client + * application. + * + * data :: + * A structure describing the glyph data bytes (which will be accessed + * as a read-only byte block). + * + */ +typedef void +(*FT_Incremental_FreeGlyphDataFunc)( FT_Incremental incremental, + FT_Data* data ); + + +/*************************************************************************** + * + * @type: + * FT_Incremental_GetGlyphMetricsFunc + * + * @description: + * A function used to retrieve the basic metrics of a given glyph index + * before accessing its data. This is necessary because, in certain + * formats like TrueType, the metrics are stored in a different place from + * the glyph images proper. + * + * @input: + * incremental :: + * A handle to an opaque @FT_Incremental handle provided by the client + * application. + * + * glyph_index :: + * Index of relevant glyph. + * + * vertical :: + * If true, return vertical metrics. + * + * ametrics :: + * This parameter is used for both input and output. + * The original glyph metrics, if any, in font units. If metrics are + * not available all the values must be set to zero. + * + * @output: + * ametrics :: + * The replacement glyph metrics in font units. + * + */ +typedef FT_Error +(*FT_Incremental_GetGlyphMetricsFunc) +( FT_Incremental incremental, + FT_UInt glyph_index, + FT_Bool vertical, + FT_Incremental_MetricsRec *ametrics ); + + +/************************************************************************** + * + * @struct: + * FT_Incremental_FuncsRec + * + * @description: + * A table of functions for accessing fonts that load data + * incrementally. Used in @FT_Incremental_InterfaceRec. + * + * @fields: + * get_glyph_data :: + * The function to get glyph data. Must not be null. + * + * free_glyph_data :: + * The function to release glyph data. Must not be null. + * + * get_glyph_metrics :: + * The function to get glyph metrics. May be null if the font does + * not provide overriding glyph metrics. + * + */ +typedef struct FT_Incremental_FuncsRec_ { FT_Incremental_GetGlyphDataFunc get_glyph_data; FT_Incremental_FreeGlyphDataFunc free_glyph_data; FT_Incremental_GetGlyphMetricsFunc get_glyph_metrics; - } FT_Incremental_FuncsRec; - - - /*************************************************************************** - * - * @struct: - * FT_Incremental_InterfaceRec - * - * @description: - * A structure to be used with @FT_Open_Face to indicate that the user - * wants to support incremental glyph loading. You should use it with - * @FT_PARAM_TAG_INCREMENTAL as in the following example: - * - * { - * FT_Incremental_InterfaceRec inc_int; - * FT_Parameter parameter; - * FT_Open_Args open_args; - * - * - * // set up incremental descriptor - * inc_int.funcs = my_funcs; - * inc_int.object = my_object; - * - * // set up optional parameter - * parameter.tag = FT_PARAM_TAG_INCREMENTAL; - * parameter.data = &inc_int; - * - * // set up FT_Open_Args structure - * open_args.flags = FT_OPEN_PATHNAME | FT_OPEN_PARAMS; - * open_args.pathname = my_font_pathname; - * open_args.num_params = 1; - * open_args.params = ¶meter; // we use one optional argument - * - * // open the font - * error = FT_Open_Face( library, &open_args, index, &face ); - * ... - * } - * - */ - typedef struct FT_Incremental_InterfaceRec_ - { +} FT_Incremental_FuncsRec; + + +/*************************************************************************** + * + * @struct: + * FT_Incremental_InterfaceRec + * + * @description: + * A structure to be used with @FT_Open_Face to indicate that the user + * wants to support incremental glyph loading. You should use it with + * @FT_PARAM_TAG_INCREMENTAL as in the following example: + * + * { + * FT_Incremental_InterfaceRec inc_int; + * FT_Parameter parameter; + * FT_Open_Args open_args; + * + * + * // set up incremental descriptor + * inc_int.funcs = my_funcs; + * inc_int.object = my_object; + * + * // set up optional parameter + * parameter.tag = FT_PARAM_TAG_INCREMENTAL; + * parameter.data = &inc_int; + * + * // set up FT_Open_Args structure + * open_args.flags = FT_OPEN_PATHNAME | FT_OPEN_PARAMS; + * open_args.pathname = my_font_pathname; + * open_args.num_params = 1; + * open_args.params = ¶meter; // we use one optional argument + * + * // open the font + * error = FT_Open_Face( library, &open_args, index, &face ); + * ... + * } + * + */ +typedef struct FT_Incremental_InterfaceRec_ { const FT_Incremental_FuncsRec* funcs; FT_Incremental object; - } FT_Incremental_InterfaceRec; - - - /*************************************************************************** - * - * @type: - * FT_Incremental_Interface - * - * @description: - * A pointer to an @FT_Incremental_InterfaceRec structure. - * - */ - typedef FT_Incremental_InterfaceRec* FT_Incremental_Interface; - - - /*************************************************************************** - * - * @constant: - * FT_PARAM_TAG_INCREMENTAL - * - * @description: - * A constant used as the tag of @FT_Parameter structures to indicate - * an incremental loading object to be used by FreeType. - * - */ +} FT_Incremental_InterfaceRec; + + +/*************************************************************************** + * + * @type: + * FT_Incremental_Interface + * + * @description: + * A pointer to an @FT_Incremental_InterfaceRec structure. + * + */ +typedef FT_Incremental_InterfaceRec* FT_Incremental_Interface; + + +/*************************************************************************** + * + * @constant: + * FT_PARAM_TAG_INCREMENTAL + * + * @description: + * A constant used as the tag of @FT_Parameter structures to indicate + * an incremental loading object to be used by FreeType. + * + */ #define FT_PARAM_TAG_INCREMENTAL FT_MAKE_TAG( 'i', 'n', 'c', 'r' ) - /* */ +/* */ FT_END_HEADER diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/ftlcdfil.h b/thirdparties/common/include/libfreetype/freetype2/freetype/ftlcdfil.h index 8b253f1..68e34f9 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/ftlcdfil.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/ftlcdfil.h @@ -32,105 +32,104 @@ FT_BEGIN_HEADER - /*************************************************************************** - * - * @section: - * lcd_filtering - * - * @title: - * LCD Filtering - * - * @abstract: - * Reduce color fringes of LCD-optimized bitmaps. - * - * @description: - * The @FT_Library_SetLcdFilter API can be used to specify a low-pass - * filter which is then applied to LCD-optimized bitmaps generated - * through @FT_Render_Glyph. This is useful to reduce color fringes - * which would occur with unfiltered rendering. - * - * Note that no filter is active by default, and that this function is - * *not* implemented in default builds of the library. You need to - * #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING in your `ftoption.h' file - * in order to activate it. - * - * FreeType generates alpha coverage maps, which are linear by nature. - * For instance, the value 0x80 in bitmap representation means that - * (within numerical precision) 0x80/0xff fraction of that pixel is - * covered by the glyph's outline. The blending function for placing - * text over a background is - * - * { - * dst = alpha * src + (1 - alpha) * dst , - * } - * - * which is known as OVER. However, when calculating the output of the - * OVER operator, the source colors should first be transformed to a - * linear color space, then alpha blended in that space, and transformed - * back to the output color space. - * - * When linear light blending is used, the default FIR5 filtering - * weights (as given by FT_LCD_FILTER_DEFAULT) are no longer optimal, as - * they have been designed for black on white rendering while lacking - * gamma correction. To preserve color neutrality, weights for a FIR5 - * filter should be chosen according to two free parameters `a' and `c', - * and the FIR weights should be - * - * { - * [a - c, a + c, 2 * a, a + c, a - c] . - * } - * - * This formula generates equal weights for all the color primaries - * across the filter kernel, which makes it colorless. One suggested - * set of weights is - * - * { - * [0x10, 0x50, 0x60, 0x50, 0x10] , - * } - * - * where `a' has value 0x30 and `b' value 0x20. The weights in filter - * may have a sum larger than 0x100, which increases coloration slightly - * but also improves contrast. - */ - - - /**************************************************************************** - * - * @enum: - * FT_LcdFilter - * - * @description: - * A list of values to identify various types of LCD filters. - * - * @values: - * FT_LCD_FILTER_NONE :: - * Do not perform filtering. When used with subpixel rendering, this - * results in sometimes severe color fringes. - * - * FT_LCD_FILTER_DEFAULT :: - * The default filter reduces color fringes considerably, at the cost - * of a slight blurriness in the output. - * - * FT_LCD_FILTER_LIGHT :: - * The light filter is a variant that produces less blurriness at the - * cost of slightly more color fringes than the default one. It might - * be better, depending on taste, your monitor, or your personal vision. - * - * FT_LCD_FILTER_LEGACY :: - * This filter corresponds to the original libXft color filter. It - * provides high contrast output but can exhibit really bad color - * fringes if glyphs are not extremely well hinted to the pixel grid. - * In other words, it only works well if the TrueType bytecode - * interpreter is enabled *and* high-quality hinted fonts are used. - * - * This filter is only provided for comparison purposes, and might be - * disabled or stay unsupported in the future. - * - * @since: - * 2.3.0 - */ - typedef enum FT_LcdFilter_ - { +/*************************************************************************** + * + * @section: + * lcd_filtering + * + * @title: + * LCD Filtering + * + * @abstract: + * Reduce color fringes of LCD-optimized bitmaps. + * + * @description: + * The @FT_Library_SetLcdFilter API can be used to specify a low-pass + * filter which is then applied to LCD-optimized bitmaps generated + * through @FT_Render_Glyph. This is useful to reduce color fringes + * which would occur with unfiltered rendering. + * + * Note that no filter is active by default, and that this function is + * *not* implemented in default builds of the library. You need to + * #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING in your `ftoption.h' file + * in order to activate it. + * + * FreeType generates alpha coverage maps, which are linear by nature. + * For instance, the value 0x80 in bitmap representation means that + * (within numerical precision) 0x80/0xff fraction of that pixel is + * covered by the glyph's outline. The blending function for placing + * text over a background is + * + * { + * dst = alpha * src + (1 - alpha) * dst , + * } + * + * which is known as OVER. However, when calculating the output of the + * OVER operator, the source colors should first be transformed to a + * linear color space, then alpha blended in that space, and transformed + * back to the output color space. + * + * When linear light blending is used, the default FIR5 filtering + * weights (as given by FT_LCD_FILTER_DEFAULT) are no longer optimal, as + * they have been designed for black on white rendering while lacking + * gamma correction. To preserve color neutrality, weights for a FIR5 + * filter should be chosen according to two free parameters `a' and `c', + * and the FIR weights should be + * + * { + * [a - c, a + c, 2 * a, a + c, a - c] . + * } + * + * This formula generates equal weights for all the color primaries + * across the filter kernel, which makes it colorless. One suggested + * set of weights is + * + * { + * [0x10, 0x50, 0x60, 0x50, 0x10] , + * } + * + * where `a' has value 0x30 and `b' value 0x20. The weights in filter + * may have a sum larger than 0x100, which increases coloration slightly + * but also improves contrast. + */ + + +/**************************************************************************** + * + * @enum: + * FT_LcdFilter + * + * @description: + * A list of values to identify various types of LCD filters. + * + * @values: + * FT_LCD_FILTER_NONE :: + * Do not perform filtering. When used with subpixel rendering, this + * results in sometimes severe color fringes. + * + * FT_LCD_FILTER_DEFAULT :: + * The default filter reduces color fringes considerably, at the cost + * of a slight blurriness in the output. + * + * FT_LCD_FILTER_LIGHT :: + * The light filter is a variant that produces less blurriness at the + * cost of slightly more color fringes than the default one. It might + * be better, depending on taste, your monitor, or your personal vision. + * + * FT_LCD_FILTER_LEGACY :: + * This filter corresponds to the original libXft color filter. It + * provides high contrast output but can exhibit really bad color + * fringes if glyphs are not extremely well hinted to the pixel grid. + * In other words, it only works well if the TrueType bytecode + * interpreter is enabled *and* high-quality hinted fonts are used. + * + * This filter is only provided for comparison purposes, and might be + * disabled or stay unsupported in the future. + * + * @since: + * 2.3.0 + */ +typedef enum FT_LcdFilter_ { FT_LCD_FILTER_NONE = 0, FT_LCD_FILTER_DEFAULT = 1, FT_LCD_FILTER_LIGHT = 2, @@ -138,109 +137,109 @@ FT_BEGIN_HEADER FT_LCD_FILTER_MAX /* do not remove */ - } FT_LcdFilter; - - - /************************************************************************** - * - * @func: - * FT_Library_SetLcdFilter - * - * @description: - * This function is used to apply color filtering to LCD decimated - * bitmaps, like the ones used when calling @FT_Render_Glyph with - * @FT_RENDER_MODE_LCD or @FT_RENDER_MODE_LCD_V. - * - * @input: - * library :: - * A handle to the target library instance. - * - * filter :: - * The filter type. - * - * You can use @FT_LCD_FILTER_NONE here to disable this feature, or - * @FT_LCD_FILTER_DEFAULT to use a default filter that should work - * well on most LCD screens. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * This feature is always disabled by default. Clients must make an - * explicit call to this function with a `filter' value other than - * @FT_LCD_FILTER_NONE in order to enable it. - * - * Due to *PATENTS* covering subpixel rendering, this function doesn't - * do anything except returning `FT_Err_Unimplemented_Feature' if the - * configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not - * defined in your build of the library, which should correspond to all - * default builds of FreeType. - * - * The filter affects glyph bitmaps rendered through @FT_Render_Glyph, - * @FT_Outline_Get_Bitmap, @FT_Load_Glyph, and @FT_Load_Char. - * - * It does _not_ affect the output of @FT_Outline_Render and - * @FT_Outline_Get_Bitmap. - * - * If this feature is activated, the dimensions of LCD glyph bitmaps are - * either larger or taller than the dimensions of the corresponding - * outline with regards to the pixel grid. For example, for - * @FT_RENDER_MODE_LCD, the filter adds up to 3~pixels to the left, and - * up to 3~pixels to the right. - * - * The bitmap offset values are adjusted correctly, so clients shouldn't - * need to modify their layout and glyph positioning code when enabling - * the filter. - * - * @since: - * 2.3.0 - */ - FT_EXPORT( FT_Error ) - FT_Library_SetLcdFilter( FT_Library library, - FT_LcdFilter filter ); - - - /************************************************************************** - * - * @func: - * FT_Library_SetLcdFilterWeights - * - * @description: - * Use this function to override the filter weights selected by - * @FT_Library_SetLcdFilter. By default, FreeType uses the quintuple - * (0x00, 0x55, 0x56, 0x55, 0x00) for FT_LCD_FILTER_LIGHT, and (0x10, - * 0x40, 0x70, 0x40, 0x10) for FT_LCD_FILTER_DEFAULT and - * FT_LCD_FILTER_LEGACY. - * - * @input: - * library :: - * A handle to the target library instance. - * - * weights :: - * A pointer to an array; the function copies the first five bytes and - * uses them to specify the filter weights. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * Due to *PATENTS* covering subpixel rendering, this function doesn't - * do anything except returning `FT_Err_Unimplemented_Feature' if the - * configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not - * defined in your build of the library, which should correspond to all - * default builds of FreeType. - * - * This function must be called after @FT_Library_SetLcdFilter to have - * any effect. - * - * @since: - * 2.4.0 - */ - FT_EXPORT( FT_Error ) - FT_Library_SetLcdFilterWeights( FT_Library library, - unsigned char *weights ); - - /* */ +} FT_LcdFilter; + + +/************************************************************************** + * + * @func: + * FT_Library_SetLcdFilter + * + * @description: + * This function is used to apply color filtering to LCD decimated + * bitmaps, like the ones used when calling @FT_Render_Glyph with + * @FT_RENDER_MODE_LCD or @FT_RENDER_MODE_LCD_V. + * + * @input: + * library :: + * A handle to the target library instance. + * + * filter :: + * The filter type. + * + * You can use @FT_LCD_FILTER_NONE here to disable this feature, or + * @FT_LCD_FILTER_DEFAULT to use a default filter that should work + * well on most LCD screens. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This feature is always disabled by default. Clients must make an + * explicit call to this function with a `filter' value other than + * @FT_LCD_FILTER_NONE in order to enable it. + * + * Due to *PATENTS* covering subpixel rendering, this function doesn't + * do anything except returning `FT_Err_Unimplemented_Feature' if the + * configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not + * defined in your build of the library, which should correspond to all + * default builds of FreeType. + * + * The filter affects glyph bitmaps rendered through @FT_Render_Glyph, + * @FT_Outline_Get_Bitmap, @FT_Load_Glyph, and @FT_Load_Char. + * + * It does _not_ affect the output of @FT_Outline_Render and + * @FT_Outline_Get_Bitmap. + * + * If this feature is activated, the dimensions of LCD glyph bitmaps are + * either larger or taller than the dimensions of the corresponding + * outline with regards to the pixel grid. For example, for + * @FT_RENDER_MODE_LCD, the filter adds up to 3~pixels to the left, and + * up to 3~pixels to the right. + * + * The bitmap offset values are adjusted correctly, so clients shouldn't + * need to modify their layout and glyph positioning code when enabling + * the filter. + * + * @since: + * 2.3.0 + */ +FT_EXPORT( FT_Error ) +FT_Library_SetLcdFilter( FT_Library library, + FT_LcdFilter filter ); + + +/************************************************************************** + * + * @func: + * FT_Library_SetLcdFilterWeights + * + * @description: + * Use this function to override the filter weights selected by + * @FT_Library_SetLcdFilter. By default, FreeType uses the quintuple + * (0x00, 0x55, 0x56, 0x55, 0x00) for FT_LCD_FILTER_LIGHT, and (0x10, + * 0x40, 0x70, 0x40, 0x10) for FT_LCD_FILTER_DEFAULT and + * FT_LCD_FILTER_LEGACY. + * + * @input: + * library :: + * A handle to the target library instance. + * + * weights :: + * A pointer to an array; the function copies the first five bytes and + * uses them to specify the filter weights. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * Due to *PATENTS* covering subpixel rendering, this function doesn't + * do anything except returning `FT_Err_Unimplemented_Feature' if the + * configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not + * defined in your build of the library, which should correspond to all + * default builds of FreeType. + * + * This function must be called after @FT_Library_SetLcdFilter to have + * any effect. + * + * @since: + * 2.4.0 + */ +FT_EXPORT( FT_Error ) +FT_Library_SetLcdFilterWeights( FT_Library library, + unsigned char *weights ); + +/* */ FT_END_HEADER diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/ftlist.h b/thirdparties/common/include/libfreetype/freetype2/freetype/ftlist.h index bb6f7f1..44fcecd 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/ftlist.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/ftlist.h @@ -16,12 +16,12 @@ /***************************************************************************/ - /*************************************************************************/ - /* */ - /* This file implements functions relative to list processing. Its */ - /* data structures are defined in `freetype.h'. */ - /* */ - /*************************************************************************/ +/*************************************************************************/ +/* */ +/* This file implements functions relative to list processing. Its */ +/* data structures are defined in `freetype.h'. */ +/* */ +/*************************************************************************/ #ifndef __FTLIST_H__ @@ -41,232 +41,232 @@ FT_BEGIN_HEADER - /*************************************************************************/ - /* */ - /* <Section> */ - /* list_processing */ - /* */ - /* <Title> */ - /* List Processing */ - /* */ - /* <Abstract> */ - /* Simple management of lists. */ - /* */ - /* <Description> */ - /* This section contains various definitions related to list */ - /* processing using doubly-linked nodes. */ - /* */ - /* <Order> */ - /* FT_List */ - /* FT_ListNode */ - /* FT_ListRec */ - /* FT_ListNodeRec */ - /* */ - /* FT_List_Add */ - /* FT_List_Insert */ - /* FT_List_Find */ - /* FT_List_Remove */ - /* FT_List_Up */ - /* FT_List_Iterate */ - /* FT_List_Iterator */ - /* FT_List_Finalize */ - /* FT_List_Destructor */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_List_Find */ - /* */ - /* <Description> */ - /* Find the list node for a given listed object. */ - /* */ - /* <Input> */ - /* list :: A pointer to the parent list. */ - /* data :: The address of the listed object. */ - /* */ - /* <Return> */ - /* List node. NULL if it wasn't found. */ - /* */ - FT_EXPORT( FT_ListNode ) - FT_List_Find( FT_List list, - void* data ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_List_Add */ - /* */ - /* <Description> */ - /* Append an element to the end of a list. */ - /* */ - /* <InOut> */ - /* list :: A pointer to the parent list. */ - /* node :: The node to append. */ - /* */ - FT_EXPORT( void ) - FT_List_Add( FT_List list, - FT_ListNode node ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_List_Insert */ - /* */ - /* <Description> */ - /* Insert an element at the head of a list. */ - /* */ - /* <InOut> */ - /* list :: A pointer to parent list. */ - /* node :: The node to insert. */ - /* */ - FT_EXPORT( void ) - FT_List_Insert( FT_List list, - FT_ListNode node ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_List_Remove */ - /* */ - /* <Description> */ - /* Remove a node from a list. This function doesn't check whether */ - /* the node is in the list! */ - /* */ - /* <Input> */ - /* node :: The node to remove. */ - /* */ - /* <InOut> */ - /* list :: A pointer to the parent list. */ - /* */ - FT_EXPORT( void ) - FT_List_Remove( FT_List list, - FT_ListNode node ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_List_Up */ - /* */ - /* <Description> */ - /* Move a node to the head/top of a list. Used to maintain LRU */ - /* lists. */ - /* */ - /* <InOut> */ - /* list :: A pointer to the parent list. */ - /* node :: The node to move. */ - /* */ - FT_EXPORT( void ) - FT_List_Up( FT_List list, - FT_ListNode node ); - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_List_Iterator */ - /* */ - /* <Description> */ - /* An FT_List iterator function which is called during a list parse */ - /* by @FT_List_Iterate. */ - /* */ - /* <Input> */ - /* node :: The current iteration list node. */ - /* */ - /* user :: A typeless pointer passed to @FT_List_Iterate. */ - /* Can be used to point to the iteration's state. */ - /* */ - typedef FT_Error - (*FT_List_Iterator)( FT_ListNode node, - void* user ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_List_Iterate */ - /* */ - /* <Description> */ - /* Parse a list and calls a given iterator function on each element. */ - /* Note that parsing is stopped as soon as one of the iterator calls */ - /* returns a non-zero value. */ - /* */ - /* <Input> */ - /* list :: A handle to the list. */ - /* iterator :: An iterator function, called on each node of the list. */ - /* user :: A user-supplied field which is passed as the second */ - /* argument to the iterator. */ - /* */ - /* <Return> */ - /* The result (a FreeType error code) of the last iterator call. */ - /* */ - FT_EXPORT( FT_Error ) - FT_List_Iterate( FT_List list, - FT_List_Iterator iterator, - void* user ); - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_List_Destructor */ - /* */ - /* <Description> */ - /* An @FT_List iterator function which is called during a list */ - /* finalization by @FT_List_Finalize to destroy all elements in a */ - /* given list. */ - /* */ - /* <Input> */ - /* system :: The current system object. */ - /* */ - /* data :: The current object to destroy. */ - /* */ - /* user :: A typeless pointer passed to @FT_List_Iterate. It can */ - /* be used to point to the iteration's state. */ - /* */ - typedef void - (*FT_List_Destructor)( FT_Memory memory, - void* data, - void* user ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_List_Finalize */ - /* */ - /* <Description> */ - /* Destroy all elements in the list as well as the list itself. */ - /* */ - /* <Input> */ - /* list :: A handle to the list. */ - /* */ - /* destroy :: A list destructor that will be applied to each element */ - /* of the list. */ - /* */ - /* memory :: The current memory object which handles deallocation. */ - /* */ - /* user :: A user-supplied field which is passed as the last */ - /* argument to the destructor. */ - /* */ - /* <Note> */ - /* This function expects that all nodes added by @FT_List_Add or */ - /* @FT_List_Insert have been dynamically allocated. */ - /* */ - FT_EXPORT( void ) - FT_List_Finalize( FT_List list, - FT_List_Destructor destroy, - FT_Memory memory, - void* user ); - - - /* */ +/*************************************************************************/ +/* */ +/* <Section> */ +/* list_processing */ +/* */ +/* <Title> */ +/* List Processing */ +/* */ +/* <Abstract> */ +/* Simple management of lists. */ +/* */ +/* <Description> */ +/* This section contains various definitions related to list */ +/* processing using doubly-linked nodes. */ +/* */ +/* <Order> */ +/* FT_List */ +/* FT_ListNode */ +/* FT_ListRec */ +/* FT_ListNodeRec */ +/* */ +/* FT_List_Add */ +/* FT_List_Insert */ +/* FT_List_Find */ +/* FT_List_Remove */ +/* FT_List_Up */ +/* FT_List_Iterate */ +/* FT_List_Iterator */ +/* FT_List_Finalize */ +/* FT_List_Destructor */ +/* */ +/*************************************************************************/ + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_List_Find */ +/* */ +/* <Description> */ +/* Find the list node for a given listed object. */ +/* */ +/* <Input> */ +/* list :: A pointer to the parent list. */ +/* data :: The address of the listed object. */ +/* */ +/* <Return> */ +/* List node. NULL if it wasn't found. */ +/* */ +FT_EXPORT( FT_ListNode ) +FT_List_Find( FT_List list, + void* data ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_List_Add */ +/* */ +/* <Description> */ +/* Append an element to the end of a list. */ +/* */ +/* <InOut> */ +/* list :: A pointer to the parent list. */ +/* node :: The node to append. */ +/* */ +FT_EXPORT( void ) +FT_List_Add( FT_List list, + FT_ListNode node ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_List_Insert */ +/* */ +/* <Description> */ +/* Insert an element at the head of a list. */ +/* */ +/* <InOut> */ +/* list :: A pointer to parent list. */ +/* node :: The node to insert. */ +/* */ +FT_EXPORT( void ) +FT_List_Insert( FT_List list, + FT_ListNode node ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_List_Remove */ +/* */ +/* <Description> */ +/* Remove a node from a list. This function doesn't check whether */ +/* the node is in the list! */ +/* */ +/* <Input> */ +/* node :: The node to remove. */ +/* */ +/* <InOut> */ +/* list :: A pointer to the parent list. */ +/* */ +FT_EXPORT( void ) +FT_List_Remove( FT_List list, + FT_ListNode node ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_List_Up */ +/* */ +/* <Description> */ +/* Move a node to the head/top of a list. Used to maintain LRU */ +/* lists. */ +/* */ +/* <InOut> */ +/* list :: A pointer to the parent list. */ +/* node :: The node to move. */ +/* */ +FT_EXPORT( void ) +FT_List_Up( FT_List list, + FT_ListNode node ); + + +/*************************************************************************/ +/* */ +/* <FuncType> */ +/* FT_List_Iterator */ +/* */ +/* <Description> */ +/* An FT_List iterator function which is called during a list parse */ +/* by @FT_List_Iterate. */ +/* */ +/* <Input> */ +/* node :: The current iteration list node. */ +/* */ +/* user :: A typeless pointer passed to @FT_List_Iterate. */ +/* Can be used to point to the iteration's state. */ +/* */ +typedef FT_Error +(*FT_List_Iterator)( FT_ListNode node, + void* user ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_List_Iterate */ +/* */ +/* <Description> */ +/* Parse a list and calls a given iterator function on each element. */ +/* Note that parsing is stopped as soon as one of the iterator calls */ +/* returns a non-zero value. */ +/* */ +/* <Input> */ +/* list :: A handle to the list. */ +/* iterator :: An iterator function, called on each node of the list. */ +/* user :: A user-supplied field which is passed as the second */ +/* argument to the iterator. */ +/* */ +/* <Return> */ +/* The result (a FreeType error code) of the last iterator call. */ +/* */ +FT_EXPORT( FT_Error ) +FT_List_Iterate( FT_List list, + FT_List_Iterator iterator, + void* user ); + + +/*************************************************************************/ +/* */ +/* <FuncType> */ +/* FT_List_Destructor */ +/* */ +/* <Description> */ +/* An @FT_List iterator function which is called during a list */ +/* finalization by @FT_List_Finalize to destroy all elements in a */ +/* given list. */ +/* */ +/* <Input> */ +/* system :: The current system object. */ +/* */ +/* data :: The current object to destroy. */ +/* */ +/* user :: A typeless pointer passed to @FT_List_Iterate. It can */ +/* be used to point to the iteration's state. */ +/* */ +typedef void +(*FT_List_Destructor)( FT_Memory memory, + void* data, + void* user ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_List_Finalize */ +/* */ +/* <Description> */ +/* Destroy all elements in the list as well as the list itself. */ +/* */ +/* <Input> */ +/* list :: A handle to the list. */ +/* */ +/* destroy :: A list destructor that will be applied to each element */ +/* of the list. */ +/* */ +/* memory :: The current memory object which handles deallocation. */ +/* */ +/* user :: A user-supplied field which is passed as the last */ +/* argument to the destructor. */ +/* */ +/* <Note> */ +/* This function expects that all nodes added by @FT_List_Add or */ +/* @FT_List_Insert have been dynamically allocated. */ +/* */ +FT_EXPORT( void ) +FT_List_Finalize( FT_List list, + FT_List_Destructor destroy, + FT_Memory memory, + void* user ); + + +/* */ FT_END_HEADER diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/ftlzw.h b/thirdparties/common/include/libfreetype/freetype2/freetype/ftlzw.h index 00d4016..2a7ecb2 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/ftlzw.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/ftlzw.h @@ -31,64 +31,64 @@ FT_BEGIN_HEADER - /*************************************************************************/ - /* */ - /* <Section> */ - /* lzw */ - /* */ - /* <Title> */ - /* LZW Streams */ - /* */ - /* <Abstract> */ - /* Using LZW-compressed font files. */ - /* */ - /* <Description> */ - /* This section contains the declaration of LZW-specific functions. */ - /* */ - /*************************************************************************/ +/*************************************************************************/ +/* */ +/* <Section> */ +/* lzw */ +/* */ +/* <Title> */ +/* LZW Streams */ +/* */ +/* <Abstract> */ +/* Using LZW-compressed font files. */ +/* */ +/* <Description> */ +/* This section contains the declaration of LZW-specific functions. */ +/* */ +/*************************************************************************/ - /************************************************************************ - * - * @function: - * FT_Stream_OpenLZW - * - * @description: - * Open a new stream to parse LZW-compressed font files. This is - * mainly used to support the compressed `*.pcf.Z' fonts that come - * with XFree86. - * - * @input: - * stream :: The target embedding stream. - * - * source :: The source stream. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * The source stream must be opened _before_ calling this function. - * - * Calling the internal function `FT_Stream_Close' on the new stream will - * *not* call `FT_Stream_Close' on the source stream. None of the stream - * objects will be released to the heap. - * - * The stream implementation is very basic and resets the decompression - * process each time seeking backwards is needed within the stream - * - * In certain builds of the library, LZW compression recognition is - * automatically handled when calling @FT_New_Face or @FT_Open_Face. - * This means that if no font driver is capable of handling the raw - * compressed file, the library will try to open a LZW stream from it - * and re-open the face with it. - * - * This function may return `FT_Err_Unimplemented_Feature' if your build - * of FreeType was not compiled with LZW support. - */ - FT_EXPORT( FT_Error ) - FT_Stream_OpenLZW( FT_Stream stream, - FT_Stream source ); +/************************************************************************ + * + * @function: + * FT_Stream_OpenLZW + * + * @description: + * Open a new stream to parse LZW-compressed font files. This is + * mainly used to support the compressed `*.pcf.Z' fonts that come + * with XFree86. + * + * @input: + * stream :: The target embedding stream. + * + * source :: The source stream. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The source stream must be opened _before_ calling this function. + * + * Calling the internal function `FT_Stream_Close' on the new stream will + * *not* call `FT_Stream_Close' on the source stream. None of the stream + * objects will be released to the heap. + * + * The stream implementation is very basic and resets the decompression + * process each time seeking backwards is needed within the stream + * + * In certain builds of the library, LZW compression recognition is + * automatically handled when calling @FT_New_Face or @FT_Open_Face. + * This means that if no font driver is capable of handling the raw + * compressed file, the library will try to open a LZW stream from it + * and re-open the face with it. + * + * This function may return `FT_Err_Unimplemented_Feature' if your build + * of FreeType was not compiled with LZW support. + */ +FT_EXPORT( FT_Error ) +FT_Stream_OpenLZW( FT_Stream stream, + FT_Stream source ); - /* */ +/* */ FT_END_HEADER diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/ftmac.h b/thirdparties/common/include/libfreetype/freetype2/freetype/ftmac.h index ab5bab5..56a658d 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/ftmac.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/ftmac.h @@ -46,223 +46,223 @@ FT_BEGIN_HEADER #endif - /*************************************************************************/ - /* */ - /* <Section> */ - /* mac_specific */ - /* */ - /* <Title> */ - /* Mac Specific Interface */ - /* */ - /* <Abstract> */ - /* Only available on the Macintosh. */ - /* */ - /* <Description> */ - /* The following definitions are only available if FreeType is */ - /* compiled on a Macintosh. */ - /* */ - /*************************************************************************/ +/*************************************************************************/ +/* */ +/* <Section> */ +/* mac_specific */ +/* */ +/* <Title> */ +/* Mac Specific Interface */ +/* */ +/* <Abstract> */ +/* Only available on the Macintosh. */ +/* */ +/* <Description> */ +/* The following definitions are only available if FreeType is */ +/* compiled on a Macintosh. */ +/* */ +/*************************************************************************/ - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_New_Face_From_FOND */ - /* */ - /* <Description> */ - /* Create a new face object from a FOND resource. */ - /* */ - /* <InOut> */ - /* library :: A handle to the library resource. */ - /* */ - /* <Input> */ - /* fond :: A FOND resource. */ - /* */ - /* face_index :: Only supported for the -1 `sanity check' special */ - /* case. */ - /* */ - /* <Output> */ - /* aface :: A handle to a new face object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Notes> */ - /* This function can be used to create @FT_Face objects from fonts */ - /* that are installed in the system as follows. */ - /* */ - /* { */ - /* fond = GetResource( 'FOND', fontName ); */ - /* error = FT_New_Face_From_FOND( library, fond, 0, &face ); */ - /* } */ - /* */ - FT_EXPORT( FT_Error ) - FT_New_Face_From_FOND( FT_Library library, - Handle fond, - FT_Long face_index, - FT_Face *aface ) - FT_DEPRECATED_ATTRIBUTE; +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_New_Face_From_FOND */ +/* */ +/* <Description> */ +/* Create a new face object from a FOND resource. */ +/* */ +/* <InOut> */ +/* library :: A handle to the library resource. */ +/* */ +/* <Input> */ +/* fond :: A FOND resource. */ +/* */ +/* face_index :: Only supported for the -1 `sanity check' special */ +/* case. */ +/* */ +/* <Output> */ +/* aface :: A handle to a new face object. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +/* <Notes> */ +/* This function can be used to create @FT_Face objects from fonts */ +/* that are installed in the system as follows. */ +/* */ +/* { */ +/* fond = GetResource( 'FOND', fontName ); */ +/* error = FT_New_Face_From_FOND( library, fond, 0, &face ); */ +/* } */ +/* */ +FT_EXPORT( FT_Error ) +FT_New_Face_From_FOND( FT_Library library, + Handle fond, + FT_Long face_index, + FT_Face *aface ) +FT_DEPRECATED_ATTRIBUTE; - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_GetFile_From_Mac_Name */ - /* */ - /* <Description> */ - /* Return an FSSpec for the disk file containing the named font. */ - /* */ - /* <Input> */ - /* fontName :: Mac OS name of the font (e.g., Times New Roman */ - /* Bold). */ - /* */ - /* <Output> */ - /* pathSpec :: FSSpec to the file. For passing to */ - /* @FT_New_Face_From_FSSpec. */ - /* */ - /* face_index :: Index of the face. For passing to */ - /* @FT_New_Face_From_FSSpec. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_GetFile_From_Mac_Name( const char* fontName, - FSSpec* pathSpec, - FT_Long* face_index ) - FT_DEPRECATED_ATTRIBUTE; +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_GetFile_From_Mac_Name */ +/* */ +/* <Description> */ +/* Return an FSSpec for the disk file containing the named font. */ +/* */ +/* <Input> */ +/* fontName :: Mac OS name of the font (e.g., Times New Roman */ +/* Bold). */ +/* */ +/* <Output> */ +/* pathSpec :: FSSpec to the file. For passing to */ +/* @FT_New_Face_From_FSSpec. */ +/* */ +/* face_index :: Index of the face. For passing to */ +/* @FT_New_Face_From_FSSpec. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +FT_EXPORT( FT_Error ) +FT_GetFile_From_Mac_Name( const char* fontName, + FSSpec* pathSpec, + FT_Long* face_index ) +FT_DEPRECATED_ATTRIBUTE; - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_GetFile_From_Mac_ATS_Name */ - /* */ - /* <Description> */ - /* Return an FSSpec for the disk file containing the named font. */ - /* */ - /* <Input> */ - /* fontName :: Mac OS name of the font in ATS framework. */ - /* */ - /* <Output> */ - /* pathSpec :: FSSpec to the file. For passing to */ - /* @FT_New_Face_From_FSSpec. */ - /* */ - /* face_index :: Index of the face. For passing to */ - /* @FT_New_Face_From_FSSpec. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_GetFile_From_Mac_ATS_Name( const char* fontName, - FSSpec* pathSpec, - FT_Long* face_index ) - FT_DEPRECATED_ATTRIBUTE; +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_GetFile_From_Mac_ATS_Name */ +/* */ +/* <Description> */ +/* Return an FSSpec for the disk file containing the named font. */ +/* */ +/* <Input> */ +/* fontName :: Mac OS name of the font in ATS framework. */ +/* */ +/* <Output> */ +/* pathSpec :: FSSpec to the file. For passing to */ +/* @FT_New_Face_From_FSSpec. */ +/* */ +/* face_index :: Index of the face. For passing to */ +/* @FT_New_Face_From_FSSpec. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +FT_EXPORT( FT_Error ) +FT_GetFile_From_Mac_ATS_Name( const char* fontName, + FSSpec* pathSpec, + FT_Long* face_index ) +FT_DEPRECATED_ATTRIBUTE; - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_GetFilePath_From_Mac_ATS_Name */ - /* */ - /* <Description> */ - /* Return a pathname of the disk file and face index for given font */ - /* name which is handled by ATS framework. */ - /* */ - /* <Input> */ - /* fontName :: Mac OS name of the font in ATS framework. */ - /* */ - /* <Output> */ - /* path :: Buffer to store pathname of the file. For passing */ - /* to @FT_New_Face. The client must allocate this */ - /* buffer before calling this function. */ - /* */ - /* maxPathSize :: Lengths of the buffer `path' that client allocated. */ - /* */ - /* face_index :: Index of the face. For passing to @FT_New_Face. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_GetFilePath_From_Mac_ATS_Name( const char* fontName, - UInt8* path, - UInt32 maxPathSize, - FT_Long* face_index ) - FT_DEPRECATED_ATTRIBUTE; +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_GetFilePath_From_Mac_ATS_Name */ +/* */ +/* <Description> */ +/* Return a pathname of the disk file and face index for given font */ +/* name which is handled by ATS framework. */ +/* */ +/* <Input> */ +/* fontName :: Mac OS name of the font in ATS framework. */ +/* */ +/* <Output> */ +/* path :: Buffer to store pathname of the file. For passing */ +/* to @FT_New_Face. The client must allocate this */ +/* buffer before calling this function. */ +/* */ +/* maxPathSize :: Lengths of the buffer `path' that client allocated. */ +/* */ +/* face_index :: Index of the face. For passing to @FT_New_Face. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +FT_EXPORT( FT_Error ) +FT_GetFilePath_From_Mac_ATS_Name( const char* fontName, + UInt8* path, + UInt32 maxPathSize, + FT_Long* face_index ) +FT_DEPRECATED_ATTRIBUTE; - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_New_Face_From_FSSpec */ - /* */ - /* <Description> */ - /* Create a new face object from a given resource and typeface index */ - /* using an FSSpec to the font file. */ - /* */ - /* <InOut> */ - /* library :: A handle to the library resource. */ - /* */ - /* <Input> */ - /* spec :: FSSpec to the font file. */ - /* */ - /* face_index :: The index of the face within the resource. The */ - /* first face has index~0. */ - /* <Output> */ - /* aface :: A handle to a new face object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* @FT_New_Face_From_FSSpec is identical to @FT_New_Face except */ - /* it accepts an FSSpec instead of a path. */ - /* */ - FT_EXPORT( FT_Error ) - FT_New_Face_From_FSSpec( FT_Library library, - const FSSpec *spec, - FT_Long face_index, - FT_Face *aface ) - FT_DEPRECATED_ATTRIBUTE; +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_New_Face_From_FSSpec */ +/* */ +/* <Description> */ +/* Create a new face object from a given resource and typeface index */ +/* using an FSSpec to the font file. */ +/* */ +/* <InOut> */ +/* library :: A handle to the library resource. */ +/* */ +/* <Input> */ +/* spec :: FSSpec to the font file. */ +/* */ +/* face_index :: The index of the face within the resource. The */ +/* first face has index~0. */ +/* <Output> */ +/* aface :: A handle to a new face object. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +/* <Note> */ +/* @FT_New_Face_From_FSSpec is identical to @FT_New_Face except */ +/* it accepts an FSSpec instead of a path. */ +/* */ +FT_EXPORT( FT_Error ) +FT_New_Face_From_FSSpec( FT_Library library, + const FSSpec *spec, + FT_Long face_index, + FT_Face *aface ) +FT_DEPRECATED_ATTRIBUTE; - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_New_Face_From_FSRef */ - /* */ - /* <Description> */ - /* Create a new face object from a given resource and typeface index */ - /* using an FSRef to the font file. */ - /* */ - /* <InOut> */ - /* library :: A handle to the library resource. */ - /* */ - /* <Input> */ - /* spec :: FSRef to the font file. */ - /* */ - /* face_index :: The index of the face within the resource. The */ - /* first face has index~0. */ - /* <Output> */ - /* aface :: A handle to a new face object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* @FT_New_Face_From_FSRef is identical to @FT_New_Face except */ - /* it accepts an FSRef instead of a path. */ - /* */ - FT_EXPORT( FT_Error ) - FT_New_Face_From_FSRef( FT_Library library, - const FSRef *ref, - FT_Long face_index, - FT_Face *aface ) - FT_DEPRECATED_ATTRIBUTE; +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_New_Face_From_FSRef */ +/* */ +/* <Description> */ +/* Create a new face object from a given resource and typeface index */ +/* using an FSRef to the font file. */ +/* */ +/* <InOut> */ +/* library :: A handle to the library resource. */ +/* */ +/* <Input> */ +/* spec :: FSRef to the font file. */ +/* */ +/* face_index :: The index of the face within the resource. The */ +/* first face has index~0. */ +/* <Output> */ +/* aface :: A handle to a new face object. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +/* <Note> */ +/* @FT_New_Face_From_FSRef is identical to @FT_New_Face except */ +/* it accepts an FSRef instead of a path. */ +/* */ +FT_EXPORT( FT_Error ) +FT_New_Face_From_FSRef( FT_Library library, + const FSRef *ref, + FT_Long face_index, + FT_Face *aface ) +FT_DEPRECATED_ATTRIBUTE; - /* */ +/* */ FT_END_HEADER diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/ftmm.h b/thirdparties/common/include/libfreetype/freetype2/freetype/ftmm.h index 3aefb9e..16fc3c9 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/ftmm.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/ftmm.h @@ -27,118 +27,115 @@ FT_BEGIN_HEADER - /*************************************************************************/ - /* */ - /* <Section> */ - /* multiple_masters */ - /* */ - /* <Title> */ - /* Multiple Masters */ - /* */ - /* <Abstract> */ - /* How to manage Multiple Masters fonts. */ - /* */ - /* <Description> */ - /* The following types and functions are used to manage Multiple */ - /* 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. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_MM_Axis */ - /* */ - /* <Description> */ - /* 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. */ - /* */ - /* minimum :: The axis's minimum design coordinate. */ - /* */ - /* maximum :: The axis's maximum design coordinate. */ - /* */ - typedef struct FT_MM_Axis_ - { +/*************************************************************************/ +/* */ +/* <Section> */ +/* multiple_masters */ +/* */ +/* <Title> */ +/* Multiple Masters */ +/* */ +/* <Abstract> */ +/* How to manage Multiple Masters fonts. */ +/* */ +/* <Description> */ +/* The following types and functions are used to manage Multiple */ +/* 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. */ +/* */ +/*************************************************************************/ + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* FT_MM_Axis */ +/* */ +/* <Description> */ +/* 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. */ +/* */ +/* minimum :: The axis's minimum design coordinate. */ +/* */ +/* maximum :: The axis's maximum design coordinate. */ +/* */ +typedef struct FT_MM_Axis_ { FT_String* name; FT_Long minimum; FT_Long maximum; - } FT_MM_Axis; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Multi_Master */ - /* */ - /* <Description> */ - /* 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. */ - /* */ - /* num_designs :: Number of designs; should be normally 2^num_axis */ - /* even though the Type~1 specification strangely */ - /* allows for intermediate designs to be present. This */ - /* number cannot exceed~16. */ - /* */ - /* axis :: A table of axis descriptors. */ - /* */ - typedef struct FT_Multi_Master_ - { +} FT_MM_Axis; + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* FT_Multi_Master */ +/* */ +/* <Description> */ +/* 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. */ +/* */ +/* num_designs :: Number of designs; should be normally 2^num_axis */ +/* even though the Type~1 specification strangely */ +/* allows for intermediate designs to be present. This */ +/* number cannot exceed~16. */ +/* */ +/* axis :: A table of axis descriptors. */ +/* */ +typedef struct FT_Multi_Master_ { FT_UInt num_axis; FT_UInt num_designs; FT_MM_Axis axis[T1_MAX_MM_AXIS]; - } 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_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; @@ -148,226 +145,224 @@ FT_BEGIN_HEADER 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_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_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> */ - /* FT_Get_Multi_Master */ - /* */ - /* <Description> */ - /* Retrieve 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. */ - /* */ - /* <Output> */ - /* amaster :: The Multiple Masters descriptor. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Get_Multi_Master( FT_Face face, - FT_Multi_Master *amaster ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_MM_Var */ - /* */ - /* <Description> */ - /* Retrieve the Multiple Master/GX var descriptor of a given font. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face. */ - /* */ - /* <Output> */ - /* amaster :: The Multiple Masters/GX var 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> */ - /* FT_Set_MM_Design_Coordinates */ - /* */ - /* <Description> */ - /* 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. */ - /* */ - /* <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_MM_Design_Coordinates( FT_Face face, - FT_UInt num_coords, - 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 and GX var fonts, choose an interpolated font */ - /* design through normalized blend 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 :: The design coordinates array (each element must be */ - /* between 0 and 1.0). */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Set_MM_Blend_Coordinates( FT_Face face, +} FT_MM_Var; + + +/* */ + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Get_Multi_Master */ +/* */ +/* <Description> */ +/* Retrieve 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. */ +/* */ +/* <Output> */ +/* amaster :: The Multiple Masters descriptor. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +FT_EXPORT( FT_Error ) +FT_Get_Multi_Master( FT_Face face, + FT_Multi_Master *amaster ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Get_MM_Var */ +/* */ +/* <Description> */ +/* Retrieve the Multiple Master/GX var descriptor of a given font. */ +/* */ +/* <Input> */ +/* face :: A handle to the source face. */ +/* */ +/* <Output> */ +/* amaster :: The Multiple Masters/GX var 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> */ +/* FT_Set_MM_Design_Coordinates */ +/* */ +/* <Description> */ +/* 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. */ +/* */ +/* <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_MM_Design_Coordinates( FT_Face face, + FT_UInt num_coords, + 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_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 ); - - - /* */ +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Set_MM_Blend_Coordinates */ +/* */ +/* <Description> */ +/* For Multiple Masters and GX var fonts, choose an interpolated font */ +/* design through normalized blend 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 :: The design coordinates array (each element must be */ +/* between 0 and 1.0). */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +FT_EXPORT( FT_Error ) +FT_Set_MM_Blend_Coordinates( FT_Face face, + FT_UInt num_coords, + 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 ); + + +/* */ FT_END_HEADER diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/ftmodapi.h b/thirdparties/common/include/libfreetype/freetype2/freetype/ftmodapi.h index aedfc54..4b67065 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/ftmodapi.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/ftmodapi.h @@ -33,66 +33,66 @@ FT_BEGIN_HEADER - /*************************************************************************/ - /* */ - /* <Section> */ - /* module_management */ - /* */ - /* <Title> */ - /* Module Management */ - /* */ - /* <Abstract> */ - /* How to add, upgrade, remove, and control modules from FreeType. */ - /* */ - /* <Description> */ - /* The definitions below are used to manage modules within FreeType. */ - /* Modules can be added, upgraded, and removed at runtime. */ - /* Additionally, some module properties can be controlled also. */ - /* */ - /* Here is a list of possible values of the `module_name' field in */ - /* the @FT_Module_Class structure. */ - /* */ - /* { */ - /* autofitter */ - /* bdf */ - /* cff */ - /* gxvalid */ - /* otvalid */ - /* pcf */ - /* pfr */ - /* psaux */ - /* pshinter */ - /* psnames */ - /* raster1, raster5 */ - /* sfnt */ - /* smooth, smooth-lcd, smooth-lcdv */ - /* truetype */ - /* type1 */ - /* type42 */ - /* t1cid */ - /* winfonts */ - /* } */ - /* */ - /* Note that the FreeType Cache sub-system is not a FreeType module. */ - /* */ - /*************************************************************************/ - - - /* module bit flags */ +/*************************************************************************/ +/* */ +/* <Section> */ +/* module_management */ +/* */ +/* <Title> */ +/* Module Management */ +/* */ +/* <Abstract> */ +/* How to add, upgrade, remove, and control modules from FreeType. */ +/* */ +/* <Description> */ +/* The definitions below are used to manage modules within FreeType. */ +/* Modules can be added, upgraded, and removed at runtime. */ +/* Additionally, some module properties can be controlled also. */ +/* */ +/* Here is a list of possible values of the `module_name' field in */ +/* the @FT_Module_Class structure. */ +/* */ +/* { */ +/* autofitter */ +/* bdf */ +/* cff */ +/* gxvalid */ +/* otvalid */ +/* pcf */ +/* pfr */ +/* psaux */ +/* pshinter */ +/* psnames */ +/* raster1, raster5 */ +/* sfnt */ +/* smooth, smooth-lcd, smooth-lcdv */ +/* truetype */ +/* type1 */ +/* type42 */ +/* t1cid */ +/* winfonts */ +/* } */ +/* */ +/* Note that the FreeType Cache sub-system is not a FreeType module. */ +/* */ +/*************************************************************************/ + + +/* module bit flags */ #define FT_MODULE_FONT_DRIVER 1 /* this module is a font driver */ #define FT_MODULE_RENDERER 2 /* this module is a renderer */ #define FT_MODULE_HINTER 4 /* this module is a glyph hinter */ #define FT_MODULE_STYLER 8 /* this module is a styler */ #define FT_MODULE_DRIVER_SCALABLE 0x100 /* the driver supports */ - /* scalable fonts */ +/* scalable fonts */ #define FT_MODULE_DRIVER_NO_OUTLINES 0x200 /* the driver does not */ - /* support vector outlines */ +/* support vector outlines */ #define FT_MODULE_DRIVER_HAS_HINTER 0x400 /* the driver provides its */ - /* own hinter */ +/* own hinter */ - /* deprecated values */ +/* deprecated values */ #define ft_module_font_driver FT_MODULE_FONT_DRIVER #define ft_module_renderer FT_MODULE_RENDERER #define ft_module_hinter FT_MODULE_HINTER @@ -103,88 +103,87 @@ FT_BEGIN_HEADER #define ft_module_driver_has_hinter FT_MODULE_DRIVER_HAS_HINTER - typedef FT_Pointer FT_Module_Interface; - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Module_Constructor */ - /* */ - /* <Description> */ - /* A function used to initialize (not create) a new module object. */ - /* */ - /* <Input> */ - /* module :: The module to initialize. */ - /* */ - typedef FT_Error - (*FT_Module_Constructor)( FT_Module module ); - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Module_Destructor */ - /* */ - /* <Description> */ - /* A function used to finalize (not destroy) a given module object. */ - /* */ - /* <Input> */ - /* module :: The module to finalize. */ - /* */ - typedef void - (*FT_Module_Destructor)( FT_Module module ); - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Module_Requester */ - /* */ - /* <Description> */ - /* A function used to query a given module for a specific interface. */ - /* */ - /* <Input> */ - /* module :: The module to be searched. */ - /* */ - /* name :: The name of the interface in the module. */ - /* */ - typedef FT_Module_Interface - (*FT_Module_Requester)( FT_Module module, - const char* name ); - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Module_Class */ - /* */ - /* <Description> */ - /* The module class descriptor. */ - /* */ - /* <Fields> */ - /* module_flags :: Bit flags describing the module. */ - /* */ - /* module_size :: The size of one module object/instance in */ - /* bytes. */ - /* */ - /* module_name :: The name of the module. */ - /* */ - /* module_version :: The version, as a 16.16 fixed number */ - /* (major.minor). */ - /* */ - /* module_requires :: The version of FreeType this module requires, */ - /* as a 16.16 fixed number (major.minor). Starts */ - /* at version 2.0, i.e., 0x20000. */ - /* */ - /* module_init :: The initializing function. */ - /* */ - /* module_done :: The finalizing function. */ - /* */ - /* get_interface :: The interface requesting function. */ - /* */ - typedef struct FT_Module_Class_ - { +typedef FT_Pointer FT_Module_Interface; + + +/*************************************************************************/ +/* */ +/* <FuncType> */ +/* FT_Module_Constructor */ +/* */ +/* <Description> */ +/* A function used to initialize (not create) a new module object. */ +/* */ +/* <Input> */ +/* module :: The module to initialize. */ +/* */ +typedef FT_Error +(*FT_Module_Constructor)( FT_Module module ); + + +/*************************************************************************/ +/* */ +/* <FuncType> */ +/* FT_Module_Destructor */ +/* */ +/* <Description> */ +/* A function used to finalize (not destroy) a given module object. */ +/* */ +/* <Input> */ +/* module :: The module to finalize. */ +/* */ +typedef void +(*FT_Module_Destructor)( FT_Module module ); + + +/*************************************************************************/ +/* */ +/* <FuncType> */ +/* FT_Module_Requester */ +/* */ +/* <Description> */ +/* A function used to query a given module for a specific interface. */ +/* */ +/* <Input> */ +/* module :: The module to be searched. */ +/* */ +/* name :: The name of the interface in the module. */ +/* */ +typedef FT_Module_Interface +(*FT_Module_Requester)( FT_Module module, + const char* name ); + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* FT_Module_Class */ +/* */ +/* <Description> */ +/* The module class descriptor. */ +/* */ +/* <Fields> */ +/* module_flags :: Bit flags describing the module. */ +/* */ +/* module_size :: The size of one module object/instance in */ +/* bytes. */ +/* */ +/* module_name :: The name of the module. */ +/* */ +/* module_version :: The version, as a 16.16 fixed number */ +/* (major.minor). */ +/* */ +/* module_requires :: The version of FreeType this module requires, */ +/* as a 16.16 fixed number (major.minor). Starts */ +/* at version 2.0, i.e., 0x20000. */ +/* */ +/* module_init :: The initializing function. */ +/* */ +/* module_done :: The finalizing function. */ +/* */ +/* get_interface :: The interface requesting function. */ +/* */ +typedef struct FT_Module_Class_ { FT_ULong module_flags; FT_Long module_size; const FT_String* module_name; @@ -197,433 +196,432 @@ FT_BEGIN_HEADER FT_Module_Destructor module_done; FT_Module_Requester get_interface; - } FT_Module_Class; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Add_Module */ - /* */ - /* <Description> */ - /* Add a new module to a given library instance. */ - /* */ - /* <InOut> */ - /* library :: A handle to the library object. */ - /* */ - /* <Input> */ - /* clazz :: A pointer to class descriptor for the module. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* An error will be returned if a module already exists by that name, */ - /* or if the module requires a version of FreeType that is too great. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Add_Module( FT_Library library, - const FT_Module_Class* clazz ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Module */ - /* */ - /* <Description> */ - /* Find a module by its name. */ - /* */ - /* <Input> */ - /* library :: A handle to the library object. */ - /* */ - /* module_name :: The module's name (as an ASCII string). */ - /* */ - /* <Return> */ - /* A module handle. 0~if none was found. */ - /* */ - /* <Note> */ - /* FreeType's internal modules aren't documented very well, and you */ - /* should look up the source code for details. */ - /* */ - FT_EXPORT( FT_Module ) - FT_Get_Module( FT_Library library, - const char* module_name ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Remove_Module */ - /* */ - /* <Description> */ - /* Remove a given module from a library instance. */ - /* */ - /* <InOut> */ - /* library :: A handle to a library object. */ - /* */ - /* <Input> */ - /* module :: A handle to a module object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* The module object is destroyed by the function in case of success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Remove_Module( FT_Library library, - FT_Module module ); - - - /********************************************************************** - * - * @function: - * FT_Property_Set - * - * @description: - * Set a property for a given module. - * - * @input: - * library :: - * A handle to the library the module is part of. - * - * module_name :: - * The module name. - * - * property_name :: - * The property name. Properties are described in the `Synopsis' - * subsection of the module's documentation. - * - * Note that only a few modules have properties. - * - * value :: - * A generic pointer to a variable or structure which gives the new - * value of the property. The exact definition of `value' is - * dependent on the property; see the `Synopsis' subsection of the - * module's documentation. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * If `module_name' isn't a valid module name, or `property_name' - * doesn't specify a valid property, or if `value' doesn't represent a - * valid value for the given property, an error is returned. - * - * The following example sets property `bar' (a simple integer) in - * module `foo' to value~1. - * - * { - * FT_UInt bar; - * - * - * bar = 1; - * FT_Property_Set( library, "foo", "bar", &bar ); - * } - * - * It is not possible to set properties of the FreeType Cache - * sub-system with FT_Property_Set; use @FTC_Property_Set instead. - * - * @since: - * 2.4.11 - * - */ - FT_Error - FT_Property_Set( FT_Library library, - const FT_String* module_name, - const FT_String* property_name, - const void* value ); - - - /********************************************************************** - * - * @function: - * FT_Property_Get - * - * @description: - * Get a module's property value. - * - * @input: - * library :: - * A handle to the library the module is part of. - * - * module_name :: - * The module name. - * - * property_name :: - * The property name. Properties are described in the `Synopsis' - * subsection of the module's documentation. - * - * @inout: - * value :: - * A generic pointer to a variable or structure which gives the - * value of the property. The exact definition of `value' is - * dependent on the property; see the `Synopsis' subsection of the - * module's documentation. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * If `module_name' isn't a valid module name, or `property_name' - * doesn't specify a valid property, or if `value' doesn't represent a - * valid value for the given property, an error is returned. - * - * The following example gets property `baz' (a range) in module `foo'. - * - * { - * typedef range_ - * { - * FT_Int32 min; - * FT_Int32 max; - * - * } range; - * - * range baz; - * - * - * FT_Property_Get( library, "foo", "baz", &baz ); - * } - * - * It is not possible to retrieve properties of the FreeType Cache - * sub-system with FT_Property_Get; use @FTC_Property_Get instead. - * - * @since: - * 2.4.11 - * - */ - FT_Error - FT_Property_Get( FT_Library library, - const FT_String* module_name, - const FT_String* property_name, - void* value ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Reference_Library */ - /* */ - /* <Description> */ - /* A counter gets initialized to~1 at the time an @FT_Library */ - /* structure is created. This function increments the counter. */ - /* @FT_Done_Library then only destroys a library if the counter is~1, */ - /* otherwise it simply decrements the counter. */ - /* */ - /* This function helps in managing life-cycles of structures which */ - /* reference @FT_Library objects. */ - /* */ - /* <Input> */ - /* library :: A handle to a target library object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Since> */ - /* 2.4.2 */ - /* */ - FT_EXPORT( FT_Error ) - FT_Reference_Library( FT_Library library ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_New_Library */ - /* */ - /* <Description> */ - /* This function is used to create a new FreeType library instance */ - /* from a given memory object. It is thus possible to use libraries */ - /* with distinct memory allocators within the same program. */ - /* */ - /* Normally, you would call this function (followed by a call to */ - /* @FT_Add_Default_Modules or a series of calls to @FT_Add_Module) */ - /* instead of @FT_Init_FreeType to initialize the FreeType library. */ - /* */ - /* Don't use @FT_Done_FreeType but @FT_Done_Library to destroy a */ - /* library instance. */ - /* */ - /* <Input> */ - /* memory :: A handle to the original memory object. */ - /* */ - /* <Output> */ - /* alibrary :: A pointer to handle of a new library object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* See the discussion of reference counters in the description of */ - /* @FT_Reference_Library. */ - /* */ - FT_EXPORT( FT_Error ) - FT_New_Library( FT_Memory memory, - FT_Library *alibrary ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Done_Library */ - /* */ - /* <Description> */ - /* Discard a given library object. This closes all drivers and */ - /* discards all resource objects. */ - /* */ - /* <Input> */ - /* library :: A handle to the target library. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* See the discussion of reference counters in the description of */ - /* @FT_Reference_Library. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Done_Library( FT_Library library ); +} FT_Module_Class; + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Add_Module */ +/* */ +/* <Description> */ +/* Add a new module to a given library instance. */ +/* */ +/* <InOut> */ +/* library :: A handle to the library object. */ +/* */ +/* <Input> */ +/* clazz :: A pointer to class descriptor for the module. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +/* <Note> */ +/* An error will be returned if a module already exists by that name, */ +/* or if the module requires a version of FreeType that is too great. */ +/* */ +FT_EXPORT( FT_Error ) +FT_Add_Module( FT_Library library, + const FT_Module_Class* clazz ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Get_Module */ +/* */ +/* <Description> */ +/* Find a module by its name. */ +/* */ +/* <Input> */ +/* library :: A handle to the library object. */ +/* */ +/* module_name :: The module's name (as an ASCII string). */ +/* */ +/* <Return> */ +/* A module handle. 0~if none was found. */ +/* */ +/* <Note> */ +/* FreeType's internal modules aren't documented very well, and you */ +/* should look up the source code for details. */ +/* */ +FT_EXPORT( FT_Module ) +FT_Get_Module( FT_Library library, + const char* module_name ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Remove_Module */ +/* */ +/* <Description> */ +/* Remove a given module from a library instance. */ +/* */ +/* <InOut> */ +/* library :: A handle to a library object. */ +/* */ +/* <Input> */ +/* module :: A handle to a module object. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +/* <Note> */ +/* The module object is destroyed by the function in case of success. */ +/* */ +FT_EXPORT( FT_Error ) +FT_Remove_Module( FT_Library library, + FT_Module module ); + + +/********************************************************************** + * + * @function: + * FT_Property_Set + * + * @description: + * Set a property for a given module. + * + * @input: + * library :: + * A handle to the library the module is part of. + * + * module_name :: + * The module name. + * + * property_name :: + * The property name. Properties are described in the `Synopsis' + * subsection of the module's documentation. + * + * Note that only a few modules have properties. + * + * value :: + * A generic pointer to a variable or structure which gives the new + * value of the property. The exact definition of `value' is + * dependent on the property; see the `Synopsis' subsection of the + * module's documentation. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If `module_name' isn't a valid module name, or `property_name' + * doesn't specify a valid property, or if `value' doesn't represent a + * valid value for the given property, an error is returned. + * + * The following example sets property `bar' (a simple integer) in + * module `foo' to value~1. + * + * { + * FT_UInt bar; + * + * + * bar = 1; + * FT_Property_Set( library, "foo", "bar", &bar ); + * } + * + * It is not possible to set properties of the FreeType Cache + * sub-system with FT_Property_Set; use @FTC_Property_Set instead. + * + * @since: + * 2.4.11 + * + */ +FT_Error +FT_Property_Set( FT_Library library, + const FT_String* module_name, + const FT_String* property_name, + const void* value ); + + +/********************************************************************** + * + * @function: + * FT_Property_Get + * + * @description: + * Get a module's property value. + * + * @input: + * library :: + * A handle to the library the module is part of. + * + * module_name :: + * The module name. + * + * property_name :: + * The property name. Properties are described in the `Synopsis' + * subsection of the module's documentation. + * + * @inout: + * value :: + * A generic pointer to a variable or structure which gives the + * value of the property. The exact definition of `value' is + * dependent on the property; see the `Synopsis' subsection of the + * module's documentation. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If `module_name' isn't a valid module name, or `property_name' + * doesn't specify a valid property, or if `value' doesn't represent a + * valid value for the given property, an error is returned. + * + * The following example gets property `baz' (a range) in module `foo'. + * + * { + * typedef range_ + * { + * FT_Int32 min; + * FT_Int32 max; + * + * } range; + * + * range baz; + * + * + * FT_Property_Get( library, "foo", "baz", &baz ); + * } + * + * It is not possible to retrieve properties of the FreeType Cache + * sub-system with FT_Property_Get; use @FTC_Property_Get instead. + * + * @since: + * 2.4.11 + * + */ +FT_Error +FT_Property_Get( FT_Library library, + const FT_String* module_name, + const FT_String* property_name, + void* value ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Reference_Library */ +/* */ +/* <Description> */ +/* A counter gets initialized to~1 at the time an @FT_Library */ +/* structure is created. This function increments the counter. */ +/* @FT_Done_Library then only destroys a library if the counter is~1, */ +/* otherwise it simply decrements the counter. */ +/* */ +/* This function helps in managing life-cycles of structures which */ +/* reference @FT_Library objects. */ +/* */ +/* <Input> */ +/* library :: A handle to a target library object. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +/* <Since> */ +/* 2.4.2 */ +/* */ +FT_EXPORT( FT_Error ) +FT_Reference_Library( FT_Library library ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_New_Library */ +/* */ +/* <Description> */ +/* This function is used to create a new FreeType library instance */ +/* from a given memory object. It is thus possible to use libraries */ +/* with distinct memory allocators within the same program. */ +/* */ +/* Normally, you would call this function (followed by a call to */ +/* @FT_Add_Default_Modules or a series of calls to @FT_Add_Module) */ +/* instead of @FT_Init_FreeType to initialize the FreeType library. */ +/* */ +/* Don't use @FT_Done_FreeType but @FT_Done_Library to destroy a */ +/* library instance. */ +/* */ +/* <Input> */ +/* memory :: A handle to the original memory object. */ +/* */ +/* <Output> */ +/* alibrary :: A pointer to handle of a new library object. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +/* <Note> */ +/* See the discussion of reference counters in the description of */ +/* @FT_Reference_Library. */ +/* */ +FT_EXPORT( FT_Error ) +FT_New_Library( FT_Memory memory, + FT_Library *alibrary ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Done_Library */ +/* */ +/* <Description> */ +/* Discard a given library object. This closes all drivers and */ +/* discards all resource objects. */ +/* */ +/* <Input> */ +/* library :: A handle to the target library. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +/* <Note> */ +/* See the discussion of reference counters in the description of */ +/* @FT_Reference_Library. */ +/* */ +FT_EXPORT( FT_Error ) +FT_Done_Library( FT_Library library ); /* */ - typedef void - (*FT_DebugHook_Func)( void* arg ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Set_Debug_Hook */ - /* */ - /* <Description> */ - /* Set a debug hook function for debugging the interpreter of a font */ - /* format. */ - /* */ - /* <InOut> */ - /* library :: A handle to the library object. */ - /* */ - /* <Input> */ - /* hook_index :: The index of the debug hook. You should use the */ - /* values defined in `ftobjs.h', e.g., */ - /* `FT_DEBUG_HOOK_TRUETYPE'. */ - /* */ - /* debug_hook :: The function used to debug the interpreter. */ - /* */ - /* <Note> */ - /* Currently, four debug hook slots are available, but only two (for */ - /* the TrueType and the Type~1 interpreter) are defined. */ - /* */ - /* Since the internal headers of FreeType are no longer installed, */ - /* the symbol `FT_DEBUG_HOOK_TRUETYPE' isn't available publicly. */ - /* This is a bug and will be fixed in a forthcoming release. */ - /* */ - FT_EXPORT( void ) - FT_Set_Debug_Hook( FT_Library library, - FT_UInt hook_index, - FT_DebugHook_Func debug_hook ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Add_Default_Modules */ - /* */ - /* <Description> */ - /* Add the set of default drivers to a given library object. */ - /* This is only useful when you create a library object with */ - /* @FT_New_Library (usually to plug a custom memory manager). */ - /* */ - /* <InOut> */ - /* library :: A handle to a new library object. */ - /* */ - FT_EXPORT( void ) - FT_Add_Default_Modules( FT_Library library ); - - - - /************************************************************************** - * - * @section: - * truetype_engine - * - * @title: - * The TrueType Engine - * - * @abstract: - * TrueType bytecode support. - * - * @description: - * This section contains a function used to query the level of TrueType - * bytecode support compiled in this version of the library. - * - */ - - - /************************************************************************** - * - * @enum: - * FT_TrueTypeEngineType - * - * @description: - * A list of values describing which kind of TrueType bytecode - * engine is implemented in a given FT_Library instance. It is used - * by the @FT_Get_TrueType_Engine_Type function. - * - * @values: - * FT_TRUETYPE_ENGINE_TYPE_NONE :: - * The library doesn't implement any kind of bytecode interpreter. - * - * FT_TRUETYPE_ENGINE_TYPE_UNPATENTED :: - * The library implements a bytecode interpreter that doesn't - * support the patented operations of the TrueType virtual machine. - * - * Its main use is to load certain Asian fonts which position and - * scale glyph components with bytecode instructions. It produces - * bad output for most other fonts. - * - * FT_TRUETYPE_ENGINE_TYPE_PATENTED :: - * The library implements a bytecode interpreter that covers - * the full instruction set of the TrueType virtual machine (this - * was governed by patents until May 2010, hence the name). - * - * @since: - * 2.2 - * - */ - typedef enum FT_TrueTypeEngineType_ - { +typedef void +(*FT_DebugHook_Func)( void* arg ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Set_Debug_Hook */ +/* */ +/* <Description> */ +/* Set a debug hook function for debugging the interpreter of a font */ +/* format. */ +/* */ +/* <InOut> */ +/* library :: A handle to the library object. */ +/* */ +/* <Input> */ +/* hook_index :: The index of the debug hook. You should use the */ +/* values defined in `ftobjs.h', e.g., */ +/* `FT_DEBUG_HOOK_TRUETYPE'. */ +/* */ +/* debug_hook :: The function used to debug the interpreter. */ +/* */ +/* <Note> */ +/* Currently, four debug hook slots are available, but only two (for */ +/* the TrueType and the Type~1 interpreter) are defined. */ +/* */ +/* Since the internal headers of FreeType are no longer installed, */ +/* the symbol `FT_DEBUG_HOOK_TRUETYPE' isn't available publicly. */ +/* This is a bug and will be fixed in a forthcoming release. */ +/* */ +FT_EXPORT( void ) +FT_Set_Debug_Hook( FT_Library library, + FT_UInt hook_index, + FT_DebugHook_Func debug_hook ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Add_Default_Modules */ +/* */ +/* <Description> */ +/* Add the set of default drivers to a given library object. */ +/* This is only useful when you create a library object with */ +/* @FT_New_Library (usually to plug a custom memory manager). */ +/* */ +/* <InOut> */ +/* library :: A handle to a new library object. */ +/* */ +FT_EXPORT( void ) +FT_Add_Default_Modules( FT_Library library ); + + + +/************************************************************************** + * + * @section: + * truetype_engine + * + * @title: + * The TrueType Engine + * + * @abstract: + * TrueType bytecode support. + * + * @description: + * This section contains a function used to query the level of TrueType + * bytecode support compiled in this version of the library. + * + */ + + +/************************************************************************** + * + * @enum: + * FT_TrueTypeEngineType + * + * @description: + * A list of values describing which kind of TrueType bytecode + * engine is implemented in a given FT_Library instance. It is used + * by the @FT_Get_TrueType_Engine_Type function. + * + * @values: + * FT_TRUETYPE_ENGINE_TYPE_NONE :: + * The library doesn't implement any kind of bytecode interpreter. + * + * FT_TRUETYPE_ENGINE_TYPE_UNPATENTED :: + * The library implements a bytecode interpreter that doesn't + * support the patented operations of the TrueType virtual machine. + * + * Its main use is to load certain Asian fonts which position and + * scale glyph components with bytecode instructions. It produces + * bad output for most other fonts. + * + * FT_TRUETYPE_ENGINE_TYPE_PATENTED :: + * The library implements a bytecode interpreter that covers + * the full instruction set of the TrueType virtual machine (this + * was governed by patents until May 2010, hence the name). + * + * @since: + * 2.2 + * + */ +typedef enum FT_TrueTypeEngineType_ { FT_TRUETYPE_ENGINE_TYPE_NONE = 0, FT_TRUETYPE_ENGINE_TYPE_UNPATENTED, FT_TRUETYPE_ENGINE_TYPE_PATENTED - } FT_TrueTypeEngineType; - - - /************************************************************************** - * - * @func: - * FT_Get_TrueType_Engine_Type - * - * @description: - * Return an @FT_TrueTypeEngineType value to indicate which level of - * the TrueType virtual machine a given library instance supports. - * - * @input: - * library :: - * A library instance. - * - * @return: - * A value indicating which level is supported. - * - * @since: - * 2.2 - * - */ - FT_EXPORT( FT_TrueTypeEngineType ) - FT_Get_TrueType_Engine_Type( FT_Library library ); - - - /* */ +} FT_TrueTypeEngineType; + + +/************************************************************************** + * + * @func: + * FT_Get_TrueType_Engine_Type + * + * @description: + * Return an @FT_TrueTypeEngineType value to indicate which level of + * the TrueType virtual machine a given library instance supports. + * + * @input: + * library :: + * A library instance. + * + * @return: + * A value indicating which level is supported. + * + * @since: + * 2.2 + * + */ +FT_EXPORT( FT_TrueTypeEngineType ) +FT_Get_TrueType_Engine_Type( FT_Library library ); + + +/* */ FT_END_HEADER diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/ftmoderr.h b/thirdparties/common/include/libfreetype/freetype2/freetype/ftmoderr.h index 5a27db1..90a3e45 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/ftmoderr.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/ftmoderr.h @@ -16,92 +16,92 @@ /***************************************************************************/ - /*************************************************************************/ - /* */ - /* This file is used to define the FreeType module error codes. */ - /* */ - /* If the macro FT_CONFIG_OPTION_USE_MODULE_ERRORS in `ftoption.h' is */ - /* set, the lower byte of an error value identifies the error code as */ - /* usual. In addition, the higher byte identifies the module. For */ - /* example, the error `FT_Err_Invalid_File_Format' has value 0x0003, the */ - /* error `TT_Err_Invalid_File_Format' has value 0x1303, the error */ - /* `T1_Err_Invalid_File_Format' has value 0x1403, etc. */ - /* */ - /* Note that `FT_Err_Ok', `TT_Err_Ok', etc. are always equal to zero, */ - /* including the high byte. */ - /* */ - /* If FT_CONFIG_OPTION_USE_MODULE_ERRORS isn't set, the higher byte of */ - /* an error value is set to zero. */ - /* */ - /* To hide the various `XXX_Err_' prefixes in the source code, FreeType */ - /* provides some macros in `fttypes.h'. */ - /* */ - /* FT_ERR( err ) */ - /* Add current error module prefix (as defined with the */ - /* `FT_ERR_PREFIX' macro) to `err'. For example, in the BDF module */ - /* the line */ - /* */ - /* error = FT_ERR( Invalid_Outline ); */ - /* */ - /* expands to */ - /* */ - /* error = BDF_Err_Invalid_Outline; */ - /* */ - /* For simplicity, you can always use `FT_Err_Ok' directly instead */ - /* of `FT_ERR( Ok )'. */ - /* */ - /* FT_ERR_EQ( errcode, err ) */ - /* FT_ERR_NEQ( errcode, err ) */ - /* Compare error code `errcode' with the error `err' for equality */ - /* and inequality, respectively. Example: */ - /* */ - /* if ( FT_ERR_EQ( error, Invalid_Outline ) ) */ - /* ... */ - /* */ - /* Using this macro you don't have to think about error prefixes. */ - /* Of course, if module errors are not active, the above example is */ - /* the same as */ - /* */ - /* if ( error == FT_Err_Invalid_Outline ) */ - /* ... */ - /* */ - /* FT_ERROR_BASE( errcode ) */ - /* FT_ERROR_MODULE( errcode ) */ - /* Get base error and module error code, respectively. */ - /* */ - /* */ - /* It can also be used to create a module error message table easily */ - /* with something like */ - /* */ - /* { */ - /* #undef __FTMODERR_H__ */ - /* #define FT_MODERRDEF( e, v, s ) { FT_Mod_Err_ ## e, s }, */ - /* #define FT_MODERR_START_LIST { */ - /* #define FT_MODERR_END_LIST { 0, 0 } }; */ - /* */ - /* const struct */ - /* { */ - /* int mod_err_offset; */ - /* const char* mod_err_msg */ - /* } ft_mod_errors[] = */ - /* */ - /* #include FT_MODULE_ERRORS_H */ - /* } */ - /* */ - /*************************************************************************/ +/*************************************************************************/ +/* */ +/* This file is used to define the FreeType module error codes. */ +/* */ +/* If the macro FT_CONFIG_OPTION_USE_MODULE_ERRORS in `ftoption.h' is */ +/* set, the lower byte of an error value identifies the error code as */ +/* usual. In addition, the higher byte identifies the module. For */ +/* example, the error `FT_Err_Invalid_File_Format' has value 0x0003, the */ +/* error `TT_Err_Invalid_File_Format' has value 0x1303, the error */ +/* `T1_Err_Invalid_File_Format' has value 0x1403, etc. */ +/* */ +/* Note that `FT_Err_Ok', `TT_Err_Ok', etc. are always equal to zero, */ +/* including the high byte. */ +/* */ +/* If FT_CONFIG_OPTION_USE_MODULE_ERRORS isn't set, the higher byte of */ +/* an error value is set to zero. */ +/* */ +/* To hide the various `XXX_Err_' prefixes in the source code, FreeType */ +/* provides some macros in `fttypes.h'. */ +/* */ +/* FT_ERR( err ) */ +/* Add current error module prefix (as defined with the */ +/* `FT_ERR_PREFIX' macro) to `err'. For example, in the BDF module */ +/* the line */ +/* */ +/* error = FT_ERR( Invalid_Outline ); */ +/* */ +/* expands to */ +/* */ +/* error = BDF_Err_Invalid_Outline; */ +/* */ +/* For simplicity, you can always use `FT_Err_Ok' directly instead */ +/* of `FT_ERR( Ok )'. */ +/* */ +/* FT_ERR_EQ( errcode, err ) */ +/* FT_ERR_NEQ( errcode, err ) */ +/* Compare error code `errcode' with the error `err' for equality */ +/* and inequality, respectively. Example: */ +/* */ +/* if ( FT_ERR_EQ( error, Invalid_Outline ) ) */ +/* ... */ +/* */ +/* Using this macro you don't have to think about error prefixes. */ +/* Of course, if module errors are not active, the above example is */ +/* the same as */ +/* */ +/* if ( error == FT_Err_Invalid_Outline ) */ +/* ... */ +/* */ +/* FT_ERROR_BASE( errcode ) */ +/* FT_ERROR_MODULE( errcode ) */ +/* Get base error and module error code, respectively. */ +/* */ +/* */ +/* It can also be used to create a module error message table easily */ +/* with something like */ +/* */ +/* { */ +/* #undef __FTMODERR_H__ */ +/* #define FT_MODERRDEF( e, v, s ) { FT_Mod_Err_ ## e, s }, */ +/* #define FT_MODERR_START_LIST { */ +/* #define FT_MODERR_END_LIST { 0, 0 } }; */ +/* */ +/* const struct */ +/* { */ +/* int mod_err_offset; */ +/* const char* mod_err_msg */ +/* } ft_mod_errors[] = */ +/* */ +/* #include FT_MODULE_ERRORS_H */ +/* } */ +/* */ +/*************************************************************************/ #ifndef __FTMODERR_H__ #define __FTMODERR_H__ - /*******************************************************************/ - /*******************************************************************/ - /***** *****/ - /***** SETUP MACROS *****/ - /***** *****/ - /*******************************************************************/ - /*******************************************************************/ +/*******************************************************************/ +/*******************************************************************/ +/***** *****/ +/***** SETUP MACROS *****/ +/***** *****/ +/*******************************************************************/ +/*******************************************************************/ #undef FT_NEED_EXTERN_C @@ -119,67 +119,67 @@ #ifdef __cplusplus #define FT_NEED_EXTERN_C - extern "C" { +extern "C" { #endif #endif /* !FT_MODERRDEF */ - /*******************************************************************/ - /*******************************************************************/ - /***** *****/ - /***** LIST MODULE ERROR BASES *****/ - /***** *****/ - /*******************************************************************/ - /*******************************************************************/ +/*******************************************************************/ +/*******************************************************************/ +/***** *****/ +/***** LIST MODULE ERROR BASES *****/ +/***** *****/ +/*******************************************************************/ +/*******************************************************************/ #ifdef FT_MODERR_START_LIST - FT_MODERR_START_LIST +FT_MODERR_START_LIST #endif - FT_MODERRDEF( Base, 0x000, "base module" ) - FT_MODERRDEF( Autofit, 0x100, "autofitter module" ) - FT_MODERRDEF( BDF, 0x200, "BDF module" ) - FT_MODERRDEF( Bzip2, 0x300, "Bzip2 module" ) - FT_MODERRDEF( Cache, 0x400, "cache module" ) - FT_MODERRDEF( CFF, 0x500, "CFF module" ) - FT_MODERRDEF( CID, 0x600, "CID module" ) - FT_MODERRDEF( Gzip, 0x700, "Gzip module" ) - FT_MODERRDEF( LZW, 0x800, "LZW module" ) - FT_MODERRDEF( OTvalid, 0x900, "OpenType validation module" ) - FT_MODERRDEF( PCF, 0xA00, "PCF module" ) - FT_MODERRDEF( PFR, 0xB00, "PFR module" ) - FT_MODERRDEF( PSaux, 0xC00, "PS auxiliary module" ) - FT_MODERRDEF( PShinter, 0xD00, "PS hinter module" ) - FT_MODERRDEF( PSnames, 0xE00, "PS names module" ) - FT_MODERRDEF( Raster, 0xF00, "raster module" ) - FT_MODERRDEF( SFNT, 0x1000, "SFNT module" ) - FT_MODERRDEF( Smooth, 0x1100, "smooth raster module" ) - FT_MODERRDEF( TrueType, 0x1200, "TrueType module" ) - FT_MODERRDEF( Type1, 0x1300, "Type 1 module" ) - FT_MODERRDEF( Type42, 0x1400, "Type 42 module" ) - FT_MODERRDEF( Winfonts, 0x1500, "Windows FON/FNT module" ) - FT_MODERRDEF( GXvalid, 0x1600, "GX validation module" ) +FT_MODERRDEF( Base, 0x000, "base module" ) +FT_MODERRDEF( Autofit, 0x100, "autofitter module" ) +FT_MODERRDEF( BDF, 0x200, "BDF module" ) +FT_MODERRDEF( Bzip2, 0x300, "Bzip2 module" ) +FT_MODERRDEF( Cache, 0x400, "cache module" ) +FT_MODERRDEF( CFF, 0x500, "CFF module" ) +FT_MODERRDEF( CID, 0x600, "CID module" ) +FT_MODERRDEF( Gzip, 0x700, "Gzip module" ) +FT_MODERRDEF( LZW, 0x800, "LZW module" ) +FT_MODERRDEF( OTvalid, 0x900, "OpenType validation module" ) +FT_MODERRDEF( PCF, 0xA00, "PCF module" ) +FT_MODERRDEF( PFR, 0xB00, "PFR module" ) +FT_MODERRDEF( PSaux, 0xC00, "PS auxiliary module" ) +FT_MODERRDEF( PShinter, 0xD00, "PS hinter module" ) +FT_MODERRDEF( PSnames, 0xE00, "PS names module" ) +FT_MODERRDEF( Raster, 0xF00, "raster module" ) +FT_MODERRDEF( SFNT, 0x1000, "SFNT module" ) +FT_MODERRDEF( Smooth, 0x1100, "smooth raster module" ) +FT_MODERRDEF( TrueType, 0x1200, "TrueType module" ) +FT_MODERRDEF( Type1, 0x1300, "Type 1 module" ) +FT_MODERRDEF( Type42, 0x1400, "Type 42 module" ) +FT_MODERRDEF( Winfonts, 0x1500, "Windows FON/FNT module" ) +FT_MODERRDEF( GXvalid, 0x1600, "GX validation module" ) #ifdef FT_MODERR_END_LIST - FT_MODERR_END_LIST +FT_MODERR_END_LIST #endif - /*******************************************************************/ - /*******************************************************************/ - /***** *****/ - /***** CLEANUP *****/ - /***** *****/ - /*******************************************************************/ - /*******************************************************************/ +/*******************************************************************/ +/*******************************************************************/ +/***** *****/ +/***** CLEANUP *****/ +/***** *****/ +/*******************************************************************/ +/*******************************************************************/ #ifdef FT_NEED_EXTERN_C - } +} #endif #undef FT_MODERR_START_LIST diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/ftotval.h b/thirdparties/common/include/libfreetype/freetype2/freetype/ftotval.h index 027f2e8..7f2c924 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/ftotval.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/ftotval.h @@ -43,56 +43,56 @@ 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, MATH). */ - /* */ - /*************************************************************************/ - - - /********************************************************************** - * - * @enum: - * FT_VALIDATE_OTXXX - * - * @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_MATH :: - * Validate MATH table. - * - * FT_VALIDATE_OT :: - * Validate all OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH). - * - */ +/*************************************************************************/ +/* */ +/* <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, MATH). */ +/* */ +/*************************************************************************/ + + +/********************************************************************** + * + * @enum: + * FT_VALIDATE_OTXXX + * + * @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_MATH :: + * Validate MATH table. + * + * FT_VALIDATE_OT :: + * Validate all OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH). + * + */ #define FT_VALIDATE_BASE 0x0100 #define FT_VALIDATE_GDEF 0x0200 #define FT_VALIDATE_GPOS 0x0400 @@ -107,92 +107,92 @@ FT_BEGIN_HEADER FT_VALIDATE_JSTF | \ FT_VALIDATE_MATH - /* */ - - /********************************************************************** - * - * @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_OTXXX 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 - * @FT_OpenType_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 ); - - /* */ - - /********************************************************************** - * - * @function: - * FT_OpenType_Free - * - * @description: - * Free the buffer allocated by OpenType validator. - * - * @input: - * face :: - * A handle to the input face. - * - * table :: - * The pointer to the buffer that is allocated by - * @FT_OpenType_Validate. - * - * @note: - * This function must be used to free the buffer allocated by - * @FT_OpenType_Validate only. - */ - FT_EXPORT( void ) - FT_OpenType_Free( FT_Face face, - FT_Bytes table ); - - - /* */ +/* */ + +/********************************************************************** + * + * @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_OTXXX 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 + * @FT_OpenType_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 ); + +/* */ + +/********************************************************************** + * + * @function: + * FT_OpenType_Free + * + * @description: + * Free the buffer allocated by OpenType validator. + * + * @input: + * face :: + * A handle to the input face. + * + * table :: + * The pointer to the buffer that is allocated by + * @FT_OpenType_Validate. + * + * @note: + * This function must be used to free the buffer allocated by + * @FT_OpenType_Validate only. + */ +FT_EXPORT( void ) +FT_OpenType_Free( FT_Face face, + FT_Bytes table ); + + +/* */ FT_END_HEADER diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/ftoutln.h b/thirdparties/common/include/libfreetype/freetype2/freetype/ftoutln.h index fd69f28..3aff51a 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/ftoutln.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/ftoutln.h @@ -34,517 +34,516 @@ FT_BEGIN_HEADER - /*************************************************************************/ - /* */ - /* <Section> */ - /* outline_processing */ - /* */ - /* <Title> */ - /* Outline Processing */ - /* */ - /* <Abstract> */ - /* Functions to create, transform, and render vectorial glyph images. */ - /* */ - /* <Description> */ - /* This section contains routines used to create and destroy scalable */ - /* glyph images known as `outlines'. These can also be measured, */ - /* transformed, and converted into bitmaps and pixmaps. */ - /* */ - /* <Order> */ - /* FT_Outline */ - /* FT_OUTLINE_FLAGS */ - /* FT_Outline_New */ - /* FT_Outline_Done */ - /* FT_Outline_Copy */ - /* FT_Outline_Translate */ - /* FT_Outline_Transform */ - /* FT_Outline_Embolden */ - /* FT_Outline_EmboldenXY */ - /* FT_Outline_Reverse */ - /* FT_Outline_Check */ - /* */ - /* FT_Outline_Get_CBox */ - /* FT_Outline_Get_BBox */ - /* */ - /* FT_Outline_Get_Bitmap */ - /* FT_Outline_Render */ - /* */ - /* FT_Outline_Decompose */ - /* FT_Outline_Funcs */ - /* FT_Outline_MoveTo_Func */ - /* FT_Outline_LineTo_Func */ - /* FT_Outline_ConicTo_Func */ - /* FT_Outline_CubicTo_Func */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Decompose */ - /* */ - /* <Description> */ - /* Walk over an outline's structure to decompose it into individual */ - /* segments and Bézier arcs. This function also emits `move to' */ - /* operations to indicate the start of new contours in the outline. */ - /* */ - /* <Input> */ - /* outline :: A pointer to the source target. */ - /* */ - /* func_interface :: A table of `emitters', i.e., function pointers */ - /* called during decomposition to indicate path */ - /* operations. */ - /* */ - /* <InOut> */ - /* user :: A typeless pointer which is passed to each */ - /* emitter during the decomposition. It can be */ - /* used to store the state during the */ - /* decomposition. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Outline_Decompose( FT_Outline* outline, - const FT_Outline_Funcs* func_interface, - void* user ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_New */ - /* */ - /* <Description> */ - /* Create a new outline of a given size. */ - /* */ - /* <Input> */ - /* library :: A handle to the library object from where the */ - /* outline is allocated. Note however that the new */ - /* outline will *not* necessarily be *freed*, when */ - /* destroying the library, by @FT_Done_FreeType. */ - /* */ - /* numPoints :: The maximum number of points within the outline. */ - /* Must be smaller than or equal to 0xFFFF (65535). */ - /* */ - /* numContours :: The maximum number of contours within the outline. */ - /* This value must be in the range 0 to `numPoints'. */ - /* */ - /* <Output> */ - /* anoutline :: A handle to the new outline. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* The reason why this function takes a `library' parameter is simply */ - /* to use the library's memory allocator. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Outline_New( FT_Library library, - FT_UInt numPoints, - FT_Int numContours, - FT_Outline *anoutline ); - - - FT_EXPORT( FT_Error ) - FT_Outline_New_Internal( FT_Memory memory, - FT_UInt numPoints, - FT_Int numContours, - FT_Outline *anoutline ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Done */ - /* */ - /* <Description> */ - /* Destroy an outline created with @FT_Outline_New. */ - /* */ - /* <Input> */ - /* library :: A handle of the library object used to allocate the */ - /* outline. */ - /* */ - /* outline :: A pointer to the outline object to be discarded. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* If the outline's `owner' field is not set, only the outline */ - /* descriptor will be released. */ - /* */ - /* The reason why this function takes an `library' parameter is */ - /* simply to use ft_mem_free(). */ - /* */ - FT_EXPORT( FT_Error ) - FT_Outline_Done( FT_Library library, - FT_Outline* outline ); - - - FT_EXPORT( FT_Error ) - FT_Outline_Done_Internal( FT_Memory memory, - FT_Outline* outline ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Check */ - /* */ - /* <Description> */ - /* Check the contents of an outline descriptor. */ - /* */ - /* <Input> */ - /* outline :: A handle to a source outline. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Outline_Check( FT_Outline* outline ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Get_CBox */ - /* */ - /* <Description> */ - /* Return an outline's `control box'. The control box encloses all */ - /* the outline's points, including Bézier control points. Though it */ - /* coincides with the exact bounding box for most glyphs, it can be */ - /* slightly larger in some situations (like when rotating an outline */ - /* which contains Bézier outside arcs). */ - /* */ - /* Computing the control box is very fast, while getting the bounding */ - /* box can take much more time as it needs to walk over all segments */ - /* and arcs in the outline. To get the latter, you can use the */ - /* `ftbbox' component which is dedicated to this single task. */ - /* */ - /* <Input> */ - /* outline :: A pointer to the source outline descriptor. */ - /* */ - /* <Output> */ - /* acbox :: The outline's control box. */ - /* */ - /* <Note> */ - /* See @FT_Glyph_Get_CBox for a discussion of tricky fonts. */ - /* */ - FT_EXPORT( void ) - FT_Outline_Get_CBox( const FT_Outline* outline, - FT_BBox *acbox ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Translate */ - /* */ - /* <Description> */ - /* Apply a simple translation to the points of an outline. */ - /* */ - /* <InOut> */ - /* outline :: A pointer to the target outline descriptor. */ - /* */ - /* <Input> */ - /* xOffset :: The horizontal offset. */ - /* */ - /* yOffset :: The vertical offset. */ - /* */ - FT_EXPORT( void ) - FT_Outline_Translate( const FT_Outline* outline, - FT_Pos xOffset, - FT_Pos yOffset ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Copy */ - /* */ - /* <Description> */ - /* Copy an outline into another one. Both objects must have the */ - /* same sizes (number of points & number of contours) when this */ - /* function is called. */ - /* */ - /* <Input> */ - /* source :: A handle to the source outline. */ - /* */ - /* <Output> */ - /* target :: A handle to the target outline. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Outline_Copy( const FT_Outline* source, - FT_Outline *target ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Transform */ - /* */ - /* <Description> */ - /* Apply a simple 2x2 matrix to all of an outline's points. Useful */ - /* for applying rotations, slanting, flipping, etc. */ - /* */ - /* <InOut> */ - /* outline :: A pointer to the target outline descriptor. */ - /* */ - /* <Input> */ - /* matrix :: A pointer to the transformation matrix. */ - /* */ - /* <Note> */ - /* You can use @FT_Outline_Translate if you need to translate the */ - /* outline's points. */ - /* */ - FT_EXPORT( void ) - FT_Outline_Transform( const FT_Outline* outline, - const FT_Matrix* matrix ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Embolden */ - /* */ - /* <Description> */ - /* Embolden 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. */ - /* */ - /* Negative `strength' values to reduce the outline thickness are */ - /* possible also. */ - /* */ - /* <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. */ - /* */ - /* <Note> */ - /* The used algorithm to increase or decrease the thickness of the */ - /* glyph doesn't change the number of points; this means that certain */ - /* situations like acute angles or intersections are sometimes */ - /* handled incorrectly. */ - /* */ - /* If you need `better' metrics values you should call */ - /* @FT_Outline_Get_CBox or @FT_Outline_Get_BBox. */ - /* */ - /* Example call: */ - /* */ - /* { */ - /* FT_Load_Glyph( face, index, FT_LOAD_DEFAULT ); */ - /* if ( face->slot->format == FT_GLYPH_FORMAT_OUTLINE ) */ - /* FT_Outline_Embolden( &face->slot->outline, strength ); */ - /* } */ - /* */ - FT_EXPORT( FT_Error ) - FT_Outline_Embolden( FT_Outline* outline, - FT_Pos strength ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_EmboldenXY */ - /* */ - /* <Description> */ - /* Embolden an outline. The new outline will be `xstrength' pixels */ - /* wider and `ystrength' pixels higher. Otherwise, it is similar to */ - /* @FT_Outline_Embolden, which uses the same strength in both */ - /* directions. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Outline_EmboldenXY( FT_Outline* outline, - FT_Pos xstrength, - FT_Pos ystrength ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Reverse */ - /* */ - /* <Description> */ - /* Reverse the drawing direction of an outline. This is used to */ - /* ensure consistent fill conventions for mirrored glyphs. */ - /* */ - /* <InOut> */ - /* outline :: A pointer to the target outline descriptor. */ - /* */ - /* <Note> */ - /* This function toggles the bit flag @FT_OUTLINE_REVERSE_FILL in */ - /* the outline's `flags' field. */ - /* */ - /* It shouldn't be used by a normal client application, unless it */ - /* knows what it is doing. */ - /* */ - FT_EXPORT( void ) - FT_Outline_Reverse( FT_Outline* outline ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Get_Bitmap */ - /* */ - /* <Description> */ - /* Render an outline within a bitmap. The outline's image is simply */ - /* OR-ed to the target bitmap. */ - /* */ - /* <Input> */ - /* library :: A handle to a FreeType library object. */ - /* */ - /* outline :: A pointer to the source outline descriptor. */ - /* */ - /* <InOut> */ - /* abitmap :: A pointer to the target bitmap descriptor. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* This function does NOT CREATE the bitmap, it only renders an */ - /* outline image within the one you pass to it! Consequently, the */ - /* various fields in `abitmap' should be set accordingly. */ - /* */ - /* It will use the raster corresponding to the default glyph format. */ - /* */ - /* The value of the `num_grays' field in `abitmap' is ignored. If */ - /* you select the gray-level rasterizer, and you want less than 256 */ - /* gray levels, you have to use @FT_Outline_Render directly. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Outline_Get_Bitmap( FT_Library library, - FT_Outline* outline, - const FT_Bitmap *abitmap ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Render */ - /* */ - /* <Description> */ - /* Render an outline within a bitmap using the current scan-convert. */ - /* This function uses an @FT_Raster_Params structure as an argument, */ - /* allowing advanced features like direct composition, translucency, */ - /* etc. */ - /* */ - /* <Input> */ - /* library :: A handle to a FreeType library object. */ - /* */ - /* outline :: A pointer to the source outline descriptor. */ - /* */ - /* <InOut> */ - /* params :: A pointer to an @FT_Raster_Params structure used to */ - /* describe the rendering operation. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* You should know what you are doing and how @FT_Raster_Params works */ - /* to use this function. */ - /* */ - /* The field `params.source' will be set to `outline' before the scan */ - /* converter is called, which means that the value you give to it is */ - /* actually ignored. */ - /* */ - /* The gray-level rasterizer always uses 256 gray levels. If you */ - /* want less gray levels, you have to provide your own span callback. */ - /* See the @FT_RASTER_FLAG_DIRECT value of the `flags' field in the */ - /* @FT_Raster_Params structure for more details. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Outline_Render( FT_Library library, - FT_Outline* outline, - FT_Raster_Params* params ); - - - /************************************************************************** - * - * @enum: - * FT_Orientation - * - * @description: - * A list of values used to describe an outline's contour orientation. - * - * The TrueType and PostScript specifications use different conventions - * to determine whether outline contours should be filled or unfilled. - * - * @values: - * FT_ORIENTATION_TRUETYPE :: - * According to the TrueType specification, clockwise contours must - * be filled, and counter-clockwise ones must be unfilled. - * - * FT_ORIENTATION_POSTSCRIPT :: - * According to the PostScript specification, counter-clockwise contours - * must be filled, and clockwise ones must be unfilled. - * - * FT_ORIENTATION_FILL_RIGHT :: - * This is identical to @FT_ORIENTATION_TRUETYPE, but is used to - * remember that in TrueType, everything that is to the right of - * the drawing direction of a contour must be filled. - * - * FT_ORIENTATION_FILL_LEFT :: - * This is identical to @FT_ORIENTATION_POSTSCRIPT, but is used to - * remember that in PostScript, everything that is to the left of - * the drawing direction of a contour must be filled. - * - * FT_ORIENTATION_NONE :: - * The orientation cannot be determined. That is, different parts of - * the glyph have different orientation. - * - */ - typedef enum FT_Orientation_ - { +/*************************************************************************/ +/* */ +/* <Section> */ +/* outline_processing */ +/* */ +/* <Title> */ +/* Outline Processing */ +/* */ +/* <Abstract> */ +/* Functions to create, transform, and render vectorial glyph images. */ +/* */ +/* <Description> */ +/* This section contains routines used to create and destroy scalable */ +/* glyph images known as `outlines'. These can also be measured, */ +/* transformed, and converted into bitmaps and pixmaps. */ +/* */ +/* <Order> */ +/* FT_Outline */ +/* FT_OUTLINE_FLAGS */ +/* FT_Outline_New */ +/* FT_Outline_Done */ +/* FT_Outline_Copy */ +/* FT_Outline_Translate */ +/* FT_Outline_Transform */ +/* FT_Outline_Embolden */ +/* FT_Outline_EmboldenXY */ +/* FT_Outline_Reverse */ +/* FT_Outline_Check */ +/* */ +/* FT_Outline_Get_CBox */ +/* FT_Outline_Get_BBox */ +/* */ +/* FT_Outline_Get_Bitmap */ +/* FT_Outline_Render */ +/* */ +/* FT_Outline_Decompose */ +/* FT_Outline_Funcs */ +/* FT_Outline_MoveTo_Func */ +/* FT_Outline_LineTo_Func */ +/* FT_Outline_ConicTo_Func */ +/* FT_Outline_CubicTo_Func */ +/* */ +/*************************************************************************/ + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Outline_Decompose */ +/* */ +/* <Description> */ +/* Walk over an outline's structure to decompose it into individual */ +/* segments and Bézier arcs. This function also emits `move to' */ +/* operations to indicate the start of new contours in the outline. */ +/* */ +/* <Input> */ +/* outline :: A pointer to the source target. */ +/* */ +/* func_interface :: A table of `emitters', i.e., function pointers */ +/* called during decomposition to indicate path */ +/* operations. */ +/* */ +/* <InOut> */ +/* user :: A typeless pointer which is passed to each */ +/* emitter during the decomposition. It can be */ +/* used to store the state during the */ +/* decomposition. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +FT_EXPORT( FT_Error ) +FT_Outline_Decompose( FT_Outline* outline, + const FT_Outline_Funcs* func_interface, + void* user ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Outline_New */ +/* */ +/* <Description> */ +/* Create a new outline of a given size. */ +/* */ +/* <Input> */ +/* library :: A handle to the library object from where the */ +/* outline is allocated. Note however that the new */ +/* outline will *not* necessarily be *freed*, when */ +/* destroying the library, by @FT_Done_FreeType. */ +/* */ +/* numPoints :: The maximum number of points within the outline. */ +/* Must be smaller than or equal to 0xFFFF (65535). */ +/* */ +/* numContours :: The maximum number of contours within the outline. */ +/* This value must be in the range 0 to `numPoints'. */ +/* */ +/* <Output> */ +/* anoutline :: A handle to the new outline. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +/* <Note> */ +/* The reason why this function takes a `library' parameter is simply */ +/* to use the library's memory allocator. */ +/* */ +FT_EXPORT( FT_Error ) +FT_Outline_New( FT_Library library, + FT_UInt numPoints, + FT_Int numContours, + FT_Outline *anoutline ); + + +FT_EXPORT( FT_Error ) +FT_Outline_New_Internal( FT_Memory memory, + FT_UInt numPoints, + FT_Int numContours, + FT_Outline *anoutline ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Outline_Done */ +/* */ +/* <Description> */ +/* Destroy an outline created with @FT_Outline_New. */ +/* */ +/* <Input> */ +/* library :: A handle of the library object used to allocate the */ +/* outline. */ +/* */ +/* outline :: A pointer to the outline object to be discarded. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +/* <Note> */ +/* If the outline's `owner' field is not set, only the outline */ +/* descriptor will be released. */ +/* */ +/* The reason why this function takes an `library' parameter is */ +/* simply to use ft_mem_free(). */ +/* */ +FT_EXPORT( FT_Error ) +FT_Outline_Done( FT_Library library, + FT_Outline* outline ); + + +FT_EXPORT( FT_Error ) +FT_Outline_Done_Internal( FT_Memory memory, + FT_Outline* outline ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Outline_Check */ +/* */ +/* <Description> */ +/* Check the contents of an outline descriptor. */ +/* */ +/* <Input> */ +/* outline :: A handle to a source outline. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +FT_EXPORT( FT_Error ) +FT_Outline_Check( FT_Outline* outline ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Outline_Get_CBox */ +/* */ +/* <Description> */ +/* Return an outline's `control box'. The control box encloses all */ +/* the outline's points, including Bézier control points. Though it */ +/* coincides with the exact bounding box for most glyphs, it can be */ +/* slightly larger in some situations (like when rotating an outline */ +/* which contains Bézier outside arcs). */ +/* */ +/* Computing the control box is very fast, while getting the bounding */ +/* box can take much more time as it needs to walk over all segments */ +/* and arcs in the outline. To get the latter, you can use the */ +/* `ftbbox' component which is dedicated to this single task. */ +/* */ +/* <Input> */ +/* outline :: A pointer to the source outline descriptor. */ +/* */ +/* <Output> */ +/* acbox :: The outline's control box. */ +/* */ +/* <Note> */ +/* See @FT_Glyph_Get_CBox for a discussion of tricky fonts. */ +/* */ +FT_EXPORT( void ) +FT_Outline_Get_CBox( const FT_Outline* outline, + FT_BBox *acbox ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Outline_Translate */ +/* */ +/* <Description> */ +/* Apply a simple translation to the points of an outline. */ +/* */ +/* <InOut> */ +/* outline :: A pointer to the target outline descriptor. */ +/* */ +/* <Input> */ +/* xOffset :: The horizontal offset. */ +/* */ +/* yOffset :: The vertical offset. */ +/* */ +FT_EXPORT( void ) +FT_Outline_Translate( const FT_Outline* outline, + FT_Pos xOffset, + FT_Pos yOffset ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Outline_Copy */ +/* */ +/* <Description> */ +/* Copy an outline into another one. Both objects must have the */ +/* same sizes (number of points & number of contours) when this */ +/* function is called. */ +/* */ +/* <Input> */ +/* source :: A handle to the source outline. */ +/* */ +/* <Output> */ +/* target :: A handle to the target outline. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +FT_EXPORT( FT_Error ) +FT_Outline_Copy( const FT_Outline* source, + FT_Outline *target ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Outline_Transform */ +/* */ +/* <Description> */ +/* Apply a simple 2x2 matrix to all of an outline's points. Useful */ +/* for applying rotations, slanting, flipping, etc. */ +/* */ +/* <InOut> */ +/* outline :: A pointer to the target outline descriptor. */ +/* */ +/* <Input> */ +/* matrix :: A pointer to the transformation matrix. */ +/* */ +/* <Note> */ +/* You can use @FT_Outline_Translate if you need to translate the */ +/* outline's points. */ +/* */ +FT_EXPORT( void ) +FT_Outline_Transform( const FT_Outline* outline, + const FT_Matrix* matrix ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Outline_Embolden */ +/* */ +/* <Description> */ +/* Embolden 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. */ +/* */ +/* Negative `strength' values to reduce the outline thickness are */ +/* possible also. */ +/* */ +/* <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. */ +/* */ +/* <Note> */ +/* The used algorithm to increase or decrease the thickness of the */ +/* glyph doesn't change the number of points; this means that certain */ +/* situations like acute angles or intersections are sometimes */ +/* handled incorrectly. */ +/* */ +/* If you need `better' metrics values you should call */ +/* @FT_Outline_Get_CBox or @FT_Outline_Get_BBox. */ +/* */ +/* Example call: */ +/* */ +/* { */ +/* FT_Load_Glyph( face, index, FT_LOAD_DEFAULT ); */ +/* if ( face->slot->format == FT_GLYPH_FORMAT_OUTLINE ) */ +/* FT_Outline_Embolden( &face->slot->outline, strength ); */ +/* } */ +/* */ +FT_EXPORT( FT_Error ) +FT_Outline_Embolden( FT_Outline* outline, + FT_Pos strength ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Outline_EmboldenXY */ +/* */ +/* <Description> */ +/* Embolden an outline. The new outline will be `xstrength' pixels */ +/* wider and `ystrength' pixels higher. Otherwise, it is similar to */ +/* @FT_Outline_Embolden, which uses the same strength in both */ +/* directions. */ +/* */ +FT_EXPORT( FT_Error ) +FT_Outline_EmboldenXY( FT_Outline* outline, + FT_Pos xstrength, + FT_Pos ystrength ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Outline_Reverse */ +/* */ +/* <Description> */ +/* Reverse the drawing direction of an outline. This is used to */ +/* ensure consistent fill conventions for mirrored glyphs. */ +/* */ +/* <InOut> */ +/* outline :: A pointer to the target outline descriptor. */ +/* */ +/* <Note> */ +/* This function toggles the bit flag @FT_OUTLINE_REVERSE_FILL in */ +/* the outline's `flags' field. */ +/* */ +/* It shouldn't be used by a normal client application, unless it */ +/* knows what it is doing. */ +/* */ +FT_EXPORT( void ) +FT_Outline_Reverse( FT_Outline* outline ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Outline_Get_Bitmap */ +/* */ +/* <Description> */ +/* Render an outline within a bitmap. The outline's image is simply */ +/* OR-ed to the target bitmap. */ +/* */ +/* <Input> */ +/* library :: A handle to a FreeType library object. */ +/* */ +/* outline :: A pointer to the source outline descriptor. */ +/* */ +/* <InOut> */ +/* abitmap :: A pointer to the target bitmap descriptor. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +/* <Note> */ +/* This function does NOT CREATE the bitmap, it only renders an */ +/* outline image within the one you pass to it! Consequently, the */ +/* various fields in `abitmap' should be set accordingly. */ +/* */ +/* It will use the raster corresponding to the default glyph format. */ +/* */ +/* The value of the `num_grays' field in `abitmap' is ignored. If */ +/* you select the gray-level rasterizer, and you want less than 256 */ +/* gray levels, you have to use @FT_Outline_Render directly. */ +/* */ +FT_EXPORT( FT_Error ) +FT_Outline_Get_Bitmap( FT_Library library, + FT_Outline* outline, + const FT_Bitmap *abitmap ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Outline_Render */ +/* */ +/* <Description> */ +/* Render an outline within a bitmap using the current scan-convert. */ +/* This function uses an @FT_Raster_Params structure as an argument, */ +/* allowing advanced features like direct composition, translucency, */ +/* etc. */ +/* */ +/* <Input> */ +/* library :: A handle to a FreeType library object. */ +/* */ +/* outline :: A pointer to the source outline descriptor. */ +/* */ +/* <InOut> */ +/* params :: A pointer to an @FT_Raster_Params structure used to */ +/* describe the rendering operation. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +/* <Note> */ +/* You should know what you are doing and how @FT_Raster_Params works */ +/* to use this function. */ +/* */ +/* The field `params.source' will be set to `outline' before the scan */ +/* converter is called, which means that the value you give to it is */ +/* actually ignored. */ +/* */ +/* The gray-level rasterizer always uses 256 gray levels. If you */ +/* want less gray levels, you have to provide your own span callback. */ +/* See the @FT_RASTER_FLAG_DIRECT value of the `flags' field in the */ +/* @FT_Raster_Params structure for more details. */ +/* */ +FT_EXPORT( FT_Error ) +FT_Outline_Render( FT_Library library, + FT_Outline* outline, + FT_Raster_Params* params ); + + +/************************************************************************** + * + * @enum: + * FT_Orientation + * + * @description: + * A list of values used to describe an outline's contour orientation. + * + * The TrueType and PostScript specifications use different conventions + * to determine whether outline contours should be filled or unfilled. + * + * @values: + * FT_ORIENTATION_TRUETYPE :: + * According to the TrueType specification, clockwise contours must + * be filled, and counter-clockwise ones must be unfilled. + * + * FT_ORIENTATION_POSTSCRIPT :: + * According to the PostScript specification, counter-clockwise contours + * must be filled, and clockwise ones must be unfilled. + * + * FT_ORIENTATION_FILL_RIGHT :: + * This is identical to @FT_ORIENTATION_TRUETYPE, but is used to + * remember that in TrueType, everything that is to the right of + * the drawing direction of a contour must be filled. + * + * FT_ORIENTATION_FILL_LEFT :: + * This is identical to @FT_ORIENTATION_POSTSCRIPT, but is used to + * remember that in PostScript, everything that is to the left of + * the drawing direction of a contour must be filled. + * + * FT_ORIENTATION_NONE :: + * The orientation cannot be determined. That is, different parts of + * the glyph have different orientation. + * + */ +typedef enum FT_Orientation_ { FT_ORIENTATION_TRUETYPE = 0, FT_ORIENTATION_POSTSCRIPT = 1, FT_ORIENTATION_FILL_RIGHT = FT_ORIENTATION_TRUETYPE, FT_ORIENTATION_FILL_LEFT = FT_ORIENTATION_POSTSCRIPT, FT_ORIENTATION_NONE - } FT_Orientation; - - - /************************************************************************** - * - * @function: - * FT_Outline_Get_Orientation - * - * @description: - * This function analyzes a glyph outline and tries to compute its - * fill orientation (see @FT_Orientation). This is done by computing - * the direction of each global horizontal and/or vertical extrema - * within the outline. - * - * Note that this will return @FT_ORIENTATION_TRUETYPE for empty - * outlines. - * - * @input: - * outline :: - * A handle to the source outline. - * - * @return: - * The orientation. - * - */ - FT_EXPORT( FT_Orientation ) - FT_Outline_Get_Orientation( FT_Outline* outline ); - - - /* */ +} FT_Orientation; + + +/************************************************************************** + * + * @function: + * FT_Outline_Get_Orientation + * + * @description: + * This function analyzes a glyph outline and tries to compute its + * fill orientation (see @FT_Orientation). This is done by computing + * the direction of each global horizontal and/or vertical extrema + * within the outline. + * + * Note that this will return @FT_ORIENTATION_TRUETYPE for empty + * outlines. + * + * @input: + * outline :: + * A handle to the source outline. + * + * @return: + * The orientation. + * + */ +FT_EXPORT( FT_Orientation ) +FT_Outline_Get_Orientation( FT_Outline* outline ); + + +/* */ FT_END_HEADER diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/ftpfr.h b/thirdparties/common/include/libfreetype/freetype2/freetype/ftpfr.h index 0b7b7d4..abcc786 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/ftpfr.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/ftpfr.h @@ -32,136 +32,136 @@ FT_BEGIN_HEADER - /*************************************************************************/ - /* */ - /* <Section> */ - /* pfr_fonts */ - /* */ - /* <Title> */ - /* PFR Fonts */ - /* */ - /* <Abstract> */ - /* PFR/TrueDoc specific API. */ - /* */ - /* <Description> */ - /* This section contains the declaration of PFR-specific functions. */ - /* */ - /*************************************************************************/ - - - /********************************************************************** - * - * @function: - * FT_Get_PFR_Metrics - * - * @description: - * Return the outline and metrics resolutions of a given PFR face. - * - * @input: - * face :: Handle to the input face. It can be a non-PFR face. - * - * @output: - * aoutline_resolution :: - * Outline resolution. This is equivalent to `face->units_per_EM' - * for non-PFR fonts. Optional (parameter can be NULL). - * - * ametrics_resolution :: - * Metrics resolution. This is equivalent to `outline_resolution' - * for non-PFR fonts. Optional (parameter can be NULL). - * - * ametrics_x_scale :: - * A 16.16 fixed-point number used to scale distance expressed - * in metrics units to device sub-pixels. This is equivalent to - * `face->size->x_scale', but for metrics only. Optional (parameter - * can be NULL). - * - * ametrics_y_scale :: - * Same as `ametrics_x_scale' but for the vertical direction. - * optional (parameter can be NULL). - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * If the input face is not a PFR, this function will return an error. - * However, in all cases, it will return valid values. - */ - FT_EXPORT( FT_Error ) - FT_Get_PFR_Metrics( FT_Face face, - FT_UInt *aoutline_resolution, - FT_UInt *ametrics_resolution, - FT_Fixed *ametrics_x_scale, - FT_Fixed *ametrics_y_scale ); - - - /********************************************************************** - * - * @function: - * FT_Get_PFR_Kerning - * - * @description: - * Return the kerning pair corresponding to two glyphs in a PFR face. - * The distance is expressed in metrics units, unlike the result of - * @FT_Get_Kerning. - * - * @input: - * face :: A handle to the input face. - * - * left :: Index of the left glyph. - * - * right :: Index of the right glyph. - * - * @output: - * avector :: A kerning vector. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * This function always return distances in original PFR metrics - * units. This is unlike @FT_Get_Kerning with the @FT_KERNING_UNSCALED - * mode, which always returns distances converted to outline units. - * - * You can use the value of the `x_scale' and `y_scale' parameters - * returned by @FT_Get_PFR_Metrics to scale these to device sub-pixels. - */ - FT_EXPORT( FT_Error ) - FT_Get_PFR_Kerning( FT_Face face, - FT_UInt left, - FT_UInt right, - FT_Vector *avector ); - - - /********************************************************************** - * - * @function: - * FT_Get_PFR_Advance - * - * @description: - * Return a given glyph advance, expressed in original metrics units, - * from a PFR font. - * - * @input: - * face :: A handle to the input face. - * - * gindex :: The glyph index. - * - * @output: - * aadvance :: The glyph advance in metrics units. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * You can use the `x_scale' or `y_scale' results of @FT_Get_PFR_Metrics - * to convert the advance to device sub-pixels (i.e., 1/64th of pixels). - */ - FT_EXPORT( FT_Error ) - FT_Get_PFR_Advance( FT_Face face, - FT_UInt gindex, - FT_Pos *aadvance ); - - /* */ +/*************************************************************************/ +/* */ +/* <Section> */ +/* pfr_fonts */ +/* */ +/* <Title> */ +/* PFR Fonts */ +/* */ +/* <Abstract> */ +/* PFR/TrueDoc specific API. */ +/* */ +/* <Description> */ +/* This section contains the declaration of PFR-specific functions. */ +/* */ +/*************************************************************************/ + + +/********************************************************************** + * + * @function: + * FT_Get_PFR_Metrics + * + * @description: + * Return the outline and metrics resolutions of a given PFR face. + * + * @input: + * face :: Handle to the input face. It can be a non-PFR face. + * + * @output: + * aoutline_resolution :: + * Outline resolution. This is equivalent to `face->units_per_EM' + * for non-PFR fonts. Optional (parameter can be NULL). + * + * ametrics_resolution :: + * Metrics resolution. This is equivalent to `outline_resolution' + * for non-PFR fonts. Optional (parameter can be NULL). + * + * ametrics_x_scale :: + * A 16.16 fixed-point number used to scale distance expressed + * in metrics units to device sub-pixels. This is equivalent to + * `face->size->x_scale', but for metrics only. Optional (parameter + * can be NULL). + * + * ametrics_y_scale :: + * Same as `ametrics_x_scale' but for the vertical direction. + * optional (parameter can be NULL). + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If the input face is not a PFR, this function will return an error. + * However, in all cases, it will return valid values. + */ +FT_EXPORT( FT_Error ) +FT_Get_PFR_Metrics( FT_Face face, + FT_UInt *aoutline_resolution, + FT_UInt *ametrics_resolution, + FT_Fixed *ametrics_x_scale, + FT_Fixed *ametrics_y_scale ); + + +/********************************************************************** + * + * @function: + * FT_Get_PFR_Kerning + * + * @description: + * Return the kerning pair corresponding to two glyphs in a PFR face. + * The distance is expressed in metrics units, unlike the result of + * @FT_Get_Kerning. + * + * @input: + * face :: A handle to the input face. + * + * left :: Index of the left glyph. + * + * right :: Index of the right glyph. + * + * @output: + * avector :: A kerning vector. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function always return distances in original PFR metrics + * units. This is unlike @FT_Get_Kerning with the @FT_KERNING_UNSCALED + * mode, which always returns distances converted to outline units. + * + * You can use the value of the `x_scale' and `y_scale' parameters + * returned by @FT_Get_PFR_Metrics to scale these to device sub-pixels. + */ +FT_EXPORT( FT_Error ) +FT_Get_PFR_Kerning( FT_Face face, + FT_UInt left, + FT_UInt right, + FT_Vector *avector ); + + +/********************************************************************** + * + * @function: + * FT_Get_PFR_Advance + * + * @description: + * Return a given glyph advance, expressed in original metrics units, + * from a PFR font. + * + * @input: + * face :: A handle to the input face. + * + * gindex :: The glyph index. + * + * @output: + * aadvance :: The glyph advance in metrics units. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * You can use the `x_scale' or `y_scale' results of @FT_Get_PFR_Metrics + * to convert the advance to device sub-pixels (i.e., 1/64th of pixels). + */ +FT_EXPORT( FT_Error ) +FT_Get_PFR_Advance( FT_Face face, + FT_UInt gindex, + FT_Pos *aadvance ); + +/* */ FT_END_HEADER diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/ftrender.h b/thirdparties/common/include/libfreetype/freetype2/freetype/ftrender.h index dd0229b..9415fe2 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/ftrender.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/ftrender.h @@ -28,39 +28,39 @@ FT_BEGIN_HEADER - /*************************************************************************/ - /* */ - /* <Section> */ - /* module_management */ - /* */ - /*************************************************************************/ +/*************************************************************************/ +/* */ +/* <Section> */ +/* module_management */ +/* */ +/*************************************************************************/ - /* create a new glyph object */ - typedef FT_Error - (*FT_Glyph_InitFunc)( FT_Glyph glyph, - FT_GlyphSlot slot ); +/* create a new glyph object */ +typedef FT_Error +(*FT_Glyph_InitFunc)( FT_Glyph glyph, + FT_GlyphSlot slot ); - /* destroys a given glyph object */ - typedef void - (*FT_Glyph_DoneFunc)( FT_Glyph glyph ); +/* destroys a given glyph object */ +typedef void +(*FT_Glyph_DoneFunc)( FT_Glyph glyph ); - typedef void - (*FT_Glyph_TransformFunc)( FT_Glyph glyph, - const FT_Matrix* matrix, - const FT_Vector* delta ); +typedef void +(*FT_Glyph_TransformFunc)( FT_Glyph glyph, + const FT_Matrix* matrix, + const FT_Vector* delta ); - typedef void - (*FT_Glyph_GetBBoxFunc)( FT_Glyph glyph, - FT_BBox* abbox ); +typedef void +(*FT_Glyph_GetBBoxFunc)( FT_Glyph glyph, + FT_BBox* abbox ); - typedef FT_Error - (*FT_Glyph_CopyFunc)( FT_Glyph source, - FT_Glyph target ); +typedef FT_Error +(*FT_Glyph_CopyFunc)( FT_Glyph source, + FT_Glyph target ); - typedef FT_Error - (*FT_Glyph_PrepareFunc)( FT_Glyph glyph, - FT_GlyphSlot slot ); +typedef FT_Error +(*FT_Glyph_PrepareFunc)( FT_Glyph glyph, + FT_GlyphSlot slot ); /* deprecated */ #define FT_Glyph_Init_Func FT_Glyph_InitFunc @@ -71,8 +71,7 @@ FT_BEGIN_HEADER #define FT_Glyph_Prepare_Func FT_Glyph_PrepareFunc - struct FT_Glyph_Class_ - { +struct FT_Glyph_Class_ { FT_Long glyph_size; FT_Glyph_Format glyph_format; FT_Glyph_InitFunc glyph_init; @@ -81,32 +80,32 @@ FT_BEGIN_HEADER FT_Glyph_TransformFunc glyph_transform; FT_Glyph_GetBBoxFunc glyph_bbox; FT_Glyph_PrepareFunc glyph_prepare; - }; +}; - typedef FT_Error - (*FT_Renderer_RenderFunc)( FT_Renderer renderer, - FT_GlyphSlot slot, - FT_UInt mode, - const FT_Vector* origin ); +typedef FT_Error +(*FT_Renderer_RenderFunc)( FT_Renderer renderer, + FT_GlyphSlot slot, + FT_UInt mode, + const FT_Vector* origin ); - typedef FT_Error - (*FT_Renderer_TransformFunc)( FT_Renderer renderer, - FT_GlyphSlot slot, - const FT_Matrix* matrix, - const FT_Vector* delta ); +typedef FT_Error +(*FT_Renderer_TransformFunc)( FT_Renderer renderer, + FT_GlyphSlot slot, + const FT_Matrix* matrix, + const FT_Vector* delta ); - typedef void - (*FT_Renderer_GetCBoxFunc)( FT_Renderer renderer, - FT_GlyphSlot slot, - FT_BBox* cbox ); +typedef void +(*FT_Renderer_GetCBoxFunc)( FT_Renderer renderer, + FT_GlyphSlot slot, + FT_BBox* cbox ); - typedef FT_Error - (*FT_Renderer_SetModeFunc)( FT_Renderer renderer, - FT_ULong mode_tag, - FT_Pointer mode_ptr ); +typedef FT_Error +(*FT_Renderer_SetModeFunc)( FT_Renderer renderer, + FT_ULong mode_tag, + FT_Pointer mode_ptr ); /* deprecated identifiers */ #define FTRenderer_render FT_Renderer_RenderFunc @@ -115,34 +114,33 @@ FT_BEGIN_HEADER #define FTRenderer_setMode FT_Renderer_SetModeFunc - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Renderer_Class */ - /* */ - /* <Description> */ - /* The renderer module class descriptor. */ - /* */ - /* <Fields> */ - /* root :: The root @FT_Module_Class fields. */ - /* */ - /* glyph_format :: The glyph image format this renderer handles. */ - /* */ - /* render_glyph :: A method used to render the image that is in a */ - /* given glyph slot into a bitmap. */ - /* */ - /* transform_glyph :: A method used to transform the image that is in */ - /* a given glyph slot. */ - /* */ - /* get_glyph_cbox :: A method used to access the glyph's cbox. */ - /* */ - /* set_mode :: A method used to pass additional parameters. */ - /* */ - /* raster_class :: For @FT_GLYPH_FORMAT_OUTLINE renderers only. */ - /* This is a pointer to its raster's class. */ - /* */ - typedef struct FT_Renderer_Class_ - { +/*************************************************************************/ +/* */ +/* <Struct> */ +/* FT_Renderer_Class */ +/* */ +/* <Description> */ +/* The renderer module class descriptor. */ +/* */ +/* <Fields> */ +/* root :: The root @FT_Module_Class fields. */ +/* */ +/* glyph_format :: The glyph image format this renderer handles. */ +/* */ +/* render_glyph :: A method used to render the image that is in a */ +/* given glyph slot into a bitmap. */ +/* */ +/* transform_glyph :: A method used to transform the image that is in */ +/* a given glyph slot. */ +/* */ +/* get_glyph_cbox :: A method used to access the glyph's cbox. */ +/* */ +/* set_mode :: A method used to pass additional parameters. */ +/* */ +/* raster_class :: For @FT_GLYPH_FORMAT_OUTLINE renderers only. */ +/* This is a pointer to its raster's class. */ +/* */ +typedef struct FT_Renderer_Class_ { FT_Module_Class root; FT_Glyph_Format glyph_format; @@ -154,80 +152,80 @@ FT_BEGIN_HEADER FT_Raster_Funcs* raster_class; - } FT_Renderer_Class; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Renderer */ - /* */ - /* <Description> */ - /* Retrieve the current renderer for a given glyph format. */ - /* */ - /* <Input> */ - /* library :: A handle to the library object. */ - /* */ - /* format :: The glyph format. */ - /* */ - /* <Return> */ - /* A renderer handle. 0~if none found. */ - /* */ - /* <Note> */ - /* An error will be returned if a module already exists by that name, */ - /* or if the module requires a version of FreeType that is too great. */ - /* */ - /* To add a new renderer, simply use @FT_Add_Module. To retrieve a */ - /* renderer by its name, use @FT_Get_Module. */ - /* */ - FT_EXPORT( FT_Renderer ) - FT_Get_Renderer( FT_Library library, - FT_Glyph_Format format ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Set_Renderer */ - /* */ - /* <Description> */ - /* Set the current renderer to use, and set additional mode. */ - /* */ - /* <InOut> */ - /* library :: A handle to the library object. */ - /* */ - /* <Input> */ - /* renderer :: A handle to the renderer object. */ - /* */ - /* num_params :: The number of additional parameters. */ - /* */ - /* parameters :: Additional parameters. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* In case of success, the renderer will be used to convert glyph */ - /* images in the renderer's known format into bitmaps. */ - /* */ - /* This doesn't change the current renderer for other formats. */ - /* */ - /* Currently, only the B/W renderer, if compiled with */ - /* FT_RASTER_OPTION_ANTI_ALIASING (providing a 5-levels */ - /* anti-aliasing mode; this option must be set directly in */ - /* `ftraster.c' and is undefined by default) accepts a single tag */ - /* `pal5' to set its gray palette as a character string with */ - /* 5~elements. Consequently, the third and fourth argument are zero */ - /* normally. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Set_Renderer( FT_Library library, - FT_Renderer renderer, - FT_UInt num_params, - FT_Parameter* parameters ); - - - /* */ +} FT_Renderer_Class; + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Get_Renderer */ +/* */ +/* <Description> */ +/* Retrieve the current renderer for a given glyph format. */ +/* */ +/* <Input> */ +/* library :: A handle to the library object. */ +/* */ +/* format :: The glyph format. */ +/* */ +/* <Return> */ +/* A renderer handle. 0~if none found. */ +/* */ +/* <Note> */ +/* An error will be returned if a module already exists by that name, */ +/* or if the module requires a version of FreeType that is too great. */ +/* */ +/* To add a new renderer, simply use @FT_Add_Module. To retrieve a */ +/* renderer by its name, use @FT_Get_Module. */ +/* */ +FT_EXPORT( FT_Renderer ) +FT_Get_Renderer( FT_Library library, + FT_Glyph_Format format ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Set_Renderer */ +/* */ +/* <Description> */ +/* Set the current renderer to use, and set additional mode. */ +/* */ +/* <InOut> */ +/* library :: A handle to the library object. */ +/* */ +/* <Input> */ +/* renderer :: A handle to the renderer object. */ +/* */ +/* num_params :: The number of additional parameters. */ +/* */ +/* parameters :: Additional parameters. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +/* <Note> */ +/* In case of success, the renderer will be used to convert glyph */ +/* images in the renderer's known format into bitmaps. */ +/* */ +/* This doesn't change the current renderer for other formats. */ +/* */ +/* Currently, only the B/W renderer, if compiled with */ +/* FT_RASTER_OPTION_ANTI_ALIASING (providing a 5-levels */ +/* anti-aliasing mode; this option must be set directly in */ +/* `ftraster.c' and is undefined by default) accepts a single tag */ +/* `pal5' to set its gray palette as a character string with */ +/* 5~elements. Consequently, the third and fourth argument are zero */ +/* normally. */ +/* */ +FT_EXPORT( FT_Error ) +FT_Set_Renderer( FT_Library library, + FT_Renderer renderer, + FT_UInt num_params, + FT_Parameter* parameters ); + + +/* */ FT_END_HEADER diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/ftsizes.h b/thirdparties/common/include/libfreetype/freetype2/freetype/ftsizes.h index 3e548cc..8d69c73 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/ftsizes.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/ftsizes.h @@ -16,13 +16,13 @@ /***************************************************************************/ - /*************************************************************************/ - /* */ - /* Typical application would normally not need to use these functions. */ - /* However, they have been placed in a public API for the rare cases */ - /* where they are needed. */ - /* */ - /*************************************************************************/ +/*************************************************************************/ +/* */ +/* Typical application would normally not need to use these functions. */ +/* However, they have been placed in a public API for the rare cases */ +/* where they are needed. */ +/* */ +/*************************************************************************/ #ifndef __FTSIZES_H__ @@ -42,113 +42,113 @@ FT_BEGIN_HEADER - /*************************************************************************/ - /* */ - /* <Section> */ - /* sizes_management */ - /* */ - /* <Title> */ - /* Size Management */ - /* */ - /* <Abstract> */ - /* Managing multiple sizes per face. */ - /* */ - /* <Description> */ - /* When creating a new face object (e.g., with @FT_New_Face), an */ - /* @FT_Size object is automatically created and used to store all */ - /* pixel-size dependent information, available in the `face->size' */ - /* field. */ - /* */ - /* It is however possible to create more sizes for a given face, */ - /* mostly in order to manage several character pixel sizes of the */ - /* same font family and style. See @FT_New_Size and @FT_Done_Size. */ - /* */ - /* Note that @FT_Set_Pixel_Sizes and @FT_Set_Char_Size only */ - /* modify the contents of the current `active' size; you thus need */ - /* to use @FT_Activate_Size to change it. */ - /* */ - /* 99% of applications won't need the functions provided here, */ - /* especially if they use the caching sub-system, so be cautious */ - /* when using these. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_New_Size */ - /* */ - /* <Description> */ - /* Create a new size object from a given face object. */ - /* */ - /* <Input> */ - /* face :: A handle to a parent face object. */ - /* */ - /* <Output> */ - /* asize :: A handle to a new size object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* You need to call @FT_Activate_Size in order to select the new size */ - /* for upcoming calls to @FT_Set_Pixel_Sizes, @FT_Set_Char_Size, */ - /* @FT_Load_Glyph, @FT_Load_Char, etc. */ - /* */ - FT_EXPORT( FT_Error ) - FT_New_Size( FT_Face face, - FT_Size* size ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Done_Size */ - /* */ - /* <Description> */ - /* Discard a given size object. Note that @FT_Done_Face */ - /* automatically discards all size objects allocated with */ - /* @FT_New_Size. */ - /* */ - /* <Input> */ - /* size :: A handle to a target size object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Done_Size( FT_Size size ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Activate_Size */ - /* */ - /* <Description> */ - /* Even though it is possible to create several size objects for a */ - /* given face (see @FT_New_Size for details), functions like */ - /* @FT_Load_Glyph or @FT_Load_Char only use the one which has been */ - /* activated last to determine the `current character pixel size'. */ - /* */ - /* This function can be used to `activate' a previously created size */ - /* object. */ - /* */ - /* <Input> */ - /* size :: A handle to a target size object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* If `face' is the size's parent face object, this function changes */ - /* the value of `face->size' to the input size handle. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Activate_Size( FT_Size size ); - - /* */ +/*************************************************************************/ +/* */ +/* <Section> */ +/* sizes_management */ +/* */ +/* <Title> */ +/* Size Management */ +/* */ +/* <Abstract> */ +/* Managing multiple sizes per face. */ +/* */ +/* <Description> */ +/* When creating a new face object (e.g., with @FT_New_Face), an */ +/* @FT_Size object is automatically created and used to store all */ +/* pixel-size dependent information, available in the `face->size' */ +/* field. */ +/* */ +/* It is however possible to create more sizes for a given face, */ +/* mostly in order to manage several character pixel sizes of the */ +/* same font family and style. See @FT_New_Size and @FT_Done_Size. */ +/* */ +/* Note that @FT_Set_Pixel_Sizes and @FT_Set_Char_Size only */ +/* modify the contents of the current `active' size; you thus need */ +/* to use @FT_Activate_Size to change it. */ +/* */ +/* 99% of applications won't need the functions provided here, */ +/* especially if they use the caching sub-system, so be cautious */ +/* when using these. */ +/* */ +/*************************************************************************/ + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_New_Size */ +/* */ +/* <Description> */ +/* Create a new size object from a given face object. */ +/* */ +/* <Input> */ +/* face :: A handle to a parent face object. */ +/* */ +/* <Output> */ +/* asize :: A handle to a new size object. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +/* <Note> */ +/* You need to call @FT_Activate_Size in order to select the new size */ +/* for upcoming calls to @FT_Set_Pixel_Sizes, @FT_Set_Char_Size, */ +/* @FT_Load_Glyph, @FT_Load_Char, etc. */ +/* */ +FT_EXPORT( FT_Error ) +FT_New_Size( FT_Face face, + FT_Size* size ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Done_Size */ +/* */ +/* <Description> */ +/* Discard a given size object. Note that @FT_Done_Face */ +/* automatically discards all size objects allocated with */ +/* @FT_New_Size. */ +/* */ +/* <Input> */ +/* size :: A handle to a target size object. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +FT_EXPORT( FT_Error ) +FT_Done_Size( FT_Size size ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Activate_Size */ +/* */ +/* <Description> */ +/* Even though it is possible to create several size objects for a */ +/* given face (see @FT_New_Size for details), functions like */ +/* @FT_Load_Glyph or @FT_Load_Char only use the one which has been */ +/* activated last to determine the `current character pixel size'. */ +/* */ +/* This function can be used to `activate' a previously created size */ +/* object. */ +/* */ +/* <Input> */ +/* size :: A handle to a target size object. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +/* <Note> */ +/* If `face' is the size's parent face object, this function changes */ +/* the value of `face->size' to the input size handle. */ +/* */ +FT_EXPORT( FT_Error ) +FT_Activate_Size( FT_Size size ); + +/* */ FT_END_HEADER diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/ftsnames.h b/thirdparties/common/include/libfreetype/freetype2/freetype/ftsnames.h index 485e4e1..486b448 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/ftsnames.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/ftsnames.h @@ -36,67 +36,66 @@ FT_BEGIN_HEADER - /*************************************************************************/ - /* */ - /* <Section> */ - /* sfnt_names */ - /* */ - /* <Title> */ - /* SFNT Names */ - /* */ - /* <Abstract> */ - /* Access the names embedded in TrueType and OpenType files. */ - /* */ - /* <Description> */ - /* The TrueType and OpenType specifications allow the inclusion of */ - /* a special `names table' in font files. This table contains */ - /* textual (and internationalized) information regarding the font, */ - /* like family name, copyright, version, etc. */ - /* */ - /* The definitions below are used to access them if available. */ - /* */ - /* Note that this has nothing to do with glyph names! */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_SfntName */ - /* */ - /* <Description> */ - /* A structure used to model an SFNT `name' table entry. */ - /* */ - /* <Fields> */ - /* platform_id :: The platform ID for `string'. */ - /* */ - /* encoding_id :: The encoding ID for `string'. */ - /* */ - /* language_id :: The language ID for `string'. */ - /* */ - /* name_id :: An identifier for `string'. */ - /* */ - /* string :: The `name' string. Note that its format differs */ - /* depending on the (platform,encoding) pair. It can */ - /* be a Pascal String, a UTF-16 one, etc. */ - /* */ - /* Generally speaking, the string is not */ - /* zero-terminated. Please refer to the TrueType */ - /* specification for details. */ - /* */ - /* string_len :: The length of `string' in bytes. */ - /* */ - /* <Note> */ - /* Possible values for `platform_id', `encoding_id', `language_id', */ - /* and `name_id' are given in the file `ttnameid.h'. For details */ - /* please refer to the TrueType or OpenType specification. */ - /* */ - /* See also @TT_PLATFORM_XXX, @TT_APPLE_ID_XXX, @TT_MAC_ID_XXX, */ - /* @TT_ISO_ID_XXX, and @TT_MS_ID_XXX. */ - /* */ - typedef struct FT_SfntName_ - { +/*************************************************************************/ +/* */ +/* <Section> */ +/* sfnt_names */ +/* */ +/* <Title> */ +/* SFNT Names */ +/* */ +/* <Abstract> */ +/* Access the names embedded in TrueType and OpenType files. */ +/* */ +/* <Description> */ +/* The TrueType and OpenType specifications allow the inclusion of */ +/* a special `names table' in font files. This table contains */ +/* textual (and internationalized) information regarding the font, */ +/* like family name, copyright, version, etc. */ +/* */ +/* The definitions below are used to access them if available. */ +/* */ +/* Note that this has nothing to do with glyph names! */ +/* */ +/*************************************************************************/ + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* FT_SfntName */ +/* */ +/* <Description> */ +/* A structure used to model an SFNT `name' table entry. */ +/* */ +/* <Fields> */ +/* platform_id :: The platform ID for `string'. */ +/* */ +/* encoding_id :: The encoding ID for `string'. */ +/* */ +/* language_id :: The language ID for `string'. */ +/* */ +/* name_id :: An identifier for `string'. */ +/* */ +/* string :: The `name' string. Note that its format differs */ +/* depending on the (platform,encoding) pair. It can */ +/* be a Pascal String, a UTF-16 one, etc. */ +/* */ +/* Generally speaking, the string is not */ +/* zero-terminated. Please refer to the TrueType */ +/* specification for details. */ +/* */ +/* string_len :: The length of `string' in bytes. */ +/* */ +/* <Note> */ +/* Possible values for `platform_id', `encoding_id', `language_id', */ +/* and `name_id' are given in the file `ttnameid.h'. For details */ +/* please refer to the TrueType or OpenType specification. */ +/* */ +/* See also @TT_PLATFORM_XXX, @TT_APPLE_ID_XXX, @TT_MAC_ID_XXX, */ +/* @TT_ISO_ID_XXX, and @TT_MS_ID_XXX. */ +/* */ +typedef struct FT_SfntName_ { FT_UShort platform_id; FT_UShort encoding_id; FT_UShort language_id; @@ -105,91 +104,91 @@ FT_BEGIN_HEADER FT_Byte* string; /* this string is *not* null-terminated! */ FT_UInt string_len; /* in bytes */ - } FT_SfntName; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Sfnt_Name_Count */ - /* */ - /* <Description> */ - /* Retrieve the number of name strings in the SFNT `name' table. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face. */ - /* */ - /* <Return> */ - /* The number of strings in the `name' table. */ - /* */ - FT_EXPORT( FT_UInt ) - FT_Get_Sfnt_Name_Count( FT_Face face ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Sfnt_Name */ - /* */ - /* <Description> */ - /* Retrieve a string of the SFNT `name' table for a given index. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face. */ - /* */ - /* idx :: The index of the `name' string. */ - /* */ - /* <Output> */ - /* aname :: The indexed @FT_SfntName structure. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* The `string' array returned in the `aname' structure is not */ - /* null-terminated. The application should deallocate it if it is no */ - /* longer in use. */ - /* */ - /* Use @FT_Get_Sfnt_Name_Count to get the total number of available */ - /* `name' table entries, then do a loop until you get the right */ - /* platform, encoding, and name ID. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Get_Sfnt_Name( FT_Face face, - FT_UInt idx, - FT_SfntName *aname ); - - - /*************************************************************************** - * - * @constant: - * FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY - * - * @description: - * A constant used as the tag of @FT_Parameter structures to make - * FT_Open_Face() ignore preferred family subfamily names in `name' - * table since OpenType version 1.4. For backwards compatibility with - * legacy systems which has 4-face-per-family restriction. - * - */ +} FT_SfntName; + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Get_Sfnt_Name_Count */ +/* */ +/* <Description> */ +/* Retrieve the number of name strings in the SFNT `name' table. */ +/* */ +/* <Input> */ +/* face :: A handle to the source face. */ +/* */ +/* <Return> */ +/* The number of strings in the `name' table. */ +/* */ +FT_EXPORT( FT_UInt ) +FT_Get_Sfnt_Name_Count( FT_Face face ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Get_Sfnt_Name */ +/* */ +/* <Description> */ +/* Retrieve a string of the SFNT `name' table for a given index. */ +/* */ +/* <Input> */ +/* face :: A handle to the source face. */ +/* */ +/* idx :: The index of the `name' string. */ +/* */ +/* <Output> */ +/* aname :: The indexed @FT_SfntName structure. */ +/* */ +/* <Return> */ +/* FreeType error code. 0~means success. */ +/* */ +/* <Note> */ +/* The `string' array returned in the `aname' structure is not */ +/* null-terminated. The application should deallocate it if it is no */ +/* longer in use. */ +/* */ +/* Use @FT_Get_Sfnt_Name_Count to get the total number of available */ +/* `name' table entries, then do a loop until you get the right */ +/* platform, encoding, and name ID. */ +/* */ +FT_EXPORT( FT_Error ) +FT_Get_Sfnt_Name( FT_Face face, + FT_UInt idx, + FT_SfntName *aname ); + + +/*************************************************************************** + * + * @constant: + * FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY + * + * @description: + * A constant used as the tag of @FT_Parameter structures to make + * FT_Open_Face() ignore preferred family subfamily names in `name' + * table since OpenType version 1.4. For backwards compatibility with + * legacy systems which has 4-face-per-family restriction. + * + */ #define FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY FT_MAKE_TAG( 'i', 'g', 'p', 'f' ) - /*************************************************************************** - * - * @constant: - * FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY - * - * @description: - * A constant used as the tag of @FT_Parameter structures to make - * FT_Open_Face() ignore preferred subfamily names in `name' table since - * OpenType version 1.4. For backwards compatibility with legacy - * systems which has 4-face-per-family restriction. - * - */ +/*************************************************************************** + * + * @constant: + * FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY + * + * @description: + * A constant used as the tag of @FT_Parameter structures to make + * FT_Open_Face() ignore preferred subfamily names in `name' table since + * OpenType version 1.4. For backwards compatibility with legacy + * systems which has 4-face-per-family restriction. + * + */ #define FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY FT_MAKE_TAG( 'i', 'g', 'p', 's' ) - /* */ +/* */ FT_END_HEADER diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/ftstroke.h b/thirdparties/common/include/libfreetype/freetype2/freetype/ftstroke.h index a498e4a..933557b 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/ftstroke.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/ftstroke.h @@ -27,716 +27,713 @@ 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 - * - * @description: - * Opaque handler to a path stroker object. - */ - typedef struct FT_StrokerRec_* FT_Stroker; - - - /************************************************************** - * - * @enum: - * FT_Stroker_LineJoin - * - * @description: - * These values determine how two joining lines are rendered - * in a stroker. - * - * @values: - * FT_STROKER_LINEJOIN_ROUND :: - * Used to render rounded line joins. Circular arcs are used - * to join two lines smoothly. - * - * FT_STROKER_LINEJOIN_BEVEL :: - * Used to render beveled line joins. The outer corner of - * the joined lines is filled by enclosing the triangular - * region of the corner with a straight line between the - * outer corners of each stroke. - * - * FT_STROKER_LINEJOIN_MITER_FIXED :: - * Used to render mitered line joins, with fixed bevels if the - * miter limit is exceeded. The outer edges of the strokes - * for the two segments are extended until they meet at an - * angle. If the segments meet at too sharp an angle (such - * that the miter would extend from the intersection of the - * segments a distance greater than the product of the miter - * limit value and the border radius), then a bevel join (see - * above) is used instead. This prevents long spikes being - * created. FT_STROKER_LINEJOIN_MITER_FIXED generates a miter - * line join as used in PostScript and PDF. - * - * FT_STROKER_LINEJOIN_MITER_VARIABLE :: - * FT_STROKER_LINEJOIN_MITER :: - * Used to render mitered line joins, with variable bevels if - * the miter limit is exceeded. The intersection of the - * strokes is clipped at a line perpendicular to the bisector - * of the angle between the strokes, at the distance from the - * intersection of the segments equal to the product of the - * miter limit value and the border radius. This prevents - * long spikes being created. - * FT_STROKER_LINEJOIN_MITER_VARIABLE generates a mitered line - * join as used in XPS. FT_STROKER_LINEJOIN_MITER is an alias - * for FT_STROKER_LINEJOIN_MITER_VARIABLE, retained for - * backwards compatibility. - */ - typedef enum FT_Stroker_LineJoin_ - { +/************************************************************************ + * + * @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 + * + * @description: + * Opaque handler to a path stroker object. + */ +typedef struct FT_StrokerRec_* FT_Stroker; + + +/************************************************************** + * + * @enum: + * FT_Stroker_LineJoin + * + * @description: + * These values determine how two joining lines are rendered + * in a stroker. + * + * @values: + * FT_STROKER_LINEJOIN_ROUND :: + * Used to render rounded line joins. Circular arcs are used + * to join two lines smoothly. + * + * FT_STROKER_LINEJOIN_BEVEL :: + * Used to render beveled line joins. The outer corner of + * the joined lines is filled by enclosing the triangular + * region of the corner with a straight line between the + * outer corners of each stroke. + * + * FT_STROKER_LINEJOIN_MITER_FIXED :: + * Used to render mitered line joins, with fixed bevels if the + * miter limit is exceeded. The outer edges of the strokes + * for the two segments are extended until they meet at an + * angle. If the segments meet at too sharp an angle (such + * that the miter would extend from the intersection of the + * segments a distance greater than the product of the miter + * limit value and the border radius), then a bevel join (see + * above) is used instead. This prevents long spikes being + * created. FT_STROKER_LINEJOIN_MITER_FIXED generates a miter + * line join as used in PostScript and PDF. + * + * FT_STROKER_LINEJOIN_MITER_VARIABLE :: + * FT_STROKER_LINEJOIN_MITER :: + * Used to render mitered line joins, with variable bevels if + * the miter limit is exceeded. The intersection of the + * strokes is clipped at a line perpendicular to the bisector + * of the angle between the strokes, at the distance from the + * intersection of the segments equal to the product of the + * miter limit value and the border radius. This prevents + * long spikes being created. + * FT_STROKER_LINEJOIN_MITER_VARIABLE generates a mitered line + * join as used in XPS. FT_STROKER_LINEJOIN_MITER is an alias + * for FT_STROKER_LINEJOIN_MITER_VARIABLE, retained for + * backwards compatibility. + */ +typedef enum FT_Stroker_LineJoin_ { FT_STROKER_LINEJOIN_ROUND = 0, FT_STROKER_LINEJOIN_BEVEL = 1, FT_STROKER_LINEJOIN_MITER_VARIABLE = 2, FT_STROKER_LINEJOIN_MITER = FT_STROKER_LINEJOIN_MITER_VARIABLE, FT_STROKER_LINEJOIN_MITER_FIXED = 3 - } FT_Stroker_LineJoin; - - - /************************************************************** - * - * @enum: - * FT_Stroker_LineCap - * - * @description: - * These values determine how the end of opened sub-paths are - * rendered in a stroke. - * - * @values: - * FT_STROKER_LINECAP_BUTT :: - * The end of lines is rendered as a full stop on the last - * point itself. - * - * FT_STROKER_LINECAP_ROUND :: - * The end of lines is rendered as a half-circle around the - * last point. - * - * FT_STROKER_LINECAP_SQUARE :: - * The end of lines is rendered as a square around the - * last point. - */ - typedef enum FT_Stroker_LineCap_ - { +} FT_Stroker_LineJoin; + + +/************************************************************** + * + * @enum: + * FT_Stroker_LineCap + * + * @description: + * These values determine how the end of opened sub-paths are + * rendered in a stroke. + * + * @values: + * FT_STROKER_LINECAP_BUTT :: + * The end of lines is rendered as a full stop on the last + * point itself. + * + * FT_STROKER_LINECAP_ROUND :: + * The end of lines is rendered as a half-circle around the + * last point. + * + * FT_STROKER_LINECAP_SQUARE :: + * The end of lines is rendered as a square around the + * last point. + */ +typedef enum FT_Stroker_LineCap_ { FT_STROKER_LINECAP_BUTT = 0, FT_STROKER_LINECAP_ROUND, FT_STROKER_LINECAP_SQUARE - } FT_Stroker_LineCap; - - - /************************************************************** - * - * @enum: - * FT_StrokerBorder - * - * @description: - * These values are used to select a given stroke border - * in @FT_Stroker_GetBorderCounts and @FT_Stroker_ExportBorder. - * - * @values: - * FT_STROKER_BORDER_LEFT :: - * Select the left border, relative to the drawing direction. - * - * FT_STROKER_BORDER_RIGHT :: - * Select the right border, relative to the drawing direction. - * - * @note: - * Applications are generally interested in the `inside' and `outside' - * borders. However, there is no direct mapping between these and the - * `left' and `right' ones, since this really depends on the glyph's - * drawing orientation, which varies between font formats. - * - * You can however use @FT_Outline_GetInsideBorder and - * @FT_Outline_GetOutsideBorder to get these. - */ - typedef enum FT_StrokerBorder_ - { +} FT_Stroker_LineCap; + + +/************************************************************** + * + * @enum: + * FT_StrokerBorder + * + * @description: + * These values are used to select a given stroke border + * in @FT_Stroker_GetBorderCounts and @FT_Stroker_ExportBorder. + * + * @values: + * FT_STROKER_BORDER_LEFT :: + * Select the left border, relative to the drawing direction. + * + * FT_STROKER_BORDER_RIGHT :: + * Select the right border, relative to the drawing direction. + * + * @note: + * Applications are generally interested in the `inside' and `outside' + * borders. However, there is no direct mapping between these and the + * `left' and `right' ones, since this really depends on the glyph's + * drawing orientation, which varies between font formats. + * + * You can however use @FT_Outline_GetInsideBorder and + * @FT_Outline_GetOutsideBorder to get these. + */ +typedef enum FT_StrokerBorder_ { FT_STROKER_BORDER_LEFT = 0, FT_STROKER_BORDER_RIGHT - } FT_StrokerBorder; - - - /************************************************************** - * - * @function: - * FT_Outline_GetInsideBorder - * - * @description: - * Retrieve the @FT_StrokerBorder value corresponding to the - * `inside' borders of a given outline. - * - * @input: - * outline :: - * The source outline handle. - * - * @return: - * The border index. @FT_STROKER_BORDER_RIGHT for empty or invalid - * outlines. - */ - FT_EXPORT( FT_StrokerBorder ) - FT_Outline_GetInsideBorder( FT_Outline* outline ); - - - /************************************************************** - * - * @function: - * FT_Outline_GetOutsideBorder - * - * @description: - * Retrieve the @FT_StrokerBorder value corresponding to the - * `outside' borders of a given outline. - * - * @input: - * outline :: - * The source outline handle. - * - * @return: - * The border index. @FT_STROKER_BORDER_LEFT for empty or invalid - * outlines. - */ - FT_EXPORT( FT_StrokerBorder ) - FT_Outline_GetOutsideBorder( FT_Outline* outline ); - - - /************************************************************** - * - * @function: - * FT_Stroker_New - * - * @description: - * Create a new stroker object. - * - * @input: - * library :: - * FreeType library handle. - * - * @output: - * astroker :: - * A new stroker object handle. NULL in case of error. - * - * @return: - * FreeType error code. 0~means success. - */ - FT_EXPORT( FT_Error ) - FT_Stroker_New( FT_Library library, - FT_Stroker *astroker ); - - - /************************************************************** - * - * @function: - * FT_Stroker_Set - * - * @description: - * Reset a stroker object's attributes. - * - * @input: - * stroker :: - * The target stroker handle. - * - * radius :: - * The border radius. - * - * line_cap :: - * The line cap style. - * - * line_join :: - * The line join style. - * - * miter_limit :: - * The miter limit for the FT_STROKER_LINEJOIN_MITER_FIXED and - * FT_STROKER_LINEJOIN_MITER_VARIABLE line join styles, - * expressed as 16.16 fixed-point value. - * - * @note: - * The radius is expressed in the same units as the outline - * coordinates. - */ - FT_EXPORT( void ) - FT_Stroker_Set( FT_Stroker stroker, - FT_Fixed radius, - FT_Stroker_LineCap line_cap, - FT_Stroker_LineJoin line_join, - FT_Fixed miter_limit ); - - - /************************************************************** - * - * @function: - * FT_Stroker_Rewind - * - * @description: - * Reset a stroker object without changing its attributes. - * You should call this function before beginning a new - * series of calls to @FT_Stroker_BeginSubPath or - * @FT_Stroker_EndSubPath. - * - * @input: - * stroker :: - * The target stroker handle. - */ - FT_EXPORT( void ) - FT_Stroker_Rewind( FT_Stroker stroker ); - - - /************************************************************** - * - * @function: - * FT_Stroker_ParseOutline - * - * @description: - * A convenience function used to parse a whole outline with - * the stroker. The resulting outline(s) can be retrieved - * later by functions like @FT_Stroker_GetCounts and @FT_Stroker_Export. - * - * @input: - * stroker :: - * The target stroker handle. - * - * outline :: - * The source outline. - * - * opened :: - * A boolean. If~1, the outline is treated as an open path instead - * of a closed one. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * If `opened' is~0 (the default), the outline is treated as a closed - * path, and the stroker generates two distinct `border' outlines. - * - * If `opened' is~1, the outline is processed as an open path, and the - * stroker generates a single `stroke' outline. - * - * This function calls @FT_Stroker_Rewind automatically. - */ - FT_EXPORT( FT_Error ) - FT_Stroker_ParseOutline( FT_Stroker stroker, - FT_Outline* outline, - FT_Bool opened ); - - - /************************************************************** - * - * @function: - * FT_Stroker_BeginSubPath - * - * @description: - * Start a new sub-path in the stroker. - * - * @input: - * stroker :: - * The target stroker handle. - * - * to :: - * A pointer to the start vector. - * - * open :: - * A boolean. If~1, the sub-path is treated as an open one. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * This function is useful when you need to stroke a path that is - * not stored as an @FT_Outline object. - */ - FT_EXPORT( FT_Error ) - FT_Stroker_BeginSubPath( FT_Stroker stroker, - FT_Vector* to, - FT_Bool open ); - - - /************************************************************** - * - * @function: - * FT_Stroker_EndSubPath - * - * @description: - * Close the current sub-path in the stroker. - * - * @input: - * stroker :: - * The target stroker handle. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * You should call this function after @FT_Stroker_BeginSubPath. - * If the subpath was not `opened', this function `draws' a - * single line segment to the start position when needed. - */ - FT_EXPORT( FT_Error ) - FT_Stroker_EndSubPath( FT_Stroker stroker ); - - - /************************************************************** - * - * @function: - * FT_Stroker_LineTo - * - * @description: - * `Draw' a single line segment in the stroker's current sub-path, - * from the last position. - * - * @input: - * stroker :: - * The target stroker handle. - * - * to :: - * A pointer to the destination point. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * You should call this function between @FT_Stroker_BeginSubPath and - * @FT_Stroker_EndSubPath. - */ - FT_EXPORT( FT_Error ) - FT_Stroker_LineTo( FT_Stroker stroker, - FT_Vector* to ); - - - /************************************************************** - * - * @function: - * FT_Stroker_ConicTo - * - * @description: - * `Draw' a single quadratic Bézier in the stroker's current sub-path, - * from the last position. - * - * @input: - * stroker :: - * The target stroker handle. - * - * control :: - * A pointer to a Bézier control point. - * - * to :: - * A pointer to the destination point. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * You should call this function between @FT_Stroker_BeginSubPath and - * @FT_Stroker_EndSubPath. - */ - FT_EXPORT( FT_Error ) - FT_Stroker_ConicTo( FT_Stroker stroker, - FT_Vector* control, - FT_Vector* to ); - - - /************************************************************** - * - * @function: - * FT_Stroker_CubicTo - * - * @description: - * `Draw' a single cubic Bézier in the stroker's current sub-path, - * from the last position. - * - * @input: - * stroker :: - * The target stroker handle. - * - * control1 :: - * A pointer to the first Bézier control point. - * - * control2 :: - * A pointer to second Bézier control point. - * - * to :: - * A pointer to the destination point. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * You should call this function between @FT_Stroker_BeginSubPath and - * @FT_Stroker_EndSubPath. - */ - FT_EXPORT( FT_Error ) - FT_Stroker_CubicTo( FT_Stroker stroker, - FT_Vector* control1, - FT_Vector* control2, - FT_Vector* to ); - - - /************************************************************** - * - * @function: - * FT_Stroker_GetBorderCounts - * - * @description: - * Call this function once you have finished parsing your paths - * with the stroker. It returns the number of points and - * contours necessary to export one of the `border' or `stroke' - * outlines generated by the stroker. - * - * @input: - * stroker :: - * The target stroker handle. - * - * border :: - * The border index. - * - * @output: - * anum_points :: - * The number of points. - * - * anum_contours :: - * The number of contours. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * When an outline, or a sub-path, is `closed', the stroker generates - * two independent `border' outlines, named `left' and `right'. - * - * When the outline, or a sub-path, is `opened', the stroker merges - * the `border' outlines with caps. The `left' border receives all - * points, while the `right' border becomes empty. - * - * Use the function @FT_Stroker_GetCounts instead if you want to - * retrieve the counts associated to both borders. - */ - FT_EXPORT( FT_Error ) - FT_Stroker_GetBorderCounts( FT_Stroker stroker, - FT_StrokerBorder border, - FT_UInt *anum_points, - FT_UInt *anum_contours ); - - - /************************************************************** - * - * @function: - * FT_Stroker_ExportBorder - * - * @description: - * Call this function after @FT_Stroker_GetBorderCounts to - * export the corresponding border to your own @FT_Outline - * structure. - * - * Note that this function appends the border points and - * contours to your outline, but does not try to resize its - * arrays. - * - * @input: - * stroker :: - * The target stroker handle. - * - * border :: - * The border index. - * - * outline :: - * The target outline handle. - * - * @note: - * Always call this function after @FT_Stroker_GetBorderCounts to - * get sure that there is enough room in your @FT_Outline object to - * receive all new data. - * - * When an outline, or a sub-path, is `closed', the stroker generates - * two independent `border' outlines, named `left' and `right' - * - * When the outline, or a sub-path, is `opened', the stroker merges - * the `border' outlines with caps. The `left' border receives all - * points, while the `right' border becomes empty. - * - * Use the function @FT_Stroker_Export instead if you want to - * retrieve all borders at once. - */ - FT_EXPORT( void ) - FT_Stroker_ExportBorder( FT_Stroker stroker, - FT_StrokerBorder border, - FT_Outline* outline ); - - - /************************************************************** - * - * @function: - * FT_Stroker_GetCounts - * - * @description: - * Call this function once you have finished parsing your paths - * with the stroker. It returns the number of points and - * contours necessary to export all points/borders from the stroked - * outline/path. - * - * @input: - * stroker :: - * The target stroker handle. - * - * @output: - * anum_points :: - * The number of points. - * - * anum_contours :: - * The number of contours. - * - * @return: - * FreeType error code. 0~means success. - */ - FT_EXPORT( FT_Error ) - FT_Stroker_GetCounts( FT_Stroker stroker, - FT_UInt *anum_points, - FT_UInt *anum_contours ); - - - /************************************************************** - * - * @function: - * FT_Stroker_Export - * - * @description: - * Call this function after @FT_Stroker_GetBorderCounts to - * export all borders to your own @FT_Outline structure. - * - * Note that this function appends the border points and - * contours to your outline, but does not try to resize its - * arrays. - * - * @input: - * stroker :: - * The target stroker handle. - * - * outline :: - * The target outline handle. - */ - FT_EXPORT( void ) - FT_Stroker_Export( FT_Stroker stroker, - FT_Outline* outline ); - - - /************************************************************** - * - * @function: - * FT_Stroker_Done - * - * @description: - * Destroy a stroker object. - * - * @input: - * stroker :: - * A stroker handle. Can be NULL. - */ - FT_EXPORT( void ) - FT_Stroker_Done( FT_Stroker stroker ); - - - /************************************************************** - * - * @function: - * FT_Glyph_Stroke - * - * @description: - * Stroke a given outline glyph object with a given stroker. - * - * @inout: - * pglyph :: - * Source glyph handle on input, new glyph handle on output. - * - * @input: - * stroker :: - * A stroker handle. - * - * destroy :: - * A Boolean. If~1, the source glyph object is destroyed - * on success. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * The source glyph is untouched in case of error. - * - * Adding stroke may yield a significantly wider and taller glyph - * depending on how large of a radius was used to stroke the glyph. You - * may need to manually adjust horizontal and vertical advance amounts - * to account for this added size. - */ - FT_EXPORT( FT_Error ) - FT_Glyph_Stroke( FT_Glyph *pglyph, - FT_Stroker stroker, - FT_Bool destroy ); - - - /************************************************************** - * - * @function: - * FT_Glyph_StrokeBorder - * - * @description: - * Stroke a given outline glyph object with a given stroker, but - * only return either its inside or outside border. - * - * @inout: - * pglyph :: - * Source glyph handle on input, new glyph handle on output. - * - * @input: - * stroker :: - * A stroker handle. - * - * inside :: - * A Boolean. If~1, return the inside border, otherwise - * the outside border. - * - * destroy :: - * A Boolean. If~1, the source glyph object is destroyed - * on success. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * The source glyph is untouched in case of error. - * - * Adding stroke may yield a significantly wider and taller glyph - * depending on how large of a radius was used to stroke the glyph. You - * may need to manually adjust horizontal and vertical advance amounts - * to account for this added size. - */ - FT_EXPORT( FT_Error ) - FT_Glyph_StrokeBorder( FT_Glyph *pglyph, - FT_Stroker stroker, - FT_Bool inside, - FT_Bool destroy ); - - /* */ +} FT_StrokerBorder; + + +/************************************************************** + * + * @function: + * FT_Outline_GetInsideBorder + * + * @description: + * Retrieve the @FT_StrokerBorder value corresponding to the + * `inside' borders of a given outline. + * + * @input: + * outline :: + * The source outline handle. + * + * @return: + * The border index. @FT_STROKER_BORDER_RIGHT for empty or invalid + * outlines. + */ +FT_EXPORT( FT_StrokerBorder ) +FT_Outline_GetInsideBorder( FT_Outline* outline ); + + +/************************************************************** + * + * @function: + * FT_Outline_GetOutsideBorder + * + * @description: + * Retrieve the @FT_StrokerBorder value corresponding to the + * `outside' borders of a given outline. + * + * @input: + * outline :: + * The source outline handle. + * + * @return: + * The border index. @FT_STROKER_BORDER_LEFT for empty or invalid + * outlines. + */ +FT_EXPORT( FT_StrokerBorder ) +FT_Outline_GetOutsideBorder( FT_Outline* outline ); + + +/************************************************************** + * + * @function: + * FT_Stroker_New + * + * @description: + * Create a new stroker object. + * + * @input: + * library :: + * FreeType library handle. + * + * @output: + * astroker :: + * A new stroker object handle. NULL in case of error. + * + * @return: + * FreeType error code. 0~means success. + */ +FT_EXPORT( FT_Error ) +FT_Stroker_New( FT_Library library, + FT_Stroker *astroker ); + + +/************************************************************** + * + * @function: + * FT_Stroker_Set + * + * @description: + * Reset a stroker object's attributes. + * + * @input: + * stroker :: + * The target stroker handle. + * + * radius :: + * The border radius. + * + * line_cap :: + * The line cap style. + * + * line_join :: + * The line join style. + * + * miter_limit :: + * The miter limit for the FT_STROKER_LINEJOIN_MITER_FIXED and + * FT_STROKER_LINEJOIN_MITER_VARIABLE line join styles, + * expressed as 16.16 fixed-point value. + * + * @note: + * The radius is expressed in the same units as the outline + * coordinates. + */ +FT_EXPORT( void ) +FT_Stroker_Set( FT_Stroker stroker, + FT_Fixed radius, + FT_Stroker_LineCap line_cap, + FT_Stroker_LineJoin line_join, + FT_Fixed miter_limit ); + + +/************************************************************** + * + * @function: + * FT_Stroker_Rewind + * + * @description: + * Reset a stroker object without changing its attributes. + * You should call this function before beginning a new + * series of calls to @FT_Stroker_BeginSubPath or + * @FT_Stroker_EndSubPath. + * + * @input: + * stroker :: + * The target stroker handle. + */ +FT_EXPORT( void ) +FT_Stroker_Rewind( FT_Stroker stroker ); + + +/************************************************************** + * + * @function: + * FT_Stroker_ParseOutline + * + * @description: + * A convenience function used to parse a whole outline with + * the stroker. The resulting outline(s) can be retrieved + * later by functions like @FT_Stroker_GetCounts and @FT_Stroker_Export. + * + * @input: + * stroker :: + * The target stroker handle. + * + * outline :: + * The source outline. + * + * opened :: + * A boolean. If~1, the outline is treated as an open path instead + * of a closed one. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If `opened' is~0 (the default), the outline is treated as a closed + * path, and the stroker generates two distinct `border' outlines. + * + * If `opened' is~1, the outline is processed as an open path, and the + * stroker generates a single `stroke' outline. + * + * This function calls @FT_Stroker_Rewind automatically. + */ +FT_EXPORT( FT_Error ) +FT_Stroker_ParseOutline( FT_Stroker stroker, + FT_Outline* outline, + FT_Bool opened ); + + +/************************************************************** + * + * @function: + * FT_Stroker_BeginSubPath + * + * @description: + * Start a new sub-path in the stroker. + * + * @input: + * stroker :: + * The target stroker handle. + * + * to :: + * A pointer to the start vector. + * + * open :: + * A boolean. If~1, the sub-path is treated as an open one. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function is useful when you need to stroke a path that is + * not stored as an @FT_Outline object. + */ +FT_EXPORT( FT_Error ) +FT_Stroker_BeginSubPath( FT_Stroker stroker, + FT_Vector* to, + FT_Bool open ); + + +/************************************************************** + * + * @function: + * FT_Stroker_EndSubPath + * + * @description: + * Close the current sub-path in the stroker. + * + * @input: + * stroker :: + * The target stroker handle. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * You should call this function after @FT_Stroker_BeginSubPath. + * If the subpath was not `opened', this function `draws' a + * single line segment to the start position when needed. + */ +FT_EXPORT( FT_Error ) +FT_Stroker_EndSubPath( FT_Stroker stroker ); + + +/************************************************************** + * + * @function: + * FT_Stroker_LineTo + * + * @description: + * `Draw' a single line segment in the stroker's current sub-path, + * from the last position. + * + * @input: + * stroker :: + * The target stroker handle. + * + * to :: + * A pointer to the destination point. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * You should call this function between @FT_Stroker_BeginSubPath and + * @FT_Stroker_EndSubPath. + */ +FT_EXPORT( FT_Error ) +FT_Stroker_LineTo( FT_Stroker stroker, + FT_Vector* to ); + + +/************************************************************** + * + * @function: + * FT_Stroker_ConicTo + * + * @description: + * `Draw' a single quadratic Bézier in the stroker's current sub-path, + * from the last position. + * + * @input: + * stroker :: + * The target stroker handle. + * + * control :: + * A pointer to a Bézier control point. + * + * to :: + * A pointer to the destination point. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * You should call this function between @FT_Stroker_BeginSubPath and + * @FT_Stroker_EndSubPath. + */ +FT_EXPORT( FT_Error ) +FT_Stroker_ConicTo( FT_Stroker stroker, + FT_Vector* control, + FT_Vector* to ); + + +/************************************************************** + * + * @function: + * FT_Stroker_CubicTo + * + * @description: + * `Draw' a single cubic Bézier in the stroker's current sub-path, + * from the last position. + * + * @input: + * stroker :: + * The target stroker handle. + * + * control1 :: + * A pointer to the first Bézier control point. + * + * control2 :: + * A pointer to second Bézier control point. + * + * to :: + * A pointer to the destination point. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * You should call this function between @FT_Stroker_BeginSubPath and + * @FT_Stroker_EndSubPath. + */ +FT_EXPORT( FT_Error ) +FT_Stroker_CubicTo( FT_Stroker stroker, + FT_Vector* control1, + FT_Vector* control2, + FT_Vector* to ); + + +/************************************************************** + * + * @function: + * FT_Stroker_GetBorderCounts + * + * @description: + * Call this function once you have finished parsing your paths + * with the stroker. It returns the number of points and + * contours necessary to export one of the `border' or `stroke' + * outlines generated by the stroker. + * + * @input: + * stroker :: + * The target stroker handle. + * + * border :: + * The border index. + * + * @output: + * anum_points :: + * The number of points. + * + * anum_contours :: + * The number of contours. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * When an outline, or a sub-path, is `closed', the stroker generates + * two independent `border' outlines, named `left' and `right'. + * + * When the outline, or a sub-path, is `opened', the stroker merges + * the `border' outlines with caps. The `left' border receives all + * points, while the `right' border becomes empty. + * + * Use the function @FT_Stroker_GetCounts instead if you want to + * retrieve the counts associated to both borders. + */ +FT_EXPORT( FT_Error ) +FT_Stroker_GetBorderCounts( FT_Stroker stroker, + FT_StrokerBorder border, + FT_UInt *anum_points, + FT_UInt *anum_contours ); + + +/************************************************************** + * + * @function: + * FT_Stroker_ExportBorder + * + * @description: + * Call this function after @FT_Stroker_GetBorderCounts to + * export the corresponding border to your own @FT_Outline + * structure. + * + * Note that this function appends the border points and + * contours to your outline, but does not try to resize its + * arrays. + * + * @input: + * stroker :: + * The target stroker handle. + * + * border :: + * The border index. + * + * outline :: + * The target outline handle. + * + * @note: + * Always call this function after @FT_Stroker_GetBorderCounts to + * get sure that there is enough room in your @FT_Outline object to + * receive all new data. + * + * When an outline, or a sub-path, is `closed', the stroker generates + * two independent `border' outlines, named `left' and `right' + * + * When the outline, or a sub-path, is `opened', the stroker merges + * the `border' outlines with caps. The `left' border receives all + * points, while the `right' border becomes empty. + * + * Use the function @FT_Stroker_Export instead if you want to + * retrieve all borders at once. + */ +FT_EXPORT( void ) +FT_Stroker_ExportBorder( FT_Stroker stroker, + FT_StrokerBorder border, + FT_Outline* outline ); + + +/************************************************************** + * + * @function: + * FT_Stroker_GetCounts + * + * @description: + * Call this function once you have finished parsing your paths + * with the stroker. It returns the number of points and + * contours necessary to export all points/borders from the stroked + * outline/path. + * + * @input: + * stroker :: + * The target stroker handle. + * + * @output: + * anum_points :: + * The number of points. + * + * anum_contours :: + * The number of contours. + * + * @return: + * FreeType error code. 0~means success. + */ +FT_EXPORT( FT_Error ) +FT_Stroker_GetCounts( FT_Stroker stroker, + FT_UInt *anum_points, + FT_UInt *anum_contours ); + + +/************************************************************** + * + * @function: + * FT_Stroker_Export + * + * @description: + * Call this function after @FT_Stroker_GetBorderCounts to + * export all borders to your own @FT_Outline structure. + * + * Note that this function appends the border points and + * contours to your outline, but does not try to resize its + * arrays. + * + * @input: + * stroker :: + * The target stroker handle. + * + * outline :: + * The target outline handle. + */ +FT_EXPORT( void ) +FT_Stroker_Export( FT_Stroker stroker, + FT_Outline* outline ); + + +/************************************************************** + * + * @function: + * FT_Stroker_Done + * + * @description: + * Destroy a stroker object. + * + * @input: + * stroker :: + * A stroker handle. Can be NULL. + */ +FT_EXPORT( void ) +FT_Stroker_Done( FT_Stroker stroker ); + + +/************************************************************** + * + * @function: + * FT_Glyph_Stroke + * + * @description: + * Stroke a given outline glyph object with a given stroker. + * + * @inout: + * pglyph :: + * Source glyph handle on input, new glyph handle on output. + * + * @input: + * stroker :: + * A stroker handle. + * + * destroy :: + * A Boolean. If~1, the source glyph object is destroyed + * on success. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The source glyph is untouched in case of error. + * + * Adding stroke may yield a significantly wider and taller glyph + * depending on how large of a radius was used to stroke the glyph. You + * may need to manually adjust horizontal and vertical advance amounts + * to account for this added size. + */ +FT_EXPORT( FT_Error ) +FT_Glyph_Stroke( FT_Glyph *pglyph, + FT_Stroker stroker, + FT_Bool destroy ); + + +/************************************************************** + * + * @function: + * FT_Glyph_StrokeBorder + * + * @description: + * Stroke a given outline glyph object with a given stroker, but + * only return either its inside or outside border. + * + * @inout: + * pglyph :: + * Source glyph handle on input, new glyph handle on output. + * + * @input: + * stroker :: + * A stroker handle. + * + * inside :: + * A Boolean. If~1, return the inside border, otherwise + * the outside border. + * + * destroy :: + * A Boolean. If~1, the source glyph object is destroyed + * on success. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * The source glyph is untouched in case of error. + * + * Adding stroke may yield a significantly wider and taller glyph + * depending on how large of a radius was used to stroke the glyph. You + * may need to manually adjust horizontal and vertical advance amounts + * to account for this added size. + */ +FT_EXPORT( FT_Error ) +FT_Glyph_StrokeBorder( FT_Glyph *pglyph, + FT_Stroker stroker, + FT_Bool inside, + FT_Bool destroy ); + +/* */ FT_END_HEADER diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/ftsynth.h b/thirdparties/common/include/libfreetype/freetype2/freetype/ftsynth.h index 2074503..76b2a41 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/ftsynth.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/ftsynth.h @@ -17,28 +17,28 @@ /***************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /********* *********/ - /********* WARNING, THIS IS ALPHA CODE! THIS API *********/ - /********* IS DUE TO CHANGE UNTIL STRICTLY NOTIFIED BY THE *********/ - /********* FREETYPE DEVELOPMENT TEAM *********/ - /********* *********/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - /* Main reason for not lifting the functions in this module to a */ - /* `standard' API is that the used parameters for emboldening and */ - /* slanting are not configurable. Consider the functions as a */ - /* code resource which should be copied into the application and */ - /* adapted to the particular needs. */ +/*************************************************************************/ +/*************************************************************************/ +/*************************************************************************/ +/*************************************************************************/ +/*************************************************************************/ +/********* *********/ +/********* WARNING, THIS IS ALPHA CODE! THIS API *********/ +/********* IS DUE TO CHANGE UNTIL STRICTLY NOTIFIED BY THE *********/ +/********* FREETYPE DEVELOPMENT TEAM *********/ +/********* *********/ +/*************************************************************************/ +/*************************************************************************/ +/*************************************************************************/ +/*************************************************************************/ +/*************************************************************************/ + + +/* Main reason for not lifting the functions in this module to a */ +/* `standard' API is that the used parameters for emboldening and */ +/* slanting are not configurable. Consider the functions as a */ +/* code resource which should be copied into the application and */ +/* adapted to the particular needs. */ #ifndef __FTSYNTH_H__ @@ -57,21 +57,21 @@ FT_BEGIN_HEADER - /* Embolden a glyph by a `reasonable' value (which is highly a matter of */ - /* taste). This function is actually a convenience function, providing */ - /* a wrapper for @FT_Outline_Embolden and @FT_Bitmap_Embolden. */ - /* */ - /* For emboldened outlines the height, width, and advance metrics are */ - /* increased by the strength of the emboldening. You can also call */ - /* @FT_Outline_Get_CBox to get precise values. */ - FT_EXPORT( void ) - FT_GlyphSlot_Embolden( FT_GlyphSlot slot ); - - /* Slant an outline glyph to the right by about 12 degrees. */ - FT_EXPORT( void ) - FT_GlyphSlot_Oblique( FT_GlyphSlot slot ); - - /* */ +/* Embolden a glyph by a `reasonable' value (which is highly a matter of */ +/* taste). This function is actually a convenience function, providing */ +/* a wrapper for @FT_Outline_Embolden and @FT_Bitmap_Embolden. */ +/* */ +/* For emboldened outlines the height, width, and advance metrics are */ +/* increased by the strength of the emboldening. You can also call */ +/* @FT_Outline_Get_CBox to get precise values. */ +FT_EXPORT( void ) +FT_GlyphSlot_Embolden( FT_GlyphSlot slot ); + +/* Slant an outline glyph to the right by about 12 degrees. */ +FT_EXPORT( void ) +FT_GlyphSlot_Oblique( FT_GlyphSlot slot ); + +/* */ FT_END_HEADER diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/ftsystem.h b/thirdparties/common/include/libfreetype/freetype2/freetype/ftsystem.h index e07460c..027cc0f 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/ftsystem.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/ftsystem.h @@ -26,300 +26,297 @@ FT_BEGIN_HEADER - /*************************************************************************/ - /* */ - /* <Section> */ - /* system_interface */ - /* */ - /* <Title> */ - /* System Interface */ - /* */ - /* <Abstract> */ - /* How FreeType manages memory and i/o. */ - /* */ - /* <Description> */ - /* This section contains various definitions related to memory */ - /* management and i/o access. You need to understand this */ - /* information if you want to use a custom memory manager or you own */ - /* i/o streams. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* M E M O R Y M A N A G E M E N T */ - /* */ - /*************************************************************************/ - - - /************************************************************************* - * - * @type: - * FT_Memory - * - * @description: - * A handle to a given memory manager object, defined with an - * @FT_MemoryRec structure. - * - */ - typedef struct FT_MemoryRec_* FT_Memory; - - - /************************************************************************* - * - * @functype: - * FT_Alloc_Func - * - * @description: - * A function used to allocate `size' bytes from `memory'. - * - * @input: - * memory :: - * A handle to the source memory manager. - * - * size :: - * The size in bytes to allocate. - * - * @return: - * Address of new memory block. 0~in case of failure. - * - */ - typedef void* - (*FT_Alloc_Func)( FT_Memory memory, - long size ); - - - /************************************************************************* - * - * @functype: - * FT_Free_Func - * - * @description: - * A function used to release a given block of memory. - * - * @input: - * memory :: - * A handle to the source memory manager. - * - * block :: - * The address of the target memory block. - * - */ - typedef void - (*FT_Free_Func)( FT_Memory memory, - void* block ); - - - /************************************************************************* - * - * @functype: - * FT_Realloc_Func - * - * @description: - * A function used to re-allocate a given block of memory. - * - * @input: - * memory :: - * A handle to the source memory manager. - * - * cur_size :: - * The block's current size in bytes. - * - * new_size :: - * The block's requested new size. - * - * block :: - * The block's current address. - * - * @return: - * New block address. 0~in case of memory shortage. - * - * @note: - * In case of error, the old block must still be available. - * - */ - typedef void* - (*FT_Realloc_Func)( FT_Memory memory, - long cur_size, - long new_size, - void* block ); - - - /************************************************************************* - * - * @struct: - * FT_MemoryRec - * - * @description: - * A structure used to describe a given memory manager to FreeType~2. - * - * @fields: - * user :: - * A generic typeless pointer for user data. - * - * alloc :: - * A pointer type to an allocation function. - * - * free :: - * A pointer type to an memory freeing function. - * - * realloc :: - * A pointer type to a reallocation function. - * - */ - struct FT_MemoryRec_ - { +/*************************************************************************/ +/* */ +/* <Section> */ +/* system_interface */ +/* */ +/* <Title> */ +/* System Interface */ +/* */ +/* <Abstract> */ +/* How FreeType manages memory and i/o. */ +/* */ +/* <Description> */ +/* This section contains various definitions related to memory */ +/* management and i/o access. You need to understand this */ +/* information if you want to use a custom memory manager or you own */ +/* i/o streams. */ +/* */ +/*************************************************************************/ + + +/*************************************************************************/ +/* */ +/* M E M O R Y M A N A G E M E N T */ +/* */ +/*************************************************************************/ + + +/************************************************************************* + * + * @type: + * FT_Memory + * + * @description: + * A handle to a given memory manager object, defined with an + * @FT_MemoryRec structure. + * + */ +typedef struct FT_MemoryRec_* FT_Memory; + + +/************************************************************************* + * + * @functype: + * FT_Alloc_Func + * + * @description: + * A function used to allocate `size' bytes from `memory'. + * + * @input: + * memory :: + * A handle to the source memory manager. + * + * size :: + * The size in bytes to allocate. + * + * @return: + * Address of new memory block. 0~in case of failure. + * + */ +typedef void* +(*FT_Alloc_Func)( FT_Memory memory, + long size ); + + +/************************************************************************* + * + * @functype: + * FT_Free_Func + * + * @description: + * A function used to release a given block of memory. + * + * @input: + * memory :: + * A handle to the source memory manager. + * + * block :: + * The address of the target memory block. + * + */ +typedef void +(*FT_Free_Func)( FT_Memory memory, + void* block ); + + +/************************************************************************* + * + * @functype: + * FT_Realloc_Func + * + * @description: + * A function used to re-allocate a given block of memory. + * + * @input: + * memory :: + * A handle to the source memory manager. + * + * cur_size :: + * The block's current size in bytes. + * + * new_size :: + * The block's requested new size. + * + * block :: + * The block's current address. + * + * @return: + * New block address. 0~in case of memory shortage. + * + * @note: + * In case of error, the old block must still be available. + * + */ +typedef void* +(*FT_Realloc_Func)( FT_Memory memory, + long cur_size, + long new_size, + void* block ); + + +/************************************************************************* + * + * @struct: + * FT_MemoryRec + * + * @description: + * A structure used to describe a given memory manager to FreeType~2. + * + * @fields: + * user :: + * A generic typeless pointer for user data. + * + * alloc :: + * A pointer type to an allocation function. + * + * free :: + * A pointer type to an memory freeing function. + * + * realloc :: + * A pointer type to a reallocation function. + * + */ +struct FT_MemoryRec_ { void* user; FT_Alloc_Func alloc; FT_Free_Func free; FT_Realloc_Func realloc; - }; - - - /*************************************************************************/ - /* */ - /* I / O M A N A G E M E N T */ - /* */ - /*************************************************************************/ - - - /************************************************************************* - * - * @type: - * FT_Stream - * - * @description: - * A handle to an input stream. - * - */ - typedef struct FT_StreamRec_* FT_Stream; - - - /************************************************************************* - * - * @struct: - * FT_StreamDesc - * - * @description: - * A union type used to store either a long or a pointer. This is used - * to store a file descriptor or a `FILE*' in an input stream. - * - */ - typedef union FT_StreamDesc_ - { +}; + + +/*************************************************************************/ +/* */ +/* I / O M A N A G E M E N T */ +/* */ +/*************************************************************************/ + + +/************************************************************************* + * + * @type: + * FT_Stream + * + * @description: + * A handle to an input stream. + * + */ +typedef struct FT_StreamRec_* FT_Stream; + + +/************************************************************************* + * + * @struct: + * FT_StreamDesc + * + * @description: + * A union type used to store either a long or a pointer. This is used + * to store a file descriptor or a `FILE*' in an input stream. + * + */ +typedef union FT_StreamDesc_ { long value; void* pointer; - } FT_StreamDesc; - - - /************************************************************************* - * - * @functype: - * FT_Stream_IoFunc - * - * @description: - * A function used to seek and read data from a given input stream. - * - * @input: - * stream :: - * A handle to the source stream. - * - * offset :: - * The offset of read in stream (always from start). - * - * buffer :: - * The address of the read buffer. - * - * count :: - * The number of bytes to read from the stream. - * - * @return: - * The number of bytes effectively read by the stream. - * - * @note: - * This function might be called to perform a seek or skip operation - * with a `count' of~0. A non-zero return value then indicates an - * error. - * - */ - typedef unsigned long - (*FT_Stream_IoFunc)( FT_Stream stream, - unsigned long offset, - unsigned char* buffer, - unsigned long count ); - - - /************************************************************************* - * - * @functype: - * FT_Stream_CloseFunc - * - * @description: - * A function used to close a given input stream. - * - * @input: - * stream :: - * A handle to the target stream. - * - */ - typedef void - (*FT_Stream_CloseFunc)( FT_Stream stream ); - - - /************************************************************************* - * - * @struct: - * FT_StreamRec - * - * @description: - * A structure used to describe an input stream. - * - * @input: - * base :: - * For memory-based streams, this is the address of the first stream - * byte in memory. This field should always be set to NULL for - * disk-based streams. - * - * size :: - * The stream size in bytes. - * - * pos :: - * The current position within the stream. - * - * descriptor :: - * This field is a union that can hold an integer or a pointer. It is - * used by stream implementations to store file descriptors or `FILE*' - * pointers. - * - * pathname :: - * This field is completely ignored by FreeType. However, it is often - * useful during debugging to use it to store the stream's filename - * (where available). - * - * read :: - * The stream's input function. - * - * close :: - * The stream's close function. - * - * memory :: - * The memory manager to use to preload frames. This is set - * internally by FreeType and shouldn't be touched by stream - * implementations. - * - * cursor :: - * This field is set and used internally by FreeType when parsing - * frames. - * - * limit :: - * This field is set and used internally by FreeType when parsing - * frames. - * - */ - typedef struct FT_StreamRec_ - { +} FT_StreamDesc; + + +/************************************************************************* + * + * @functype: + * FT_Stream_IoFunc + * + * @description: + * A function used to seek and read data from a given input stream. + * + * @input: + * stream :: + * A handle to the source stream. + * + * offset :: + * The offset of read in stream (always from start). + * + * buffer :: + * The address of the read buffer. + * + * count :: + * The number of bytes to read from the stream. + * + * @return: + * The number of bytes effectively read by the stream. + * + * @note: + * This function might be called to perform a seek or skip operation + * with a `count' of~0. A non-zero return value then indicates an + * error. + * + */ +typedef unsigned long +(*FT_Stream_IoFunc)( FT_Stream stream, + unsigned long offset, + unsigned char* buffer, + unsigned long count ); + + +/************************************************************************* + * + * @functype: + * FT_Stream_CloseFunc + * + * @description: + * A function used to close a given input stream. + * + * @input: + * stream :: + * A handle to the target stream. + * + */ +typedef void +(*FT_Stream_CloseFunc)( FT_Stream stream ); + + +/************************************************************************* + * + * @struct: + * FT_StreamRec + * + * @description: + * A structure used to describe an input stream. + * + * @input: + * base :: + * For memory-based streams, this is the address of the first stream + * byte in memory. This field should always be set to NULL for + * disk-based streams. + * + * size :: + * The stream size in bytes. + * + * pos :: + * The current position within the stream. + * + * descriptor :: + * This field is a union that can hold an integer or a pointer. It is + * used by stream implementations to store file descriptors or `FILE*' + * pointers. + * + * pathname :: + * This field is completely ignored by FreeType. However, it is often + * useful during debugging to use it to store the stream's filename + * (where available). + * + * read :: + * The stream's input function. + * + * close :: + * The stream's close function. + * + * memory :: + * The memory manager to use to preload frames. This is set + * internally by FreeType and shouldn't be touched by stream + * implementations. + * + * cursor :: + * This field is set and used internally by FreeType when parsing + * frames. + * + * limit :: + * This field is set and used internally by FreeType when parsing + * frames. + * + */ +typedef struct FT_StreamRec_ { unsigned char* base; unsigned long size; unsigned long pos; @@ -333,10 +330,10 @@ FT_BEGIN_HEADER unsigned char* cursor; unsigned char* limit; - } FT_StreamRec; +} FT_StreamRec; - /* */ +/* */ FT_END_HEADER diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/fttrigon.h b/thirdparties/common/include/libfreetype/freetype2/freetype/fttrigon.h index 65143cb..2e4bab6 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/fttrigon.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/fttrigon.h @@ -31,315 +31,315 @@ FT_BEGIN_HEADER - /*************************************************************************/ - /* */ - /* <Section> */ - /* computations */ - /* */ - /*************************************************************************/ - - - /************************************************************************* - * - * @type: - * FT_Angle - * - * @description: - * This type is used to model angle values in FreeType. Note that the - * angle is a 16.16 fixed-point value expressed in degrees. - * - */ - typedef FT_Fixed FT_Angle; - - - /************************************************************************* - * - * @macro: - * FT_ANGLE_PI - * - * @description: - * The angle pi expressed in @FT_Angle units. - * - */ +/*************************************************************************/ +/* */ +/* <Section> */ +/* computations */ +/* */ +/*************************************************************************/ + + +/************************************************************************* + * + * @type: + * FT_Angle + * + * @description: + * This type is used to model angle values in FreeType. Note that the + * angle is a 16.16 fixed-point value expressed in degrees. + * + */ +typedef FT_Fixed FT_Angle; + + +/************************************************************************* + * + * @macro: + * FT_ANGLE_PI + * + * @description: + * The angle pi expressed in @FT_Angle units. + * + */ #define FT_ANGLE_PI ( 180L << 16 ) - /************************************************************************* - * - * @macro: - * FT_ANGLE_2PI - * - * @description: - * The angle 2*pi expressed in @FT_Angle units. - * - */ +/************************************************************************* + * + * @macro: + * FT_ANGLE_2PI + * + * @description: + * The angle 2*pi expressed in @FT_Angle units. + * + */ #define FT_ANGLE_2PI ( FT_ANGLE_PI * 2 ) - /************************************************************************* - * - * @macro: - * FT_ANGLE_PI2 - * - * @description: - * The angle pi/2 expressed in @FT_Angle units. - * - */ +/************************************************************************* + * + * @macro: + * FT_ANGLE_PI2 + * + * @description: + * The angle pi/2 expressed in @FT_Angle units. + * + */ #define FT_ANGLE_PI2 ( FT_ANGLE_PI / 2 ) - /************************************************************************* - * - * @macro: - * FT_ANGLE_PI4 - * - * @description: - * The angle pi/4 expressed in @FT_Angle units. - * - */ +/************************************************************************* + * + * @macro: + * FT_ANGLE_PI4 + * + * @description: + * The angle pi/4 expressed in @FT_Angle units. + * + */ #define FT_ANGLE_PI4 ( FT_ANGLE_PI / 4 ) - /************************************************************************* - * - * @function: - * FT_Sin - * - * @description: - * Return the sinus of a given angle in fixed-point format. - * - * @input: - * angle :: - * The input angle. - * - * @return: - * The sinus value. - * - * @note: - * If you need both the sinus and cosinus for a given angle, use the - * function @FT_Vector_Unit. - * - */ - FT_EXPORT( FT_Fixed ) - FT_Sin( FT_Angle angle ); - - - /************************************************************************* - * - * @function: - * FT_Cos - * - * @description: - * Return the cosinus of a given angle in fixed-point format. - * - * @input: - * angle :: - * The input angle. - * - * @return: - * The cosinus value. - * - * @note: - * If you need both the sinus and cosinus for a given angle, use the - * function @FT_Vector_Unit. - * - */ - FT_EXPORT( FT_Fixed ) - FT_Cos( FT_Angle angle ); - - - /************************************************************************* - * - * @function: - * FT_Tan - * - * @description: - * Return the tangent of a given angle in fixed-point format. - * - * @input: - * angle :: - * The input angle. - * - * @return: - * The tangent value. - * - */ - FT_EXPORT( FT_Fixed ) - FT_Tan( FT_Angle angle ); - - - /************************************************************************* - * - * @function: - * FT_Atan2 - * - * @description: - * Return the arc-tangent corresponding to a given vector (x,y) in - * the 2d plane. - * - * @input: - * x :: - * The horizontal vector coordinate. - * - * y :: - * The vertical vector coordinate. - * - * @return: - * The arc-tangent value (i.e. angle). - * - */ - FT_EXPORT( FT_Angle ) - FT_Atan2( FT_Fixed x, - FT_Fixed y ); - - - /************************************************************************* - * - * @function: - * FT_Angle_Diff - * - * @description: - * Return the difference between two angles. The result is always - * constrained to the ]-PI..PI] interval. - * - * @input: - * angle1 :: - * First angle. - * - * angle2 :: - * Second angle. - * - * @return: - * Constrained value of `value2-value1'. - * - */ - FT_EXPORT( FT_Angle ) - FT_Angle_Diff( FT_Angle angle1, - FT_Angle angle2 ); - - - /************************************************************************* - * - * @function: - * FT_Vector_Unit - * - * @description: - * Return the unit vector corresponding to a given angle. After the - * call, the value of `vec.x' will be `sin(angle)', and the value of - * `vec.y' will be `cos(angle)'. - * - * This function is useful to retrieve both the sinus and cosinus of a - * given angle quickly. - * - * @output: - * vec :: - * The address of target vector. - * - * @input: - * angle :: - * The address of angle. - * - */ - FT_EXPORT( void ) - FT_Vector_Unit( FT_Vector* vec, +/************************************************************************* + * + * @function: + * FT_Sin + * + * @description: + * Return the sinus of a given angle in fixed-point format. + * + * @input: + * angle :: + * The input angle. + * + * @return: + * The sinus value. + * + * @note: + * If you need both the sinus and cosinus for a given angle, use the + * function @FT_Vector_Unit. + * + */ +FT_EXPORT( FT_Fixed ) +FT_Sin( FT_Angle angle ); + + +/************************************************************************* + * + * @function: + * FT_Cos + * + * @description: + * Return the cosinus of a given angle in fixed-point format. + * + * @input: + * angle :: + * The input angle. + * + * @return: + * The cosinus value. + * + * @note: + * If you need both the sinus and cosinus for a given angle, use the + * function @FT_Vector_Unit. + * + */ +FT_EXPORT( FT_Fixed ) +FT_Cos( FT_Angle angle ); + + +/************************************************************************* + * + * @function: + * FT_Tan + * + * @description: + * Return the tangent of a given angle in fixed-point format. + * + * @input: + * angle :: + * The input angle. + * + * @return: + * The tangent value. + * + */ +FT_EXPORT( FT_Fixed ) +FT_Tan( FT_Angle angle ); + + +/************************************************************************* + * + * @function: + * FT_Atan2 + * + * @description: + * Return the arc-tangent corresponding to a given vector (x,y) in + * the 2d plane. + * + * @input: + * x :: + * The horizontal vector coordinate. + * + * y :: + * The vertical vector coordinate. + * + * @return: + * The arc-tangent value (i.e. angle). + * + */ +FT_EXPORT( FT_Angle ) +FT_Atan2( FT_Fixed x, + FT_Fixed y ); + + +/************************************************************************* + * + * @function: + * FT_Angle_Diff + * + * @description: + * Return the difference between two angles. The result is always + * constrained to the ]-PI..PI] interval. + * + * @input: + * angle1 :: + * First angle. + * + * angle2 :: + * Second angle. + * + * @return: + * Constrained value of `value2-value1'. + * + */ +FT_EXPORT( FT_Angle ) +FT_Angle_Diff( FT_Angle angle1, + FT_Angle angle2 ); + + +/************************************************************************* + * + * @function: + * FT_Vector_Unit + * + * @description: + * Return the unit vector corresponding to a given angle. After the + * call, the value of `vec.x' will be `sin(angle)', and the value of + * `vec.y' will be `cos(angle)'. + * + * This function is useful to retrieve both the sinus and cosinus of a + * given angle quickly. + * + * @output: + * vec :: + * The address of target vector. + * + * @input: + * angle :: + * The address of angle. + * + */ +FT_EXPORT( void ) +FT_Vector_Unit( FT_Vector* vec, + FT_Angle angle ); + + +/************************************************************************* + * + * @function: + * FT_Vector_Rotate + * + * @description: + * Rotate a vector by a given angle. + * + * @inout: + * vec :: + * The address of target vector. + * + * @input: + * angle :: + * The address of angle. + * + */ +FT_EXPORT( void ) +FT_Vector_Rotate( FT_Vector* vec, FT_Angle angle ); - /************************************************************************* - * - * @function: - * FT_Vector_Rotate - * - * @description: - * Rotate a vector by a given angle. - * - * @inout: - * vec :: - * The address of target vector. - * - * @input: - * angle :: - * The address of angle. - * - */ - FT_EXPORT( void ) - FT_Vector_Rotate( FT_Vector* vec, - FT_Angle angle ); - - - /************************************************************************* - * - * @function: - * FT_Vector_Length - * - * @description: - * Return the length of a given vector. - * - * @input: - * vec :: - * The address of target vector. - * - * @return: - * The vector length, expressed in the same units that the original - * vector coordinates. - * - */ - FT_EXPORT( FT_Fixed ) - FT_Vector_Length( FT_Vector* vec ); - - - /************************************************************************* - * - * @function: - * FT_Vector_Polarize - * - * @description: - * Compute both the length and angle of a given vector. - * - * @input: - * vec :: - * The address of source vector. - * - * @output: - * length :: - * The vector length. - * - * angle :: - * The vector angle. - * - */ - FT_EXPORT( void ) - FT_Vector_Polarize( FT_Vector* vec, - FT_Fixed *length, - FT_Angle *angle ); - - - /************************************************************************* - * - * @function: - * FT_Vector_From_Polar - * - * @description: - * Compute vector coordinates from a length and angle. - * - * @output: - * vec :: - * The address of source vector. - * - * @input: - * length :: - * The vector length. - * - * angle :: - * The vector angle. - * - */ - FT_EXPORT( void ) - FT_Vector_From_Polar( FT_Vector* vec, - FT_Fixed length, - FT_Angle angle ); - - /* */ +/************************************************************************* + * + * @function: + * FT_Vector_Length + * + * @description: + * Return the length of a given vector. + * + * @input: + * vec :: + * The address of target vector. + * + * @return: + * The vector length, expressed in the same units that the original + * vector coordinates. + * + */ +FT_EXPORT( FT_Fixed ) +FT_Vector_Length( FT_Vector* vec ); + + +/************************************************************************* + * + * @function: + * FT_Vector_Polarize + * + * @description: + * Compute both the length and angle of a given vector. + * + * @input: + * vec :: + * The address of source vector. + * + * @output: + * length :: + * The vector length. + * + * angle :: + * The vector angle. + * + */ +FT_EXPORT( void ) +FT_Vector_Polarize( FT_Vector* vec, + FT_Fixed *length, + FT_Angle *angle ); + + +/************************************************************************* + * + * @function: + * FT_Vector_From_Polar + * + * @description: + * Compute vector coordinates from a length and angle. + * + * @output: + * vec :: + * The address of source vector. + * + * @input: + * length :: + * The vector length. + * + * angle :: + * The vector angle. + * + */ +FT_EXPORT( void ) +FT_Vector_From_Polar( FT_Vector* vec, + FT_Fixed length, + FT_Angle angle ); + +/* */ FT_END_HEADER diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/fttypes.h b/thirdparties/common/include/libfreetype/freetype2/freetype/fttypes.h index 027e59c..ee7b808 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/fttypes.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/fttypes.h @@ -31,448 +31,444 @@ FT_BEGIN_HEADER - /*************************************************************************/ - /* */ - /* <Section> */ - /* basic_types */ - /* */ - /* <Title> */ - /* Basic Data Types */ - /* */ - /* <Abstract> */ - /* The basic data types defined by the library. */ - /* */ - /* <Description> */ - /* This section contains the basic data types defined by FreeType~2, */ - /* ranging from simple scalar types to bitmap descriptors. More */ - /* font-specific structures are defined in a different section. */ - /* */ - /* <Order> */ - /* FT_Byte */ - /* FT_Bytes */ - /* FT_Char */ - /* FT_Int */ - /* FT_UInt */ - /* FT_Int16 */ - /* FT_UInt16 */ - /* FT_Int32 */ - /* FT_UInt32 */ - /* FT_Short */ - /* FT_UShort */ - /* FT_Long */ - /* FT_ULong */ - /* FT_Bool */ - /* FT_Offset */ - /* FT_PtrDist */ - /* FT_String */ - /* FT_Tag */ - /* FT_Error */ - /* FT_Fixed */ - /* FT_Pointer */ - /* FT_Pos */ - /* FT_Vector */ - /* FT_BBox */ - /* FT_Matrix */ - /* FT_FWord */ - /* FT_UFWord */ - /* FT_F2Dot14 */ - /* FT_UnitVector */ - /* FT_F26Dot6 */ - /* */ - /* */ - /* FT_Generic */ - /* FT_Generic_Finalizer */ - /* */ - /* FT_Bitmap */ - /* FT_Pixel_Mode */ - /* FT_Palette_Mode */ - /* FT_Glyph_Format */ - /* FT_IMAGE_TAG */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Bool */ - /* */ - /* <Description> */ - /* A typedef of unsigned char, used for simple booleans. As usual, */ - /* values 1 and~0 represent true and false, respectively. */ - /* */ - typedef unsigned char FT_Bool; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_FWord */ - /* */ - /* <Description> */ - /* A signed 16-bit integer used to store a distance in original font */ - /* units. */ - /* */ - typedef signed short FT_FWord; /* distance in FUnits */ - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_UFWord */ - /* */ - /* <Description> */ - /* An unsigned 16-bit integer used to store a distance in original */ - /* font units. */ - /* */ - typedef unsigned short FT_UFWord; /* unsigned distance */ - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Char */ - /* */ - /* <Description> */ - /* A simple typedef for the _signed_ char type. */ - /* */ - typedef signed char FT_Char; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Byte */ - /* */ - /* <Description> */ - /* A simple typedef for the _unsigned_ char type. */ - /* */ - 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 32-bit tags (as used in the SFNT format). */ - /* */ - typedef FT_UInt32 FT_Tag; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_String */ - /* */ - /* <Description> */ - /* A simple typedef for the char type, usually used for strings. */ - /* */ - typedef char FT_String; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Short */ - /* */ - /* <Description> */ - /* A typedef for signed short. */ - /* */ - typedef signed short FT_Short; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_UShort */ - /* */ - /* <Description> */ - /* A typedef for unsigned short. */ - /* */ - typedef unsigned short FT_UShort; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Int */ - /* */ - /* <Description> */ - /* A typedef for the int type. */ - /* */ - typedef signed int FT_Int; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_UInt */ - /* */ - /* <Description> */ - /* A typedef for the unsigned int type. */ - /* */ - typedef unsigned int FT_UInt; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Long */ - /* */ - /* <Description> */ - /* A typedef for signed long. */ - /* */ - typedef signed long FT_Long; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_ULong */ - /* */ - /* <Description> */ - /* A typedef for unsigned long. */ - /* */ - typedef unsigned long FT_ULong; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_F2Dot14 */ - /* */ - /* <Description> */ - /* A signed 2.14 fixed-point type used for unit vectors. */ - /* */ - typedef signed short FT_F2Dot14; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_F26Dot6 */ - /* */ - /* <Description> */ - /* A signed 26.6 fixed-point type used for vectorial pixel */ - /* coordinates. */ - /* */ - typedef signed long FT_F26Dot6; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Fixed */ - /* */ - /* <Description> */ - /* This type is used to store 16.16 fixed-point values, like scaling */ - /* values or matrix coefficients. */ - /* */ - typedef signed long FT_Fixed; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Error */ - /* */ - /* <Description> */ - /* The FreeType error code type. A value of~0 is always interpreted */ - /* as a successful operation. */ - /* */ - typedef int FT_Error; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Pointer */ - /* */ - /* <Description> */ - /* A simple typedef for a typeless pointer. */ - /* */ - typedef void* FT_Pointer; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Offset */ - /* */ - /* <Description> */ - /* This is equivalent to the ANSI~C `size_t' type, i.e., the largest */ - /* _unsigned_ integer type used to express a file size or position, */ - /* or a memory block size. */ - /* */ - typedef size_t FT_Offset; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_PtrDist */ - /* */ - /* <Description> */ - /* This is equivalent to the ANSI~C `ptrdiff_t' type, i.e., the */ - /* largest _signed_ integer type used to express the distance */ - /* between two pointers. */ - /* */ - typedef ft_ptrdiff_t FT_PtrDist; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_UnitVector */ - /* */ - /* <Description> */ - /* A simple structure used to store a 2D vector unit vector. Uses */ - /* FT_F2Dot14 types. */ - /* */ - /* <Fields> */ - /* x :: Horizontal coordinate. */ - /* */ - /* y :: Vertical coordinate. */ - /* */ - typedef struct FT_UnitVector_ - { +/*************************************************************************/ +/* */ +/* <Section> */ +/* basic_types */ +/* */ +/* <Title> */ +/* Basic Data Types */ +/* */ +/* <Abstract> */ +/* The basic data types defined by the library. */ +/* */ +/* <Description> */ +/* This section contains the basic data types defined by FreeType~2, */ +/* ranging from simple scalar types to bitmap descriptors. More */ +/* font-specific structures are defined in a different section. */ +/* */ +/* <Order> */ +/* FT_Byte */ +/* FT_Bytes */ +/* FT_Char */ +/* FT_Int */ +/* FT_UInt */ +/* FT_Int16 */ +/* FT_UInt16 */ +/* FT_Int32 */ +/* FT_UInt32 */ +/* FT_Short */ +/* FT_UShort */ +/* FT_Long */ +/* FT_ULong */ +/* FT_Bool */ +/* FT_Offset */ +/* FT_PtrDist */ +/* FT_String */ +/* FT_Tag */ +/* FT_Error */ +/* FT_Fixed */ +/* FT_Pointer */ +/* FT_Pos */ +/* FT_Vector */ +/* FT_BBox */ +/* FT_Matrix */ +/* FT_FWord */ +/* FT_UFWord */ +/* FT_F2Dot14 */ +/* FT_UnitVector */ +/* FT_F26Dot6 */ +/* */ +/* */ +/* FT_Generic */ +/* FT_Generic_Finalizer */ +/* */ +/* FT_Bitmap */ +/* FT_Pixel_Mode */ +/* FT_Palette_Mode */ +/* FT_Glyph_Format */ +/* FT_IMAGE_TAG */ +/* */ +/*************************************************************************/ + + +/*************************************************************************/ +/* */ +/* <Type> */ +/* FT_Bool */ +/* */ +/* <Description> */ +/* A typedef of unsigned char, used for simple booleans. As usual, */ +/* values 1 and~0 represent true and false, respectively. */ +/* */ +typedef unsigned char FT_Bool; + + +/*************************************************************************/ +/* */ +/* <Type> */ +/* FT_FWord */ +/* */ +/* <Description> */ +/* A signed 16-bit integer used to store a distance in original font */ +/* units. */ +/* */ +typedef signed short FT_FWord; /* distance in FUnits */ + + +/*************************************************************************/ +/* */ +/* <Type> */ +/* FT_UFWord */ +/* */ +/* <Description> */ +/* An unsigned 16-bit integer used to store a distance in original */ +/* font units. */ +/* */ +typedef unsigned short FT_UFWord; /* unsigned distance */ + + +/*************************************************************************/ +/* */ +/* <Type> */ +/* FT_Char */ +/* */ +/* <Description> */ +/* A simple typedef for the _signed_ char type. */ +/* */ +typedef signed char FT_Char; + + +/*************************************************************************/ +/* */ +/* <Type> */ +/* FT_Byte */ +/* */ +/* <Description> */ +/* A simple typedef for the _unsigned_ char type. */ +/* */ +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 32-bit tags (as used in the SFNT format). */ +/* */ +typedef FT_UInt32 FT_Tag; + + +/*************************************************************************/ +/* */ +/* <Type> */ +/* FT_String */ +/* */ +/* <Description> */ +/* A simple typedef for the char type, usually used for strings. */ +/* */ +typedef char FT_String; + + +/*************************************************************************/ +/* */ +/* <Type> */ +/* FT_Short */ +/* */ +/* <Description> */ +/* A typedef for signed short. */ +/* */ +typedef signed short FT_Short; + + +/*************************************************************************/ +/* */ +/* <Type> */ +/* FT_UShort */ +/* */ +/* <Description> */ +/* A typedef for unsigned short. */ +/* */ +typedef unsigned short FT_UShort; + + +/*************************************************************************/ +/* */ +/* <Type> */ +/* FT_Int */ +/* */ +/* <Description> */ +/* A typedef for the int type. */ +/* */ +typedef signed int FT_Int; + + +/*************************************************************************/ +/* */ +/* <Type> */ +/* FT_UInt */ +/* */ +/* <Description> */ +/* A typedef for the unsigned int type. */ +/* */ +typedef unsigned int FT_UInt; + + +/*************************************************************************/ +/* */ +/* <Type> */ +/* FT_Long */ +/* */ +/* <Description> */ +/* A typedef for signed long. */ +/* */ +typedef signed long FT_Long; + + +/*************************************************************************/ +/* */ +/* <Type> */ +/* FT_ULong */ +/* */ +/* <Description> */ +/* A typedef for unsigned long. */ +/* */ +typedef unsigned long FT_ULong; + + +/*************************************************************************/ +/* */ +/* <Type> */ +/* FT_F2Dot14 */ +/* */ +/* <Description> */ +/* A signed 2.14 fixed-point type used for unit vectors. */ +/* */ +typedef signed short FT_F2Dot14; + + +/*************************************************************************/ +/* */ +/* <Type> */ +/* FT_F26Dot6 */ +/* */ +/* <Description> */ +/* A signed 26.6 fixed-point type used for vectorial pixel */ +/* coordinates. */ +/* */ +typedef signed long FT_F26Dot6; + + +/*************************************************************************/ +/* */ +/* <Type> */ +/* FT_Fixed */ +/* */ +/* <Description> */ +/* This type is used to store 16.16 fixed-point values, like scaling */ +/* values or matrix coefficients. */ +/* */ +typedef signed long FT_Fixed; + + +/*************************************************************************/ +/* */ +/* <Type> */ +/* FT_Error */ +/* */ +/* <Description> */ +/* The FreeType error code type. A value of~0 is always interpreted */ +/* as a successful operation. */ +/* */ +typedef int FT_Error; + + +/*************************************************************************/ +/* */ +/* <Type> */ +/* FT_Pointer */ +/* */ +/* <Description> */ +/* A simple typedef for a typeless pointer. */ +/* */ +typedef void* FT_Pointer; + + +/*************************************************************************/ +/* */ +/* <Type> */ +/* FT_Offset */ +/* */ +/* <Description> */ +/* This is equivalent to the ANSI~C `size_t' type, i.e., the largest */ +/* _unsigned_ integer type used to express a file size or position, */ +/* or a memory block size. */ +/* */ +typedef size_t FT_Offset; + + +/*************************************************************************/ +/* */ +/* <Type> */ +/* FT_PtrDist */ +/* */ +/* <Description> */ +/* This is equivalent to the ANSI~C `ptrdiff_t' type, i.e., the */ +/* largest _signed_ integer type used to express the distance */ +/* between two pointers. */ +/* */ +typedef ft_ptrdiff_t FT_PtrDist; + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* FT_UnitVector */ +/* */ +/* <Description> */ +/* A simple structure used to store a 2D vector unit vector. Uses */ +/* FT_F2Dot14 types. */ +/* */ +/* <Fields> */ +/* x :: Horizontal coordinate. */ +/* */ +/* y :: Vertical coordinate. */ +/* */ +typedef struct FT_UnitVector_ { FT_F2Dot14 x; FT_F2Dot14 y; - } FT_UnitVector; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Matrix */ - /* */ - /* <Description> */ - /* A simple structure used to store a 2x2 matrix. Coefficients are */ - /* in 16.16 fixed-point format. The computation performed is: */ - /* */ - /* { */ - /* x' = x*xx + y*xy */ - /* y' = x*yx + y*yy */ - /* } */ - /* */ - /* <Fields> */ - /* xx :: Matrix coefficient. */ - /* */ - /* xy :: Matrix coefficient. */ - /* */ - /* yx :: Matrix coefficient. */ - /* */ - /* yy :: Matrix coefficient. */ - /* */ - typedef struct FT_Matrix_ - { +} FT_UnitVector; + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* FT_Matrix */ +/* */ +/* <Description> */ +/* A simple structure used to store a 2x2 matrix. Coefficients are */ +/* in 16.16 fixed-point format. The computation performed is: */ +/* */ +/* { */ +/* x' = x*xx + y*xy */ +/* y' = x*yx + y*yy */ +/* } */ +/* */ +/* <Fields> */ +/* xx :: Matrix coefficient. */ +/* */ +/* xy :: Matrix coefficient. */ +/* */ +/* yx :: Matrix coefficient. */ +/* */ +/* yy :: Matrix coefficient. */ +/* */ +typedef struct FT_Matrix_ { FT_Fixed xx, xy; FT_Fixed yx, yy; - } FT_Matrix; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Data */ - /* */ - /* <Description> */ - /* Read-only binary data represented as a pointer and a length. */ - /* */ - /* <Fields> */ - /* pointer :: The data. */ - /* */ - /* length :: The length of the data in bytes. */ - /* */ - typedef struct FT_Data_ - { +} FT_Matrix; + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* FT_Data */ +/* */ +/* <Description> */ +/* Read-only binary data represented as a pointer and a length. */ +/* */ +/* <Fields> */ +/* pointer :: The data. */ +/* */ +/* length :: The length of the data in bytes. */ +/* */ +typedef struct FT_Data_ { const FT_Byte* pointer; FT_Int length; - } FT_Data; - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Generic_Finalizer */ - /* */ - /* <Description> */ - /* Describe a function used to destroy the `client' data of any */ - /* FreeType object. See the description of the @FT_Generic type for */ - /* details of usage. */ - /* */ - /* <Input> */ - /* The address of the FreeType object which is under finalization. */ - /* Its client data is accessed through its `generic' field. */ - /* */ - typedef void (*FT_Generic_Finalizer)(void* object); - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Generic */ - /* */ - /* <Description> */ - /* Client applications often need to associate their own data to a */ - /* variety of FreeType core objects. For example, a text layout API */ - /* might want to associate a glyph cache to a given size object. */ - /* */ - /* Some FreeType object contains a `generic' field, of type */ - /* FT_Generic, which usage is left to client applications and font */ - /* servers. */ - /* */ - /* It can be used to store a pointer to client-specific data, as well */ - /* as the address of a `finalizer' function, which will be called by */ - /* FreeType when the object is destroyed (for example, the previous */ - /* client example would put the address of the glyph cache destructor */ - /* in the `finalizer' field). */ - /* */ - /* <Fields> */ - /* data :: A typeless pointer to any client-specified data. This */ - /* field is completely ignored by the FreeType library. */ - /* */ - /* finalizer :: A pointer to a `generic finalizer' function, which */ - /* will be called when the object is destroyed. If this */ - /* field is set to NULL, no code will be called. */ - /* */ - typedef struct FT_Generic_ - { +} FT_Data; + + +/*************************************************************************/ +/* */ +/* <FuncType> */ +/* FT_Generic_Finalizer */ +/* */ +/* <Description> */ +/* Describe a function used to destroy the `client' data of any */ +/* FreeType object. See the description of the @FT_Generic type for */ +/* details of usage. */ +/* */ +/* <Input> */ +/* The address of the FreeType object which is under finalization. */ +/* Its client data is accessed through its `generic' field. */ +/* */ +typedef void (*FT_Generic_Finalizer)(void* object); + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* FT_Generic */ +/* */ +/* <Description> */ +/* Client applications often need to associate their own data to a */ +/* variety of FreeType core objects. For example, a text layout API */ +/* might want to associate a glyph cache to a given size object. */ +/* */ +/* Some FreeType object contains a `generic' field, of type */ +/* FT_Generic, which usage is left to client applications and font */ +/* servers. */ +/* */ +/* It can be used to store a pointer to client-specific data, as well */ +/* as the address of a `finalizer' function, which will be called by */ +/* FreeType when the object is destroyed (for example, the previous */ +/* client example would put the address of the glyph cache destructor */ +/* in the `finalizer' field). */ +/* */ +/* <Fields> */ +/* data :: A typeless pointer to any client-specified data. This */ +/* field is completely ignored by the FreeType library. */ +/* */ +/* finalizer :: A pointer to a `generic finalizer' function, which */ +/* will be called when the object is destroyed. If this */ +/* field is set to NULL, no code will be called. */ +/* */ +typedef struct FT_Generic_ { void* data; FT_Generic_Finalizer finalizer; - } FT_Generic; - - - /*************************************************************************/ - /* */ - /* <Macro> */ - /* FT_MAKE_TAG */ - /* */ - /* <Description> */ - /* This macro converts four-letter tags which are used to label */ - /* TrueType tables into an unsigned long to be used within FreeType. */ - /* */ - /* <Note> */ - /* The produced values *must* be 32-bit integers. Don't redefine */ - /* this macro. */ - /* */ +} FT_Generic; + + +/*************************************************************************/ +/* */ +/* <Macro> */ +/* FT_MAKE_TAG */ +/* */ +/* <Description> */ +/* This macro converts four-letter tags which are used to label */ +/* TrueType tables into an unsigned long to be used within FreeType. */ +/* */ +/* <Note> */ +/* The produced values *must* be 32-bit integers. Don't redefine */ +/* this macro. */ +/* */ #define FT_MAKE_TAG( _x1, _x2, _x3, _x4 ) \ (FT_Tag) \ ( ( (FT_ULong)_x1 << 24 ) | \ @@ -481,103 +477,101 @@ FT_BEGIN_HEADER (FT_ULong)_x4 ) - /*************************************************************************/ - /*************************************************************************/ - /* */ - /* L I S T M A N A G E M E N T */ - /* */ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* list_processing */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_ListNode */ - /* */ - /* <Description> */ - /* Many elements and objects in FreeType are listed through an */ - /* @FT_List record (see @FT_ListRec). As its name suggests, an */ - /* FT_ListNode is a handle to a single list element. */ - /* */ - typedef struct FT_ListNodeRec_* FT_ListNode; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_List */ - /* */ - /* <Description> */ - /* A handle to a list record (see @FT_ListRec). */ - /* */ - typedef struct FT_ListRec_* FT_List; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_ListNodeRec */ - /* */ - /* <Description> */ - /* A structure used to hold a single list element. */ - /* */ - /* <Fields> */ - /* prev :: The previous element in the list. NULL if first. */ - /* */ - /* next :: The next element in the list. NULL if last. */ - /* */ - /* data :: A typeless pointer to the listed object. */ - /* */ - typedef struct FT_ListNodeRec_ - { +/*************************************************************************/ +/*************************************************************************/ +/* */ +/* L I S T M A N A G E M E N T */ +/* */ +/*************************************************************************/ +/*************************************************************************/ + + +/*************************************************************************/ +/* */ +/* <Section> */ +/* list_processing */ +/* */ +/*************************************************************************/ + + +/*************************************************************************/ +/* */ +/* <Type> */ +/* FT_ListNode */ +/* */ +/* <Description> */ +/* Many elements and objects in FreeType are listed through an */ +/* @FT_List record (see @FT_ListRec). As its name suggests, an */ +/* FT_ListNode is a handle to a single list element. */ +/* */ +typedef struct FT_ListNodeRec_* FT_ListNode; + + +/*************************************************************************/ +/* */ +/* <Type> */ +/* FT_List */ +/* */ +/* <Description> */ +/* A handle to a list record (see @FT_ListRec). */ +/* */ +typedef struct FT_ListRec_* FT_List; + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* FT_ListNodeRec */ +/* */ +/* <Description> */ +/* A structure used to hold a single list element. */ +/* */ +/* <Fields> */ +/* prev :: The previous element in the list. NULL if first. */ +/* */ +/* next :: The next element in the list. NULL if last. */ +/* */ +/* data :: A typeless pointer to the listed object. */ +/* */ +typedef struct FT_ListNodeRec_ { FT_ListNode prev; FT_ListNode next; void* data; - } FT_ListNodeRec; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_ListRec */ - /* */ - /* <Description> */ - /* A structure used to hold a simple doubly-linked list. These are */ - /* used in many parts of FreeType. */ - /* */ - /* <Fields> */ - /* head :: The head (first element) of doubly-linked list. */ - /* */ - /* tail :: The tail (last element) of doubly-linked list. */ - /* */ - typedef struct FT_ListRec_ - { +} FT_ListNodeRec; + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* FT_ListRec */ +/* */ +/* <Description> */ +/* A structure used to hold a simple doubly-linked list. These are */ +/* used in many parts of FreeType. */ +/* */ +/* <Fields> */ +/* head :: The head (first element) of doubly-linked list. */ +/* */ +/* tail :: The tail (last element) of doubly-linked list. */ +/* */ +typedef struct FT_ListRec_ { FT_ListNode head; FT_ListNode tail; - } FT_ListRec; +} FT_ListRec; - /* */ +/* */ #define FT_IS_EMPTY( list ) ( (list).head == 0 ) #define FT_BOOL( x ) ( (FT_Bool)( x ) ) - /* concatenate C tokens */ +/* concatenate C tokens */ #define FT_ERR_XCAT( x, y ) x ## y #define FT_ERR_CAT( x, y ) FT_ERR_XCAT( x, y ) - /* see `ftmoderr.h' for descriptions of the following macros */ +/* see `ftmoderr.h' for descriptions of the following macros */ #define FT_ERR( e ) FT_ERR_CAT( FT_ERR_PREFIX, e ) diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/ftwinfnt.h b/thirdparties/common/include/libfreetype/freetype2/freetype/ftwinfnt.h index ea33353..22a68d8 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/ftwinfnt.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/ftwinfnt.h @@ -32,124 +32,124 @@ FT_BEGIN_HEADER - /*************************************************************************/ - /* */ - /* <Section> */ - /* winfnt_fonts */ - /* */ - /* <Title> */ - /* Window FNT Files */ - /* */ - /* <Abstract> */ - /* Windows FNT specific API. */ - /* */ - /* <Description> */ - /* This section contains the declaration of Windows FNT specific */ - /* functions. */ - /* */ - /*************************************************************************/ +/*************************************************************************/ +/* */ +/* <Section> */ +/* winfnt_fonts */ +/* */ +/* <Title> */ +/* Window FNT Files */ +/* */ +/* <Abstract> */ +/* Windows FNT specific API. */ +/* */ +/* <Description> */ +/* This section contains the declaration of Windows FNT specific */ +/* functions. */ +/* */ +/*************************************************************************/ - /************************************************************************* - * - * @enum: - * FT_WinFNT_ID_XXX - * - * @description: - * A list of valid values for the `charset' byte in - * @FT_WinFNT_HeaderRec. Exact mapping tables for the various cpXXXX - * encodings (except for cp1361) can be found at ftp://ftp.unicode.org - * in the MAPPINGS/VENDORS/MICSFT/WINDOWS subdirectory. cp1361 is - * roughly a superset of MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT. - * - * @values: - * FT_WinFNT_ID_DEFAULT :: - * This is used for font enumeration and font creation as a - * `don't care' value. Valid font files don't contain this value. - * When querying for information about the character set of the font - * that is currently selected into a specified device context, this - * return value (of the related Windows API) simply denotes failure. - * - * FT_WinFNT_ID_SYMBOL :: - * There is no known mapping table available. - * - * FT_WinFNT_ID_MAC :: - * Mac Roman encoding. - * - * FT_WinFNT_ID_OEM :: - * From Michael Pöttgen <michael@poettgen.de>: - * - * The `Windows Font Mapping' article says that FT_WinFNT_ID_OEM - * is used for the charset of vector fonts, like `modern.fon', - * `roman.fon', and `script.fon' on Windows. - * - * The `CreateFont' documentation says: The FT_WinFNT_ID_OEM value - * specifies a character set that is operating-system dependent. - * - * The `IFIMETRICS' documentation from the `Windows Driver - * Development Kit' says: This font supports an OEM-specific - * character set. The OEM character set is system dependent. - * - * In general OEM, as opposed to ANSI (i.e., cp1252), denotes the - * second default codepage that most international versions of - * Windows have. It is one of the OEM codepages from - * - * http://www.microsoft.com/globaldev/reference/cphome.mspx, - * - * and is used for the `DOS boxes', to support legacy applications. - * A German Windows version for example usually uses ANSI codepage - * 1252 and OEM codepage 850. - * - * FT_WinFNT_ID_CP874 :: - * A superset of Thai TIS 620 and ISO 8859-11. - * - * FT_WinFNT_ID_CP932 :: - * A superset of Japanese Shift-JIS (with minor deviations). - * - * FT_WinFNT_ID_CP936 :: - * A superset of simplified Chinese GB 2312-1980 (with different - * ordering and minor deviations). - * - * FT_WinFNT_ID_CP949 :: - * A superset of Korean Hangul KS~C 5601-1987 (with different - * ordering and minor deviations). - * - * FT_WinFNT_ID_CP950 :: - * A superset of traditional Chinese Big~5 ETen (with different - * ordering and minor deviations). - * - * FT_WinFNT_ID_CP1250 :: - * A superset of East European ISO 8859-2 (with slightly different - * ordering). - * - * FT_WinFNT_ID_CP1251 :: - * A superset of Russian ISO 8859-5 (with different ordering). - * - * FT_WinFNT_ID_CP1252 :: - * ANSI encoding. A superset of ISO 8859-1. - * - * FT_WinFNT_ID_CP1253 :: - * A superset of Greek ISO 8859-7 (with minor modifications). - * - * FT_WinFNT_ID_CP1254 :: - * A superset of Turkish ISO 8859-9. - * - * FT_WinFNT_ID_CP1255 :: - * A superset of Hebrew ISO 8859-8 (with some modifications). - * - * FT_WinFNT_ID_CP1256 :: - * A superset of Arabic ISO 8859-6 (with different ordering). - * - * FT_WinFNT_ID_CP1257 :: - * A superset of Baltic ISO 8859-13 (with some deviations). - * - * FT_WinFNT_ID_CP1258 :: - * For Vietnamese. This encoding doesn't cover all necessary - * characters. - * - * FT_WinFNT_ID_CP1361 :: - * Korean (Johab). - */ +/************************************************************************* + * + * @enum: + * FT_WinFNT_ID_XXX + * + * @description: + * A list of valid values for the `charset' byte in + * @FT_WinFNT_HeaderRec. Exact mapping tables for the various cpXXXX + * encodings (except for cp1361) can be found at ftp://ftp.unicode.org + * in the MAPPINGS/VENDORS/MICSFT/WINDOWS subdirectory. cp1361 is + * roughly a superset of MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT. + * + * @values: + * FT_WinFNT_ID_DEFAULT :: + * This is used for font enumeration and font creation as a + * `don't care' value. Valid font files don't contain this value. + * When querying for information about the character set of the font + * that is currently selected into a specified device context, this + * return value (of the related Windows API) simply denotes failure. + * + * FT_WinFNT_ID_SYMBOL :: + * There is no known mapping table available. + * + * FT_WinFNT_ID_MAC :: + * Mac Roman encoding. + * + * FT_WinFNT_ID_OEM :: + * From Michael Pöttgen <michael@poettgen.de>: + * + * The `Windows Font Mapping' article says that FT_WinFNT_ID_OEM + * is used for the charset of vector fonts, like `modern.fon', + * `roman.fon', and `script.fon' on Windows. + * + * The `CreateFont' documentation says: The FT_WinFNT_ID_OEM value + * specifies a character set that is operating-system dependent. + * + * The `IFIMETRICS' documentation from the `Windows Driver + * Development Kit' says: This font supports an OEM-specific + * character set. The OEM character set is system dependent. + * + * In general OEM, as opposed to ANSI (i.e., cp1252), denotes the + * second default codepage that most international versions of + * Windows have. It is one of the OEM codepages from + * + * http://www.microsoft.com/globaldev/reference/cphome.mspx, + * + * and is used for the `DOS boxes', to support legacy applications. + * A German Windows version for example usually uses ANSI codepage + * 1252 and OEM codepage 850. + * + * FT_WinFNT_ID_CP874 :: + * A superset of Thai TIS 620 and ISO 8859-11. + * + * FT_WinFNT_ID_CP932 :: + * A superset of Japanese Shift-JIS (with minor deviations). + * + * FT_WinFNT_ID_CP936 :: + * A superset of simplified Chinese GB 2312-1980 (with different + * ordering and minor deviations). + * + * FT_WinFNT_ID_CP949 :: + * A superset of Korean Hangul KS~C 5601-1987 (with different + * ordering and minor deviations). + * + * FT_WinFNT_ID_CP950 :: + * A superset of traditional Chinese Big~5 ETen (with different + * ordering and minor deviations). + * + * FT_WinFNT_ID_CP1250 :: + * A superset of East European ISO 8859-2 (with slightly different + * ordering). + * + * FT_WinFNT_ID_CP1251 :: + * A superset of Russian ISO 8859-5 (with different ordering). + * + * FT_WinFNT_ID_CP1252 :: + * ANSI encoding. A superset of ISO 8859-1. + * + * FT_WinFNT_ID_CP1253 :: + * A superset of Greek ISO 8859-7 (with minor modifications). + * + * FT_WinFNT_ID_CP1254 :: + * A superset of Turkish ISO 8859-9. + * + * FT_WinFNT_ID_CP1255 :: + * A superset of Hebrew ISO 8859-8 (with some modifications). + * + * FT_WinFNT_ID_CP1256 :: + * A superset of Arabic ISO 8859-6 (with different ordering). + * + * FT_WinFNT_ID_CP1257 :: + * A superset of Baltic ISO 8859-13 (with some deviations). + * + * FT_WinFNT_ID_CP1258 :: + * For Vietnamese. This encoding doesn't cover all necessary + * characters. + * + * FT_WinFNT_ID_CP1361 :: + * Korean (Johab). + */ #define FT_WinFNT_ID_CP1252 0 #define FT_WinFNT_ID_DEFAULT 1 @@ -172,16 +172,15 @@ FT_BEGIN_HEADER #define FT_WinFNT_ID_OEM 255 - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_WinFNT_HeaderRec */ - /* */ - /* <Description> */ - /* Windows FNT Header info. */ - /* */ - typedef struct FT_WinFNT_HeaderRec_ - { +/*************************************************************************/ +/* */ +/* <Struct> */ +/* FT_WinFNT_HeaderRec */ +/* */ +/* <Description> */ +/* Windows FNT Header info. */ +/* */ +typedef struct FT_WinFNT_HeaderRec_ { FT_UShort version; FT_ULong file_size; FT_Byte copyright[60]; @@ -219,47 +218,47 @@ FT_BEGIN_HEADER FT_UShort color_table_offset; FT_ULong reserved1[4]; - } FT_WinFNT_HeaderRec; +} FT_WinFNT_HeaderRec; - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_WinFNT_Header */ - /* */ - /* <Description> */ - /* A handle to an @FT_WinFNT_HeaderRec structure. */ - /* */ - typedef struct FT_WinFNT_HeaderRec_* FT_WinFNT_Header; +/*************************************************************************/ +/* */ +/* <Struct> */ +/* FT_WinFNT_Header */ +/* */ +/* <Description> */ +/* A handle to an @FT_WinFNT_HeaderRec structure. */ +/* */ +typedef struct FT_WinFNT_HeaderRec_* FT_WinFNT_Header; - /********************************************************************** - * - * @function: - * FT_Get_WinFNT_Header - * - * @description: - * Retrieve a Windows FNT font info header. - * - * @input: - * face :: A handle to the input face. - * - * @output: - * aheader :: The WinFNT header. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * This function only works with Windows FNT faces, returning an error - * otherwise. - */ - FT_EXPORT( FT_Error ) - FT_Get_WinFNT_Header( FT_Face face, - FT_WinFNT_HeaderRec *aheader ); +/********************************************************************** + * + * @function: + * FT_Get_WinFNT_Header + * + * @description: + * Retrieve a Windows FNT font info header. + * + * @input: + * face :: A handle to the input face. + * + * @output: + * aheader :: The WinFNT header. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with Windows FNT faces, returning an error + * otherwise. + */ +FT_EXPORT( FT_Error ) +FT_Get_WinFNT_Header( FT_Face face, + FT_WinFNT_HeaderRec *aheader ); - /* */ +/* */ FT_END_HEADER diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/ftxf86.h b/thirdparties/common/include/libfreetype/freetype2/freetype/ftxf86.h index 8c68afd..dbebae8 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/ftxf86.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/ftxf86.h @@ -32,51 +32,51 @@ FT_BEGIN_HEADER - /*************************************************************************/ - /* */ - /* <Section> */ - /* font_formats */ - /* */ - /* <Title> */ - /* Font Formats */ - /* */ - /* <Abstract> */ - /* Getting the font format. */ - /* */ - /* <Description> */ - /* The single function in this section can be used to get the font */ - /* format. Note that this information is not needed normally; */ - /* however, there are special cases (like in PDF devices) where it is */ - /* important to differentiate, in spite of FreeType's uniform API. */ - /* */ - /* This function is in the X11/xf86 namespace for historical reasons */ - /* and in no way depends on that windowing system. */ - /* */ - /*************************************************************************/ +/*************************************************************************/ +/* */ +/* <Section> */ +/* font_formats */ +/* */ +/* <Title> */ +/* Font Formats */ +/* */ +/* <Abstract> */ +/* Getting the font format. */ +/* */ +/* <Description> */ +/* The single function in this section can be used to get the font */ +/* format. Note that this information is not needed normally; */ +/* however, there are special cases (like in PDF devices) where it is */ +/* important to differentiate, in spite of FreeType's uniform API. */ +/* */ +/* This function is in the X11/xf86 namespace for historical reasons */ +/* and in no way depends on that windowing system. */ +/* */ +/*************************************************************************/ - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_X11_Font_Format */ - /* */ - /* <Description> */ - /* Return a string describing the format of a given face, using values */ - /* which can be used as an X11 FONT_PROPERTY. Possible values are */ - /* `TrueType', `Type~1', `BDF', `PCF', `Type~42', `CID~Type~1', `CFF', */ - /* `PFR', and `Windows~FNT'. */ - /* */ - /* <Input> */ - /* face :: */ - /* Input face handle. */ - /* */ - /* <Return> */ - /* Font format string. NULL in case of error. */ - /* */ - FT_EXPORT( const char* ) - FT_Get_X11_Font_Format( FT_Face face ); +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Get_X11_Font_Format */ +/* */ +/* <Description> */ +/* Return a string describing the format of a given face, using values */ +/* which can be used as an X11 FONT_PROPERTY. Possible values are */ +/* `TrueType', `Type~1', `BDF', `PCF', `Type~42', `CID~Type~1', `CFF', */ +/* `PFR', and `Windows~FNT'. */ +/* */ +/* <Input> */ +/* face :: */ +/* Input face handle. */ +/* */ +/* <Return> */ +/* Font format string. NULL in case of error. */ +/* */ +FT_EXPORT( const char* ) +FT_Get_X11_Font_Format( FT_Face face ); - /* */ +/* */ FT_END_HEADER diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/t1tables.h b/thirdparties/common/include/libfreetype/freetype2/freetype/t1tables.h index a14255e..5a68750 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/t1tables.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/t1tables.h @@ -34,40 +34,39 @@ FT_BEGIN_HEADER - /*************************************************************************/ - /* */ - /* <Section> */ - /* type1_tables */ - /* */ - /* <Title> */ - /* Type 1 Tables */ - /* */ - /* <Abstract> */ - /* Type~1 (PostScript) specific font tables. */ - /* */ - /* <Description> */ - /* This section contains the definition of Type 1-specific tables, */ - /* including structures related to other PostScript font formats. */ - /* */ - /*************************************************************************/ - - - /* Note that we separate font data in PS_FontInfoRec and PS_PrivateRec */ - /* structures in order to support Multiple Master fonts. */ - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* PS_FontInfoRec */ - /* */ - /* <Description> */ - /* A structure used to model a Type~1 or Type~2 FontInfo dictionary. */ - /* Note that for Multiple Master fonts, each instance has its own */ - /* FontInfo dictionary. */ - /* */ - typedef struct PS_FontInfoRec_ - { +/*************************************************************************/ +/* */ +/* <Section> */ +/* type1_tables */ +/* */ +/* <Title> */ +/* Type 1 Tables */ +/* */ +/* <Abstract> */ +/* Type~1 (PostScript) specific font tables. */ +/* */ +/* <Description> */ +/* This section contains the definition of Type 1-specific tables, */ +/* including structures related to other PostScript font formats. */ +/* */ +/*************************************************************************/ + + +/* Note that we separate font data in PS_FontInfoRec and PS_PrivateRec */ +/* structures in order to support Multiple Master fonts. */ + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* PS_FontInfoRec */ +/* */ +/* <Description> */ +/* A structure used to model a Type~1 or Type~2 FontInfo dictionary. */ +/* Note that for Multiple Master fonts, each instance has its own */ +/* FontInfo dictionary. */ +/* */ +typedef struct PS_FontInfoRec_ { FT_String* version; FT_String* notice; FT_String* full_name; @@ -78,45 +77,44 @@ FT_BEGIN_HEADER FT_Short underline_position; FT_UShort underline_thickness; - } PS_FontInfoRec; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* PS_FontInfo */ - /* */ - /* <Description> */ - /* A handle to a @PS_FontInfoRec structure. */ - /* */ - typedef struct PS_FontInfoRec_* PS_FontInfo; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* T1_FontInfo */ - /* */ - /* <Description> */ - /* This type is equivalent to @PS_FontInfoRec. It is deprecated but */ - /* kept to maintain source compatibility between various versions of */ - /* FreeType. */ - /* */ - typedef PS_FontInfoRec T1_FontInfo; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* PS_PrivateRec */ - /* */ - /* <Description> */ - /* A structure used to model a Type~1 or Type~2 private dictionary. */ - /* Note that for Multiple Master fonts, each instance has its own */ - /* Private dictionary. */ - /* */ - typedef struct PS_PrivateRec_ - { +} PS_FontInfoRec; + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* PS_FontInfo */ +/* */ +/* <Description> */ +/* A handle to a @PS_FontInfoRec structure. */ +/* */ +typedef struct PS_FontInfoRec_* PS_FontInfo; + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* T1_FontInfo */ +/* */ +/* <Description> */ +/* This type is equivalent to @PS_FontInfoRec. It is deprecated but */ +/* kept to maintain source compatibility between various versions of */ +/* FreeType. */ +/* */ +typedef PS_FontInfoRec T1_FontInfo; + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* PS_PrivateRec */ +/* */ +/* <Description> */ +/* A structure used to model a Type~1 or Type~2 private dictionary. */ +/* Note that for Multiple Master fonts, each instance has its own */ +/* Private dictionary. */ +/* */ +typedef struct PS_PrivateRec_ { FT_Int unique_id; FT_Int lenIV; @@ -153,45 +151,44 @@ FT_BEGIN_HEADER FT_Short min_feature[2]; - } PS_PrivateRec; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* PS_Private */ - /* */ - /* <Description> */ - /* A handle to a @PS_PrivateRec structure. */ - /* */ - typedef struct PS_PrivateRec_* PS_Private; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* T1_Private */ - /* */ - /* <Description> */ - /* This type is equivalent to @PS_PrivateRec. It is deprecated but */ - /* kept to maintain source compatibility between various versions of */ - /* FreeType. */ - /* */ - typedef PS_PrivateRec T1_Private; - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* T1_Blend_Flags */ - /* */ - /* <Description> */ - /* A set of flags used to indicate which fields are present in a */ - /* given blend dictionary (font info or private). Used to support */ - /* Multiple Masters fonts. */ - /* */ - typedef enum T1_Blend_Flags_ - { +} PS_PrivateRec; + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* PS_Private */ +/* */ +/* <Description> */ +/* A handle to a @PS_PrivateRec structure. */ +/* */ +typedef struct PS_PrivateRec_* PS_Private; + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* T1_Private */ +/* */ +/* <Description> */ +/* This type is equivalent to @PS_PrivateRec. It is deprecated but */ +/* kept to maintain source compatibility between various versions of */ +/* FreeType. */ +/* */ +typedef PS_PrivateRec T1_Private; + + +/*************************************************************************/ +/* */ +/* <Enum> */ +/* T1_Blend_Flags */ +/* */ +/* <Description> */ +/* A set of flags used to indicate which fields are present in a */ +/* given blend dictionary (font info or private). Used to support */ +/* Multiple Masters fonts. */ +/* */ +typedef enum T1_Blend_Flags_ { /*# required fields in a FontInfo blend dictionary */ T1_BLEND_UNDERLINE_POSITION = 0, T1_BLEND_UNDERLINE_THICKNESS, @@ -213,12 +210,12 @@ FT_BEGIN_HEADER /*# never remove */ T1_BLEND_MAX - } T1_Blend_Flags; +} T1_Blend_Flags; - /* */ +/* */ - /*# backwards compatible definitions */ +/*# backwards compatible definitions */ #define t1_blend_underline_position T1_BLEND_UNDERLINE_POSITION #define t1_blend_underline_thickness T1_BLEND_UNDERLINE_THICKNESS #define t1_blend_italic_angle T1_BLEND_ITALIC_ANGLE @@ -236,31 +233,29 @@ FT_BEGIN_HEADER #define t1_blend_max T1_BLEND_MAX - /* maximum number of Multiple Masters designs, as defined in the spec */ +/* maximum number of Multiple Masters designs, as defined in the spec */ #define T1_MAX_MM_DESIGNS 16 - /* maximum number of Multiple Masters axes, as defined in the spec */ +/* maximum number of Multiple Masters axes, as defined in the spec */ #define T1_MAX_MM_AXIS 4 - /* maximum number of elements in a design map */ +/* maximum number of elements in a design map */ #define T1_MAX_MM_MAP_POINTS 20 - /* this structure is used to store the BlendDesignMap entry for an axis */ - typedef struct PS_DesignMap_ - { +/* this structure is used to store the BlendDesignMap entry for an axis */ +typedef struct PS_DesignMap_ { FT_Byte num_points; FT_Long* design_points; FT_Fixed* blend_points; - } PS_DesignMapRec, *PS_DesignMap; +} PS_DesignMapRec, *PS_DesignMap; - /* backwards-compatible definition */ - typedef PS_DesignMapRec T1_DesignMap; +/* backwards-compatible definition */ +typedef PS_DesignMapRec T1_DesignMap; - typedef struct PS_BlendRec_ - { +typedef struct PS_BlendRec_ { FT_UInt num_designs; FT_UInt num_axis; @@ -287,23 +282,22 @@ FT_BEGIN_HEADER FT_UInt default_design_vector[T1_MAX_MM_DESIGNS]; FT_UInt num_default_design_vector; - } PS_BlendRec, *PS_Blend; +} PS_BlendRec, *PS_Blend; - /* backwards-compatible definition */ - typedef PS_BlendRec T1_Blend; +/* backwards-compatible definition */ +typedef PS_BlendRec T1_Blend; - /*************************************************************************/ - /* */ - /* <Struct> */ - /* CID_FaceDictRec */ - /* */ - /* <Description> */ - /* A structure used to represent data in a CID top-level dictionary. */ - /* */ - typedef struct CID_FaceDictRec_ - { +/*************************************************************************/ +/* */ +/* <Struct> */ +/* CID_FaceDictRec */ +/* */ +/* <Description> */ +/* A structure used to represent data in a CID top-level dictionary. */ +/* */ +typedef struct CID_FaceDictRec_ { PS_PrivateRec private_dict; FT_UInt len_buildchar; @@ -320,36 +314,35 @@ FT_BEGIN_HEADER FT_ULong subrmap_offset; FT_Int sd_bytes; - } CID_FaceDictRec; +} CID_FaceDictRec; - /*************************************************************************/ - /* */ - /* <Struct> */ - /* CID_FaceDict */ - /* */ - /* <Description> */ - /* A handle to a @CID_FaceDictRec structure. */ - /* */ - typedef struct CID_FaceDictRec_* CID_FaceDict; +/*************************************************************************/ +/* */ +/* <Struct> */ +/* CID_FaceDict */ +/* */ +/* <Description> */ +/* A handle to a @CID_FaceDictRec structure. */ +/* */ +typedef struct CID_FaceDictRec_* CID_FaceDict; - /* */ +/* */ - /* backwards-compatible definition */ - typedef CID_FaceDictRec CID_FontDict; +/* backwards-compatible definition */ +typedef CID_FaceDictRec CID_FontDict; - /*************************************************************************/ - /* */ - /* <Struct> */ - /* CID_FaceInfoRec */ - /* */ - /* <Description> */ - /* A structure used to represent CID Face information. */ - /* */ - typedef struct CID_FaceInfoRec_ - { +/*************************************************************************/ +/* */ +/* <Struct> */ +/* CID_FaceInfoRec */ +/* */ +/* <Description> */ +/* A structure used to represent CID Face information. */ +/* */ +typedef struct CID_FaceInfoRec_ { FT_String* cid_font_name; FT_Fixed cid_version; FT_Int cid_font_type; @@ -375,156 +368,154 @@ FT_BEGIN_HEADER FT_ULong data_offset; - } CID_FaceInfoRec; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* CID_FaceInfo */ - /* */ - /* <Description> */ - /* A handle to a @CID_FaceInfoRec structure. */ - /* */ - typedef struct CID_FaceInfoRec_* CID_FaceInfo; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* CID_Info */ - /* */ - /* <Description> */ - /* This type is equivalent to @CID_FaceInfoRec. It is deprecated but */ - /* kept to maintain source compatibility between various versions of */ - /* FreeType. */ - /* */ - typedef CID_FaceInfoRec CID_Info; - - - /************************************************************************ - * - * @function: - * FT_Has_PS_Glyph_Names - * - * @description: - * Return true if a given face provides reliable PostScript glyph - * names. This is similar to using the @FT_HAS_GLYPH_NAMES macro, - * except that certain fonts (mostly TrueType) contain incorrect - * glyph name tables. - * - * When this function returns true, the caller is sure that the glyph - * names returned by @FT_Get_Glyph_Name are reliable. - * - * @input: - * face :: - * face handle - * - * @return: - * Boolean. True if glyph names are reliable. - * - */ - FT_EXPORT( FT_Int ) - FT_Has_PS_Glyph_Names( FT_Face face ); - - - /************************************************************************ - * - * @function: - * FT_Get_PS_Font_Info - * - * @description: - * Retrieve the @PS_FontInfoRec structure corresponding to a given - * PostScript font. - * - * @input: - * face :: - * PostScript face handle. - * - * @output: - * afont_info :: - * Output font info 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_Info( FT_Face face, - PS_FontInfo 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 @PS_PrivateRec 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 returns - * the `FT_Err_Invalid_Argument' error code. - * - */ - FT_EXPORT( FT_Error ) - FT_Get_PS_Font_Private( FT_Face face, - PS_Private afont_private ); - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* T1_EncodingType */ - /* */ - /* <Description> */ - /* An enumeration describing the `Encoding' entry in a Type 1 */ - /* dictionary. */ - /* */ - typedef enum T1_EncodingType_ - { +} CID_FaceInfoRec; + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* CID_FaceInfo */ +/* */ +/* <Description> */ +/* A handle to a @CID_FaceInfoRec structure. */ +/* */ +typedef struct CID_FaceInfoRec_* CID_FaceInfo; + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* CID_Info */ +/* */ +/* <Description> */ +/* This type is equivalent to @CID_FaceInfoRec. It is deprecated but */ +/* kept to maintain source compatibility between various versions of */ +/* FreeType. */ +/* */ +typedef CID_FaceInfoRec CID_Info; + + +/************************************************************************ + * + * @function: + * FT_Has_PS_Glyph_Names + * + * @description: + * Return true if a given face provides reliable PostScript glyph + * names. This is similar to using the @FT_HAS_GLYPH_NAMES macro, + * except that certain fonts (mostly TrueType) contain incorrect + * glyph name tables. + * + * When this function returns true, the caller is sure that the glyph + * names returned by @FT_Get_Glyph_Name are reliable. + * + * @input: + * face :: + * face handle + * + * @return: + * Boolean. True if glyph names are reliable. + * + */ +FT_EXPORT( FT_Int ) +FT_Has_PS_Glyph_Names( FT_Face face ); + + +/************************************************************************ + * + * @function: + * FT_Get_PS_Font_Info + * + * @description: + * Retrieve the @PS_FontInfoRec structure corresponding to a given + * PostScript font. + * + * @input: + * face :: + * PostScript face handle. + * + * @output: + * afont_info :: + * Output font info 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_Info( FT_Face face, + PS_FontInfo 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 @PS_PrivateRec 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 returns + * the `FT_Err_Invalid_Argument' error code. + * + */ +FT_EXPORT( FT_Error ) +FT_Get_PS_Font_Private( FT_Face face, + PS_Private afont_private ); + + +/*************************************************************************/ +/* */ +/* <Enum> */ +/* T1_EncodingType */ +/* */ +/* <Description> */ +/* An enumeration describing the `Encoding' entry in a Type 1 */ +/* dictionary. */ +/* */ +typedef enum T1_EncodingType_ { T1_ENCODING_TYPE_NONE = 0, T1_ENCODING_TYPE_ARRAY, T1_ENCODING_TYPE_STANDARD, T1_ENCODING_TYPE_ISOLATIN1, T1_ENCODING_TYPE_EXPERT - } T1_EncodingType; +} T1_EncodingType; - /*************************************************************************/ - /* */ - /* <Enum> */ - /* PS_Dict_Keys */ - /* */ - /* <Description> */ - /* An enumeration used in calls to @FT_Get_PS_Font_Value to identify */ - /* the Type~1 dictionary entry to retrieve. */ - /* */ - typedef enum PS_Dict_Keys_ - { +/*************************************************************************/ +/* */ +/* <Enum> */ +/* PS_Dict_Keys */ +/* */ +/* <Description> */ +/* An enumeration used in calls to @FT_Get_PS_Font_Value to identify */ +/* the Type~1 dictionary entry to retrieve. */ +/* */ +typedef enum PS_Dict_Keys_ { /* conventionally in the font dictionary */ PS_DICT_FONT_TYPE, /* FT_Byte */ PS_DICT_FONT_MATRIX, /* FT_Fixed */ @@ -579,80 +570,80 @@ FT_BEGIN_HEADER PS_DICT_MAX = PS_DICT_ITALIC_ANGLE - } PS_Dict_Keys; - - - /************************************************************************ - * - * @function: - * FT_Get_PS_Font_Value - * - * @description: - * Retrieve the value for the supplied key from a PostScript font. - * - * @input: - * face :: - * PostScript face handle. - * - * key :: - * An enumeration value representing the dictionary key to retrieve. - * - * idx :: - * For array values, this specifies the index to be returned. - * - * value :: - * A pointer to memory into which to write the value. - * - * valen_len :: - * The size, in bytes, of the memory supplied for the value. - * - * @output: - * value :: - * The value matching the above key, if it exists. - * - * @return: - * The amount of memory (in bytes) required to hold the requested - * value (if it exists, -1 otherwise). - * - * @note: - * The values returned are not pointers into the internal structures of - * the face, but are `fresh' copies, so that the memory containing them - * belongs to the calling application. This also enforces the - * `read-only' nature of these values, i.e., this function cannot be - * used to manipulate the face. - * - * `value' is a void pointer because the values returned can be of - * various types. - * - * If either `value' is NULL or `value_len' is too small, just the - * required memory size for the requested entry is returned. - * - * The `idx' parameter is used, not only to retrieve elements of, for - * example, the FontMatrix or FontBBox, but also to retrieve name keys - * from the CharStrings dictionary, and the charstrings themselves. It - * is ignored for atomic values. - * - * PS_DICT_BLUE_SCALE returns a value that is scaled up by 1000. To - * get the value as in the font stream, you need to divide by - * 65536000.0 (to remove the FT_Fixed scale, and the x1000 scale). - * - * IMPORTANT: Only key/value pairs read by the FreeType interpreter can - * be retrieved. So, for example, PostScript procedures such as NP, - * ND, and RD are not available. Arbitrary keys are, obviously, not be - * available either. - * - * If the font's format is not PostScript-based, this function returns - * the `FT_Err_Invalid_Argument' error code. - * - */ - FT_EXPORT( FT_Long ) - FT_Get_PS_Font_Value( FT_Face face, - PS_Dict_Keys key, - FT_UInt idx, - void *value, - FT_Long value_len ); - - /* */ +} PS_Dict_Keys; + + +/************************************************************************ + * + * @function: + * FT_Get_PS_Font_Value + * + * @description: + * Retrieve the value for the supplied key from a PostScript font. + * + * @input: + * face :: + * PostScript face handle. + * + * key :: + * An enumeration value representing the dictionary key to retrieve. + * + * idx :: + * For array values, this specifies the index to be returned. + * + * value :: + * A pointer to memory into which to write the value. + * + * valen_len :: + * The size, in bytes, of the memory supplied for the value. + * + * @output: + * value :: + * The value matching the above key, if it exists. + * + * @return: + * The amount of memory (in bytes) required to hold the requested + * value (if it exists, -1 otherwise). + * + * @note: + * The values returned are not pointers into the internal structures of + * the face, but are `fresh' copies, so that the memory containing them + * belongs to the calling application. This also enforces the + * `read-only' nature of these values, i.e., this function cannot be + * used to manipulate the face. + * + * `value' is a void pointer because the values returned can be of + * various types. + * + * If either `value' is NULL or `value_len' is too small, just the + * required memory size for the requested entry is returned. + * + * The `idx' parameter is used, not only to retrieve elements of, for + * example, the FontMatrix or FontBBox, but also to retrieve name keys + * from the CharStrings dictionary, and the charstrings themselves. It + * is ignored for atomic values. + * + * PS_DICT_BLUE_SCALE returns a value that is scaled up by 1000. To + * get the value as in the font stream, you need to divide by + * 65536000.0 (to remove the FT_Fixed scale, and the x1000 scale). + * + * IMPORTANT: Only key/value pairs read by the FreeType interpreter can + * be retrieved. So, for example, PostScript procedures such as NP, + * ND, and RD are not available. Arbitrary keys are, obviously, not be + * available either. + * + * If the font's format is not PostScript-based, this function returns + * the `FT_Err_Invalid_Argument' error code. + * + */ +FT_EXPORT( FT_Long ) +FT_Get_PS_Font_Value( FT_Face face, + PS_Dict_Keys key, + FT_UInt idx, + void *value, + FT_Long value_len ); + +/* */ FT_END_HEADER diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/ttnameid.h b/thirdparties/common/include/libfreetype/freetype2/freetype/ttnameid.h index 173f88c..fb72434 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/ttnameid.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/ttnameid.h @@ -26,62 +26,62 @@ FT_BEGIN_HEADER - /*************************************************************************/ - /* */ - /* <Section> */ - /* truetype_tables */ - /* */ - - - /*************************************************************************/ - /* */ - /* Possible values for the `platform' identifier code in the name */ - /* records of the TTF `name' table. */ - /* */ - /*************************************************************************/ - - - /*********************************************************************** - * - * @enum: - * TT_PLATFORM_XXX - * - * @description: - * A list of valid values for the `platform_id' identifier code in - * @FT_CharMapRec and @FT_SfntName structures. - * - * @values: - * TT_PLATFORM_APPLE_UNICODE :: - * Used by Apple to indicate a Unicode character map and/or name entry. - * See @TT_APPLE_ID_XXX for corresponding `encoding_id' values. Note - * that name entries in this format are coded as big-endian UCS-2 - * character codes _only_. - * - * TT_PLATFORM_MACINTOSH :: - * Used by Apple to indicate a MacOS-specific charmap and/or name entry. - * See @TT_MAC_ID_XXX for corresponding `encoding_id' values. Note that - * most TrueType fonts contain an Apple roman charmap to be usable on - * MacOS systems (even if they contain a Microsoft charmap as well). - * - * TT_PLATFORM_ISO :: - * This value was used to specify ISO/IEC 10646 charmaps. It is however - * now deprecated. See @TT_ISO_ID_XXX for a list of corresponding - * `encoding_id' values. - * - * TT_PLATFORM_MICROSOFT :: - * Used by Microsoft to indicate Windows-specific charmaps. See - * @TT_MS_ID_XXX for a list of corresponding `encoding_id' values. - * Note that most fonts contain a Unicode charmap using - * (TT_PLATFORM_MICROSOFT, @TT_MS_ID_UNICODE_CS). - * - * TT_PLATFORM_CUSTOM :: - * Used to indicate application-specific charmaps. - * - * TT_PLATFORM_ADOBE :: - * This value isn't part of any font format specification, but is used - * by FreeType to report Adobe-specific charmaps in an @FT_CharMapRec - * structure. See @TT_ADOBE_ID_XXX. - */ +/*************************************************************************/ +/* */ +/* <Section> */ +/* truetype_tables */ +/* */ + + +/*************************************************************************/ +/* */ +/* Possible values for the `platform' identifier code in the name */ +/* records of the TTF `name' table. */ +/* */ +/*************************************************************************/ + + +/*********************************************************************** + * + * @enum: + * TT_PLATFORM_XXX + * + * @description: + * A list of valid values for the `platform_id' identifier code in + * @FT_CharMapRec and @FT_SfntName structures. + * + * @values: + * TT_PLATFORM_APPLE_UNICODE :: + * Used by Apple to indicate a Unicode character map and/or name entry. + * See @TT_APPLE_ID_XXX for corresponding `encoding_id' values. Note + * that name entries in this format are coded as big-endian UCS-2 + * character codes _only_. + * + * TT_PLATFORM_MACINTOSH :: + * Used by Apple to indicate a MacOS-specific charmap and/or name entry. + * See @TT_MAC_ID_XXX for corresponding `encoding_id' values. Note that + * most TrueType fonts contain an Apple roman charmap to be usable on + * MacOS systems (even if they contain a Microsoft charmap as well). + * + * TT_PLATFORM_ISO :: + * This value was used to specify ISO/IEC 10646 charmaps. It is however + * now deprecated. See @TT_ISO_ID_XXX for a list of corresponding + * `encoding_id' values. + * + * TT_PLATFORM_MICROSOFT :: + * Used by Microsoft to indicate Windows-specific charmaps. See + * @TT_MS_ID_XXX for a list of corresponding `encoding_id' values. + * Note that most fonts contain a Unicode charmap using + * (TT_PLATFORM_MICROSOFT, @TT_MS_ID_UNICODE_CS). + * + * TT_PLATFORM_CUSTOM :: + * Used to indicate application-specific charmaps. + * + * TT_PLATFORM_ADOBE :: + * This value isn't part of any font format specification, but is used + * by FreeType to report Adobe-specific charmaps in an @FT_CharMapRec + * structure. See @TT_ADOBE_ID_XXX. + */ #define TT_PLATFORM_APPLE_UNICODE 0 #define TT_PLATFORM_MACINTOSH 1 @@ -91,35 +91,35 @@ FT_BEGIN_HEADER #define TT_PLATFORM_ADOBE 7 /* artificial */ - /*********************************************************************** - * - * @enum: - * TT_APPLE_ID_XXX - * - * @description: - * A list of valid values for the `encoding_id' for - * @TT_PLATFORM_APPLE_UNICODE charmaps and name entries. - * - * @values: - * TT_APPLE_ID_DEFAULT :: - * Unicode version 1.0. - * - * TT_APPLE_ID_UNICODE_1_1 :: - * Unicode 1.1; specifies Hangul characters starting at U+34xx. - * - * TT_APPLE_ID_ISO_10646 :: - * Deprecated (identical to preceding). - * - * TT_APPLE_ID_UNICODE_2_0 :: - * Unicode 2.0 and beyond (UTF-16 BMP only). - * - * TT_APPLE_ID_UNICODE_32 :: - * Unicode 3.1 and beyond, using UTF-32. - * - * TT_APPLE_ID_VARIANT_SELECTOR :: - * From Adobe, not Apple. Not a normal cmap. Specifies variations - * on a real cmap. - */ +/*********************************************************************** + * + * @enum: + * TT_APPLE_ID_XXX + * + * @description: + * A list of valid values for the `encoding_id' for + * @TT_PLATFORM_APPLE_UNICODE charmaps and name entries. + * + * @values: + * TT_APPLE_ID_DEFAULT :: + * Unicode version 1.0. + * + * TT_APPLE_ID_UNICODE_1_1 :: + * Unicode 1.1; specifies Hangul characters starting at U+34xx. + * + * TT_APPLE_ID_ISO_10646 :: + * Deprecated (identical to preceding). + * + * TT_APPLE_ID_UNICODE_2_0 :: + * Unicode 2.0 and beyond (UTF-16 BMP only). + * + * TT_APPLE_ID_UNICODE_32 :: + * Unicode 3.1 and beyond, using UTF-32. + * + * TT_APPLE_ID_VARIANT_SELECTOR :: + * From Adobe, not Apple. Not a normal cmap. Specifies variations + * on a real cmap. + */ #define TT_APPLE_ID_DEFAULT 0 /* Unicode 1.0 */ #define TT_APPLE_ID_UNICODE_1_1 1 /* specify Hangul at U+34xx */ @@ -129,51 +129,51 @@ FT_BEGIN_HEADER #define TT_APPLE_ID_VARIANT_SELECTOR 5 /* variation selector data */ - /*********************************************************************** - * - * @enum: - * TT_MAC_ID_XXX - * - * @description: - * A list of valid values for the `encoding_id' for - * @TT_PLATFORM_MACINTOSH charmaps and name entries. - * - * @values: - * TT_MAC_ID_ROMAN :: - * TT_MAC_ID_JAPANESE :: - * TT_MAC_ID_TRADITIONAL_CHINESE :: - * TT_MAC_ID_KOREAN :: - * TT_MAC_ID_ARABIC :: - * TT_MAC_ID_HEBREW :: - * TT_MAC_ID_GREEK :: - * TT_MAC_ID_RUSSIAN :: - * TT_MAC_ID_RSYMBOL :: - * TT_MAC_ID_DEVANAGARI :: - * TT_MAC_ID_GURMUKHI :: - * TT_MAC_ID_GUJARATI :: - * TT_MAC_ID_ORIYA :: - * TT_MAC_ID_BENGALI :: - * TT_MAC_ID_TAMIL :: - * TT_MAC_ID_TELUGU :: - * TT_MAC_ID_KANNADA :: - * TT_MAC_ID_MALAYALAM :: - * TT_MAC_ID_SINHALESE :: - * TT_MAC_ID_BURMESE :: - * TT_MAC_ID_KHMER :: - * TT_MAC_ID_THAI :: - * TT_MAC_ID_LAOTIAN :: - * TT_MAC_ID_GEORGIAN :: - * TT_MAC_ID_ARMENIAN :: - * TT_MAC_ID_MALDIVIAN :: - * TT_MAC_ID_SIMPLIFIED_CHINESE :: - * TT_MAC_ID_TIBETAN :: - * TT_MAC_ID_MONGOLIAN :: - * TT_MAC_ID_GEEZ :: - * TT_MAC_ID_SLAVIC :: - * TT_MAC_ID_VIETNAMESE :: - * TT_MAC_ID_SINDHI :: - * TT_MAC_ID_UNINTERP :: - */ +/*********************************************************************** + * + * @enum: + * TT_MAC_ID_XXX + * + * @description: + * A list of valid values for the `encoding_id' for + * @TT_PLATFORM_MACINTOSH charmaps and name entries. + * + * @values: + * TT_MAC_ID_ROMAN :: + * TT_MAC_ID_JAPANESE :: + * TT_MAC_ID_TRADITIONAL_CHINESE :: + * TT_MAC_ID_KOREAN :: + * TT_MAC_ID_ARABIC :: + * TT_MAC_ID_HEBREW :: + * TT_MAC_ID_GREEK :: + * TT_MAC_ID_RUSSIAN :: + * TT_MAC_ID_RSYMBOL :: + * TT_MAC_ID_DEVANAGARI :: + * TT_MAC_ID_GURMUKHI :: + * TT_MAC_ID_GUJARATI :: + * TT_MAC_ID_ORIYA :: + * TT_MAC_ID_BENGALI :: + * TT_MAC_ID_TAMIL :: + * TT_MAC_ID_TELUGU :: + * TT_MAC_ID_KANNADA :: + * TT_MAC_ID_MALAYALAM :: + * TT_MAC_ID_SINHALESE :: + * TT_MAC_ID_BURMESE :: + * TT_MAC_ID_KHMER :: + * TT_MAC_ID_THAI :: + * TT_MAC_ID_LAOTIAN :: + * TT_MAC_ID_GEORGIAN :: + * TT_MAC_ID_ARMENIAN :: + * TT_MAC_ID_MALDIVIAN :: + * TT_MAC_ID_SIMPLIFIED_CHINESE :: + * TT_MAC_ID_TIBETAN :: + * TT_MAC_ID_MONGOLIAN :: + * TT_MAC_ID_GEEZ :: + * TT_MAC_ID_SLAVIC :: + * TT_MAC_ID_VIETNAMESE :: + * TT_MAC_ID_SINDHI :: + * TT_MAC_ID_UNINTERP :: + */ #define TT_MAC_ID_ROMAN 0 #define TT_MAC_ID_JAPANESE 1 @@ -211,70 +211,70 @@ FT_BEGIN_HEADER #define TT_MAC_ID_UNINTERP 32 - /*********************************************************************** - * - * @enum: - * TT_ISO_ID_XXX - * - * @description: - * A list of valid values for the `encoding_id' for - * @TT_PLATFORM_ISO charmaps and name entries. - * - * Their use is now deprecated. - * - * @values: - * TT_ISO_ID_7BIT_ASCII :: - * ASCII. - * TT_ISO_ID_10646 :: - * ISO/10646. - * TT_ISO_ID_8859_1 :: - * Also known as Latin-1. - */ +/*********************************************************************** + * + * @enum: + * TT_ISO_ID_XXX + * + * @description: + * A list of valid values for the `encoding_id' for + * @TT_PLATFORM_ISO charmaps and name entries. + * + * Their use is now deprecated. + * + * @values: + * TT_ISO_ID_7BIT_ASCII :: + * ASCII. + * TT_ISO_ID_10646 :: + * ISO/10646. + * TT_ISO_ID_8859_1 :: + * Also known as Latin-1. + */ #define TT_ISO_ID_7BIT_ASCII 0 #define TT_ISO_ID_10646 1 #define TT_ISO_ID_8859_1 2 - /*********************************************************************** - * - * @enum: - * TT_MS_ID_XXX - * - * @description: - * A list of valid values for the `encoding_id' for - * @TT_PLATFORM_MICROSOFT charmaps and name entries. - * - * @values: - * TT_MS_ID_SYMBOL_CS :: - * Corresponds to Microsoft symbol encoding. See - * @FT_ENCODING_MS_SYMBOL. - * - * TT_MS_ID_UNICODE_CS :: - * Corresponds to a Microsoft WGL4 charmap, matching Unicode. See - * @FT_ENCODING_UNICODE. - * - * TT_MS_ID_SJIS :: - * Corresponds to SJIS Japanese encoding. See @FT_ENCODING_SJIS. - * - * TT_MS_ID_GB2312 :: - * Corresponds to Simplified Chinese as used in Mainland China. See - * @FT_ENCODING_GB2312. - * - * TT_MS_ID_BIG_5 :: - * Corresponds to Traditional Chinese as used in Taiwan and Hong Kong. - * See @FT_ENCODING_BIG5. - * - * TT_MS_ID_WANSUNG :: - * Corresponds to Korean Wansung encoding. See @FT_ENCODING_WANSUNG. - * - * TT_MS_ID_JOHAB :: - * Corresponds to Johab encoding. See @FT_ENCODING_JOHAB. - * - * TT_MS_ID_UCS_4 :: - * Corresponds to UCS-4 or UTF-32 charmaps. This has been added to - * the OpenType specification version 1.4 (mid-2001.) - */ +/*********************************************************************** + * + * @enum: + * TT_MS_ID_XXX + * + * @description: + * A list of valid values for the `encoding_id' for + * @TT_PLATFORM_MICROSOFT charmaps and name entries. + * + * @values: + * TT_MS_ID_SYMBOL_CS :: + * Corresponds to Microsoft symbol encoding. See + * @FT_ENCODING_MS_SYMBOL. + * + * TT_MS_ID_UNICODE_CS :: + * Corresponds to a Microsoft WGL4 charmap, matching Unicode. See + * @FT_ENCODING_UNICODE. + * + * TT_MS_ID_SJIS :: + * Corresponds to SJIS Japanese encoding. See @FT_ENCODING_SJIS. + * + * TT_MS_ID_GB2312 :: + * Corresponds to Simplified Chinese as used in Mainland China. See + * @FT_ENCODING_GB2312. + * + * TT_MS_ID_BIG_5 :: + * Corresponds to Traditional Chinese as used in Taiwan and Hong Kong. + * See @FT_ENCODING_BIG5. + * + * TT_MS_ID_WANSUNG :: + * Corresponds to Korean Wansung encoding. See @FT_ENCODING_WANSUNG. + * + * TT_MS_ID_JOHAB :: + * Corresponds to Johab encoding. See @FT_ENCODING_JOHAB. + * + * TT_MS_ID_UCS_4 :: + * Corresponds to UCS-4 or UTF-32 charmaps. This has been added to + * the OpenType specification version 1.4 (mid-2001.) + */ #define TT_MS_ID_SYMBOL_CS 0 #define TT_MS_ID_UNICODE_CS 1 @@ -286,25 +286,25 @@ FT_BEGIN_HEADER #define TT_MS_ID_UCS_4 10 - /*********************************************************************** - * - * @enum: - * TT_ADOBE_ID_XXX - * - * @description: - * A list of valid values for the `encoding_id' for - * @TT_PLATFORM_ADOBE charmaps. This is a FreeType-specific extension! - * - * @values: - * TT_ADOBE_ID_STANDARD :: - * Adobe standard encoding. - * TT_ADOBE_ID_EXPERT :: - * Adobe expert encoding. - * TT_ADOBE_ID_CUSTOM :: - * Adobe custom encoding. - * TT_ADOBE_ID_LATIN_1 :: - * Adobe Latin~1 encoding. - */ +/*********************************************************************** + * + * @enum: + * TT_ADOBE_ID_XXX + * + * @description: + * A list of valid values for the `encoding_id' for + * @TT_PLATFORM_ADOBE charmaps. This is a FreeType-specific extension! + * + * @values: + * TT_ADOBE_ID_STANDARD :: + * Adobe standard encoding. + * TT_ADOBE_ID_EXPERT :: + * Adobe expert encoding. + * TT_ADOBE_ID_CUSTOM :: + * Adobe custom encoding. + * TT_ADOBE_ID_LATIN_1 :: + * Adobe Latin~1 encoding. + */ #define TT_ADOBE_ID_STANDARD 0 #define TT_ADOBE_ID_EXPERT 1 @@ -312,17 +312,17 @@ FT_BEGIN_HEADER #define TT_ADOBE_ID_LATIN_1 3 - /*************************************************************************/ - /* */ - /* Possible values of the language identifier field in the name records */ - /* of the TTF `name' table if the `platform' identifier code is */ - /* TT_PLATFORM_MACINTOSH. These values are also used as return values */ - /* for function @FT_Get_CMap_Language_ID. */ - /* */ - /* The canonical source for the Apple assigned Language ID's is at */ - /* */ - /* https://developer.apple.com/fonts/TTRefMan/RM06/Chap6name.html */ - /* */ +/*************************************************************************/ +/* */ +/* Possible values of the language identifier field in the name records */ +/* of the TTF `name' table if the `platform' identifier code is */ +/* TT_PLATFORM_MACINTOSH. These values are also used as return values */ +/* for function @FT_Get_CMap_Language_ID. */ +/* */ +/* The canonical source for the Apple assigned Language ID's is at */ +/* */ +/* https://developer.apple.com/fonts/TTRefMan/RM06/Chap6name.html */ +/* */ #define TT_MAC_LANGID_ENGLISH 0 #define TT_MAC_LANGID_FRENCH 1 #define TT_MAC_LANGID_GERMAN 2 @@ -442,7 +442,7 @@ FT_BEGIN_HEADER #endif - /* The following codes are new as of 2000-03-10 */ +/* The following codes are new as of 2000-03-10 */ #define TT_MAC_LANGID_GALICIAN 140 #define TT_MAC_LANGID_AFRIKAANS 141 #define TT_MAC_LANGID_BRETON 142 @@ -456,16 +456,16 @@ FT_BEGIN_HEADER #define TT_MAC_LANGID_AZERBAIJANI_ROMAN_SCRIPT 150 - /*************************************************************************/ - /* */ - /* Possible values of the language identifier field in the name records */ - /* of the TTF `name' table if the `platform' identifier code is */ - /* TT_PLATFORM_MICROSOFT. */ - /* */ - /* The canonical source for the MS assigned LCIDs is */ - /* */ - /* http://www.microsoft.com/globaldev/reference/lcid-all.mspx */ - /* */ +/*************************************************************************/ +/* */ +/* Possible values of the language identifier field in the name records */ +/* of the TTF `name' table if the `platform' identifier code is */ +/* TT_PLATFORM_MICROSOFT. */ +/* */ +/* The canonical source for the MS assigned LCIDs is */ +/* */ +/* http://www.microsoft.com/globaldev/reference/lcid-all.mspx */ +/* */ #define TT_MS_LANGID_ARABIC_GENERAL 0x0001 #define TT_MS_LANGID_ARABIC_SAUDI_ARABIA 0x0401 @@ -512,7 +512,7 @@ FT_BEGIN_HEADER #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. */ +/* don't ask what this one means... It is commented out currently. */ #if 0 #define TT_MS_LANGID_GREEK_GREECE2 0x2008 #endif @@ -557,8 +557,8 @@ FT_BEGIN_HEADER #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. */ +/* 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 @@ -570,7 +570,7 @@ FT_BEGIN_HEADER #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: */ +/* 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 @@ -578,7 +578,7 @@ FT_BEGIN_HEADER #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) */ +/* 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 @@ -609,8 +609,8 @@ FT_BEGIN_HEADER #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 significant within 40 chars. */ +/* and XPsp2 Platform SDK added (2004-07-26) */ +/* Names are shortened to be significant within 40 chars. */ #define TT_MS_LANGID_SERBIAN_BOSNIA_HERZ_LATIN 0x181a #define TT_MS_LANGID_SERBIAN_BOSNIA_HERZ_CYRILLIC 0x181a #endif @@ -651,7 +651,7 @@ 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) */ +/* 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 @@ -661,7 +661,7 @@ FT_BEGIN_HEADER #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... */ +/* ... and we also keep our old identifier... */ #define TT_MS_LANGID_SAAMI_LAPONIA 0x043b #if 0 /* this seems to be a previous inversion */ @@ -677,7 +677,7 @@ FT_BEGIN_HEADER #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 */ +/* alias declared in Windows 2000 */ #define TT_MS_LANGID_KIRGHIZ_KIRGHIZ_REPUBLIC \ TT_MS_LANGID_KIRGHIZ_KIRGHIZSTAN @@ -702,23 +702,23 @@ FT_BEGIN_HEADER #define TT_MS_LANGID_MONGOLIAN_MONGOLIA /* Cyrillic */ 0x0450 #define TT_MS_LANGID_MONGOLIAN_MONGOLIA_MONGOLIAN 0x0850 #define TT_MS_LANGID_TIBETAN_CHINA 0x0451 - /* Don't use the next constant! It has */ - /* (1) the wrong spelling (Dzonghka) */ - /* (2) Microsoft doesn't officially define it -- */ - /* at least it is not in the List of Local */ - /* ID Values. */ - /* (3) Dzongkha is not the same language as */ - /* Tibetan, so merging it is wrong anyway. */ - /* */ - /* TT_MS_LANGID_TIBETAN_BHUTAN is correct, BTW. */ +/* Don't use the next constant! It has */ +/* (1) the wrong spelling (Dzonghka) */ +/* (2) Microsoft doesn't officially define it -- */ +/* at least it is not in the List of Local */ +/* ID Values. */ +/* (3) Dzongkha is not the same language as */ +/* Tibetan, so merging it is wrong anyway. */ +/* */ +/* TT_MS_LANGID_TIBETAN_BHUTAN is correct, BTW. */ #define TT_MS_LANGID_DZONGHKA_BHUTAN 0x0851 #if 0 - /* the following used to be defined */ +/* the following used to be defined */ #define TT_MS_LANGID_TIBETAN_BHUTAN 0x0451 - /* ... but it was changed; */ +/* ... but it was changed; */ #else - /* So we will continue to #define it, but with the correct value */ +/* So we will continue to #define it, but with the correct value */ #define TT_MS_LANGID_TIBETAN_BHUTAN TT_MS_LANGID_DZONGHKA_BHUTAN #endif @@ -731,7 +731,7 @@ FT_BEGIN_HEADER #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 */ +/* 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 @@ -739,12 +739,12 @@ FT_BEGIN_HEADER #define TT_MS_LANGID_AMHARIC_ETHIOPIA 0x045e #define TT_MS_LANGID_TAMAZIGHT_MOROCCO /* Arabic */ 0x045f #define TT_MS_LANGID_TAMAZIGHT_MOROCCO_LATIN 0x085f - /* Missing a LCID for Tifinagh script */ +/* 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 */ +/* 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. */ +/* ... 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 @@ -752,7 +752,7 @@ FT_BEGIN_HEADER #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 */ +/* alias declared in Windows 2000 */ #define TT_MS_LANGID_DIVEHI_MALDIVES TT_MS_LANGID_DHIVEHI_MALDIVES #define TT_MS_LANGID_EDO_NIGERIA 0x0466 #define TT_MS_LANGID_FULFULDE_NIGERIA 0x0467 @@ -763,27 +763,27 @@ FT_BEGIN_HEADER #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) */ +/* 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. */ +/* 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: */ +/* 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 #define TT_MS_LANGID_SOMALI_SOMALIA 0x0477 - /* Note: Yi does not have a (proper) ISO 639-2 code, since it is mostly */ - /* not written (but OTOH the peculiar writing system is worth */ - /* studying). */ +/* Note: Yi does not have a (proper) ISO 639-2 code, since it is mostly */ +/* not written (but OTOH the peculiar writing system is worth */ +/* 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. */ +/* language codes from 0x047a to 0x047f are (still) unknown. */ #define TT_MS_LANGID_UIGHUR_CHINA 0x0480 #define TT_MS_LANGID_MAORI_NEW_ZEALAND 0x0481 @@ -792,11 +792,11 @@ FT_BEGIN_HEADER #endif - /*************************************************************************/ - /* */ - /* Possible values of the `name' identifier field in the name records of */ - /* the TTF `name' table. These values are platform independent. */ - /* */ +/*************************************************************************/ +/* */ +/* Possible values of the `name' identifier field in the name records of */ +/* the TTF `name' table. These values are platform independent. */ +/* */ #define TT_NAME_ID_COPYRIGHT 0 #define TT_NAME_ID_FONT_FAMILY 1 #define TT_NAME_ID_FONT_SUBFAMILY 2 @@ -806,7 +806,7 @@ FT_BEGIN_HEADER #define TT_NAME_ID_PS_NAME 6 #define TT_NAME_ID_TRADEMARK 7 - /* the following values are from the OpenType spec */ +/* the following values are from the OpenType spec */ #define TT_NAME_ID_MANUFACTURER 8 #define TT_NAME_ID_DESIGNER 9 #define TT_NAME_ID_DESCRIPTION 10 @@ -814,388 +814,388 @@ FT_BEGIN_HEADER #define TT_NAME_ID_DESIGNER_URL 12 #define TT_NAME_ID_LICENSE 13 #define TT_NAME_ID_LICENSE_URL 14 - /* number 15 is reserved */ +/* number 15 is reserved */ #define TT_NAME_ID_PREFERRED_FAMILY 16 #define TT_NAME_ID_PREFERRED_SUBFAMILY 17 #define TT_NAME_ID_MAC_FULL_NAME 18 - /* The following code is new as of 2000-01-21 */ +/* The following code is new as of 2000-01-21 */ #define TT_NAME_ID_SAMPLE_TEXT 19 - /* This is new in OpenType 1.3 */ +/* This is new in OpenType 1.3 */ #define TT_NAME_ID_CID_FINDFONT_NAME 20 - /* This is new in OpenType 1.5 */ +/* This is new in OpenType 1.5 */ #define TT_NAME_ID_WWS_FAMILY 21 #define TT_NAME_ID_WWS_SUBFAMILY 22 - /*************************************************************************/ - /* */ - /* Bit mask values for the Unicode Ranges from the TTF `OS2 ' table. */ - /* */ - /* Updated 08-Nov-2008. */ - /* */ +/*************************************************************************/ +/* */ +/* Bit mask values for the Unicode Ranges from the TTF `OS2 ' table. */ +/* */ +/* Updated 08-Nov-2008. */ +/* */ - /* Bit 0 Basic Latin */ +/* Bit 0 Basic Latin */ #define TT_UCR_BASIC_LATIN (1L << 0) /* U+0020-U+007E */ - /* Bit 1 C1 Controls and Latin-1 Supplement */ +/* Bit 1 C1 Controls and Latin-1 Supplement */ #define TT_UCR_LATIN1_SUPPLEMENT (1L << 1) /* U+0080-U+00FF */ - /* Bit 2 Latin Extended-A */ +/* Bit 2 Latin Extended-A */ #define TT_UCR_LATIN_EXTENDED_A (1L << 2) /* U+0100-U+017F */ - /* Bit 3 Latin Extended-B */ +/* Bit 3 Latin Extended-B */ #define TT_UCR_LATIN_EXTENDED_B (1L << 3) /* U+0180-U+024F */ - /* Bit 4 IPA Extensions */ - /* Phonetic Extensions */ - /* Phonetic Extensions Supplement */ +/* Bit 4 IPA Extensions */ +/* Phonetic Extensions */ +/* Phonetic Extensions Supplement */ #define TT_UCR_IPA_EXTENSIONS (1L << 4) /* U+0250-U+02AF */ - /* U+1D00-U+1D7F */ - /* U+1D80-U+1DBF */ - /* Bit 5 Spacing Modifier Letters */ - /* Modifier Tone Letters */ +/* U+1D00-U+1D7F */ +/* U+1D80-U+1DBF */ +/* Bit 5 Spacing Modifier Letters */ +/* Modifier Tone Letters */ #define TT_UCR_SPACING_MODIFIER (1L << 5) /* U+02B0-U+02FF */ - /* U+A700-U+A71F */ - /* Bit 6 Combining Diacritical Marks */ - /* Combining Diacritical Marks Supplement */ +/* U+A700-U+A71F */ +/* Bit 6 Combining Diacritical Marks */ +/* Combining Diacritical Marks Supplement */ #define TT_UCR_COMBINING_DIACRITICS (1L << 6) /* U+0300-U+036F */ - /* U+1DC0-U+1DFF */ - /* Bit 7 Greek and Coptic */ +/* U+1DC0-U+1DFF */ +/* Bit 7 Greek and Coptic */ #define TT_UCR_GREEK (1L << 7) /* U+0370-U+03FF */ - /* Bit 8 Coptic */ +/* Bit 8 Coptic */ #define TT_UCR_COPTIC (1L << 8) /* U+2C80-U+2CFF */ - /* Bit 9 Cyrillic */ - /* Cyrillic Supplement */ - /* Cyrillic Extended-A */ - /* Cyrillic Extended-B */ +/* Bit 9 Cyrillic */ +/* Cyrillic Supplement */ +/* Cyrillic Extended-A */ +/* Cyrillic Extended-B */ #define TT_UCR_CYRILLIC (1L << 9) /* U+0400-U+04FF */ - /* U+0500-U+052F */ - /* U+2DE0-U+2DFF */ - /* U+A640-U+A69F */ - /* Bit 10 Armenian */ +/* U+0500-U+052F */ +/* U+2DE0-U+2DFF */ +/* U+A640-U+A69F */ +/* Bit 10 Armenian */ #define TT_UCR_ARMENIAN (1L << 10) /* U+0530-U+058F */ - /* Bit 11 Hebrew */ +/* Bit 11 Hebrew */ #define TT_UCR_HEBREW (1L << 11) /* U+0590-U+05FF */ - /* Bit 12 Vai */ +/* Bit 12 Vai */ #define TT_UCR_VAI (1L << 12) /* U+A500-U+A63F */ - /* Bit 13 Arabic */ - /* Arabic Supplement */ +/* Bit 13 Arabic */ +/* Arabic Supplement */ #define TT_UCR_ARABIC (1L << 13) /* U+0600-U+06FF */ - /* U+0750-U+077F */ - /* Bit 14 NKo */ +/* U+0750-U+077F */ +/* Bit 14 NKo */ #define TT_UCR_NKO (1L << 14) /* U+07C0-U+07FF */ - /* Bit 15 Devanagari */ +/* Bit 15 Devanagari */ #define TT_UCR_DEVANAGARI (1L << 15) /* U+0900-U+097F */ - /* Bit 16 Bengali */ +/* Bit 16 Bengali */ #define TT_UCR_BENGALI (1L << 16) /* U+0980-U+09FF */ - /* Bit 17 Gurmukhi */ +/* Bit 17 Gurmukhi */ #define TT_UCR_GURMUKHI (1L << 17) /* U+0A00-U+0A7F */ - /* Bit 18 Gujarati */ +/* Bit 18 Gujarati */ #define TT_UCR_GUJARATI (1L << 18) /* U+0A80-U+0AFF */ - /* Bit 19 Oriya */ +/* Bit 19 Oriya */ #define TT_UCR_ORIYA (1L << 19) /* U+0B00-U+0B7F */ - /* Bit 20 Tamil */ +/* Bit 20 Tamil */ #define TT_UCR_TAMIL (1L << 20) /* U+0B80-U+0BFF */ - /* Bit 21 Telugu */ +/* Bit 21 Telugu */ #define TT_UCR_TELUGU (1L << 21) /* U+0C00-U+0C7F */ - /* Bit 22 Kannada */ +/* Bit 22 Kannada */ #define TT_UCR_KANNADA (1L << 22) /* U+0C80-U+0CFF */ - /* Bit 23 Malayalam */ +/* Bit 23 Malayalam */ #define TT_UCR_MALAYALAM (1L << 23) /* U+0D00-U+0D7F */ - /* Bit 24 Thai */ +/* Bit 24 Thai */ #define TT_UCR_THAI (1L << 24) /* U+0E00-U+0E7F */ - /* Bit 25 Lao */ +/* Bit 25 Lao */ #define TT_UCR_LAO (1L << 25) /* U+0E80-U+0EFF */ - /* Bit 26 Georgian */ - /* Georgian Supplement */ +/* Bit 26 Georgian */ +/* Georgian Supplement */ #define TT_UCR_GEORGIAN (1L << 26) /* U+10A0-U+10FF */ - /* U+2D00-U+2D2F */ - /* Bit 27 Balinese */ +/* U+2D00-U+2D2F */ +/* Bit 27 Balinese */ #define TT_UCR_BALINESE (1L << 27) /* U+1B00-U+1B7F */ - /* Bit 28 Hangul Jamo */ +/* Bit 28 Hangul Jamo */ #define TT_UCR_HANGUL_JAMO (1L << 28) /* U+1100-U+11FF */ - /* Bit 29 Latin Extended Additional */ - /* Latin Extended-C */ - /* Latin Extended-D */ +/* Bit 29 Latin Extended Additional */ +/* Latin Extended-C */ +/* Latin Extended-D */ #define TT_UCR_LATIN_EXTENDED_ADDITIONAL (1L << 29) /* U+1E00-U+1EFF */ - /* U+2C60-U+2C7F */ - /* U+A720-U+A7FF */ - /* Bit 30 Greek Extended */ +/* U+2C60-U+2C7F */ +/* U+A720-U+A7FF */ +/* Bit 30 Greek Extended */ #define TT_UCR_GREEK_EXTENDED (1L << 30) /* U+1F00-U+1FFF */ - /* Bit 31 General Punctuation */ - /* Supplemental Punctuation */ +/* Bit 31 General Punctuation */ +/* Supplemental Punctuation */ #define TT_UCR_GENERAL_PUNCTUATION (1L << 31) /* U+2000-U+206F */ - /* U+2E00-U+2E7F */ - /* Bit 32 Superscripts And Subscripts */ +/* U+2E00-U+2E7F */ +/* Bit 32 Superscripts And Subscripts */ #define TT_UCR_SUPERSCRIPTS_SUBSCRIPTS (1L << 0) /* U+2070-U+209F */ - /* Bit 33 Currency Symbols */ +/* Bit 33 Currency Symbols */ #define TT_UCR_CURRENCY_SYMBOLS (1L << 1) /* U+20A0-U+20CF */ - /* Bit 34 Combining Diacritical Marks For Symbols */ +/* Bit 34 Combining Diacritical Marks For Symbols */ #define TT_UCR_COMBINING_DIACRITICS_SYMB (1L << 2) /* U+20D0-U+20FF */ - /* Bit 35 Letterlike Symbols */ +/* Bit 35 Letterlike Symbols */ #define TT_UCR_LETTERLIKE_SYMBOLS (1L << 3) /* U+2100-U+214F */ - /* Bit 36 Number Forms */ +/* Bit 36 Number Forms */ #define TT_UCR_NUMBER_FORMS (1L << 4) /* U+2150-U+218F */ - /* Bit 37 Arrows */ - /* Supplemental Arrows-A */ - /* Supplemental Arrows-B */ - /* Miscellaneous Symbols and Arrows */ +/* Bit 37 Arrows */ +/* Supplemental Arrows-A */ +/* Supplemental Arrows-B */ +/* Miscellaneous Symbols and Arrows */ #define TT_UCR_ARROWS (1L << 5) /* U+2190-U+21FF */ - /* U+27F0-U+27FF */ - /* U+2900-U+297F */ - /* U+2B00-U+2BFF */ - /* Bit 38 Mathematical Operators */ - /* Supplemental Mathematical Operators */ - /* Miscellaneous Mathematical Symbols-A */ - /* Miscellaneous Mathematical Symbols-B */ +/* U+27F0-U+27FF */ +/* U+2900-U+297F */ +/* U+2B00-U+2BFF */ +/* Bit 38 Mathematical Operators */ +/* Supplemental Mathematical Operators */ +/* Miscellaneous Mathematical Symbols-A */ +/* Miscellaneous Mathematical Symbols-B */ #define TT_UCR_MATHEMATICAL_OPERATORS (1L << 6) /* U+2200-U+22FF */ - /* U+2A00-U+2AFF */ - /* U+27C0-U+27EF */ - /* U+2980-U+29FF */ - /* Bit 39 Miscellaneous Technical */ +/* U+2A00-U+2AFF */ +/* U+27C0-U+27EF */ +/* U+2980-U+29FF */ +/* Bit 39 Miscellaneous Technical */ #define TT_UCR_MISCELLANEOUS_TECHNICAL (1L << 7) /* U+2300-U+23FF */ - /* Bit 40 Control Pictures */ +/* Bit 40 Control Pictures */ #define TT_UCR_CONTROL_PICTURES (1L << 8) /* U+2400-U+243F */ - /* Bit 41 Optical Character Recognition */ +/* Bit 41 Optical Character Recognition */ #define TT_UCR_OCR (1L << 9) /* U+2440-U+245F */ - /* Bit 42 Enclosed Alphanumerics */ +/* Bit 42 Enclosed Alphanumerics */ #define TT_UCR_ENCLOSED_ALPHANUMERICS (1L << 10) /* U+2460-U+24FF */ - /* Bit 43 Box Drawing */ +/* Bit 43 Box Drawing */ #define TT_UCR_BOX_DRAWING (1L << 11) /* U+2500-U+257F */ - /* Bit 44 Block Elements */ +/* Bit 44 Block Elements */ #define TT_UCR_BLOCK_ELEMENTS (1L << 12) /* U+2580-U+259F */ - /* Bit 45 Geometric Shapes */ +/* Bit 45 Geometric Shapes */ #define TT_UCR_GEOMETRIC_SHAPES (1L << 13) /* U+25A0-U+25FF */ - /* Bit 46 Miscellaneous Symbols */ +/* Bit 46 Miscellaneous Symbols */ #define TT_UCR_MISCELLANEOUS_SYMBOLS (1L << 14) /* U+2600-U+26FF */ - /* Bit 47 Dingbats */ +/* Bit 47 Dingbats */ #define TT_UCR_DINGBATS (1L << 15) /* U+2700-U+27BF */ - /* Bit 48 CJK Symbols and Punctuation */ +/* Bit 48 CJK Symbols and Punctuation */ #define TT_UCR_CJK_SYMBOLS (1L << 16) /* U+3000-U+303F */ - /* Bit 49 Hiragana */ +/* Bit 49 Hiragana */ #define TT_UCR_HIRAGANA (1L << 17) /* U+3040-U+309F */ - /* Bit 50 Katakana */ - /* Katakana Phonetic Extensions */ +/* Bit 50 Katakana */ +/* Katakana Phonetic Extensions */ #define TT_UCR_KATAKANA (1L << 18) /* U+30A0-U+30FF */ - /* U+31F0-U+31FF */ - /* Bit 51 Bopomofo */ - /* Bopomofo Extended */ +/* U+31F0-U+31FF */ +/* Bit 51 Bopomofo */ +/* Bopomofo Extended */ #define TT_UCR_BOPOMOFO (1L << 19) /* U+3100-U+312F */ - /* U+31A0-U+31BF */ - /* Bit 52 Hangul Compatibility Jamo */ +/* U+31A0-U+31BF */ +/* Bit 52 Hangul Compatibility Jamo */ #define TT_UCR_HANGUL_COMPATIBILITY_JAMO (1L << 20) /* U+3130-U+318F */ - /* Bit 53 Phags-Pa */ +/* Bit 53 Phags-Pa */ #define TT_UCR_CJK_MISC (1L << 21) /* U+A840-U+A87F */ #define TT_UCR_KANBUN TT_UCR_CJK_MISC /* deprecated */ #define TT_UCR_PHAGSPA - /* Bit 54 Enclosed CJK Letters and Months */ +/* Bit 54 Enclosed CJK Letters and Months */ #define TT_UCR_ENCLOSED_CJK_LETTERS_MONTHS (1L << 22) /* U+3200-U+32FF */ - /* Bit 55 CJK Compatibility */ +/* Bit 55 CJK Compatibility */ #define TT_UCR_CJK_COMPATIBILITY (1L << 23) /* U+3300-U+33FF */ - /* Bit 56 Hangul Syllables */ +/* Bit 56 Hangul Syllables */ #define TT_UCR_HANGUL (1L << 24) /* U+AC00-U+D7A3 */ - /* Bit 57 High Surrogates */ - /* High Private Use Surrogates */ - /* Low Surrogates */ - /* */ - /* According to OpenType specs v.1.3+, */ - /* setting bit 57 implies that there is */ - /* at least one codepoint beyond the */ - /* Basic Multilingual Plane that is */ - /* supported by this font. So it really */ - /* means >= U+10000 */ +/* Bit 57 High Surrogates */ +/* High Private Use Surrogates */ +/* Low Surrogates */ +/* */ +/* According to OpenType specs v.1.3+, */ +/* setting bit 57 implies that there is */ +/* at least one codepoint beyond the */ +/* Basic Multilingual Plane that is */ +/* supported by this font. So it really */ +/* means >= U+10000 */ #define TT_UCR_SURROGATES (1L << 25) /* U+D800-U+DB7F */ - /* U+DB80-U+DBFF */ - /* U+DC00-U+DFFF */ +/* U+DB80-U+DBFF */ +/* U+DC00-U+DFFF */ #define TT_UCR_NON_PLANE_0 TT_UCR_SURROGATES - /* Bit 58 Phoenician */ +/* Bit 58 Phoenician */ #define TT_UCR_PHOENICIAN (1L << 26) /*U+10900-U+1091F*/ - /* Bit 59 CJK Unified Ideographs */ - /* CJK Radicals Supplement */ - /* Kangxi Radicals */ - /* Ideographic Description Characters */ - /* CJK Unified Ideographs Extension A */ - /* CJK Unified Ideographs Extension B */ - /* Kanbun */ +/* Bit 59 CJK Unified Ideographs */ +/* CJK Radicals Supplement */ +/* Kangxi Radicals */ +/* Ideographic Description Characters */ +/* CJK Unified Ideographs Extension A */ +/* CJK Unified Ideographs Extension B */ +/* Kanbun */ #define TT_UCR_CJK_UNIFIED_IDEOGRAPHS (1L << 27) /* U+4E00-U+9FFF */ - /* U+2E80-U+2EFF */ - /* U+2F00-U+2FDF */ - /* U+2FF0-U+2FFF */ - /* U+3400-U+4DB5 */ - /*U+20000-U+2A6DF*/ - /* U+3190-U+319F */ - /* Bit 60 Private Use */ +/* U+2E80-U+2EFF */ +/* U+2F00-U+2FDF */ +/* U+2FF0-U+2FFF */ +/* U+3400-U+4DB5 */ +/*U+20000-U+2A6DF*/ +/* U+3190-U+319F */ +/* Bit 60 Private Use */ #define TT_UCR_PRIVATE_USE (1L << 28) /* U+E000-U+F8FF */ - /* Bit 61 CJK Strokes */ - /* CJK Compatibility Ideographs */ - /* CJK Compatibility Ideographs Supplement */ +/* Bit 61 CJK Strokes */ +/* CJK Compatibility Ideographs */ +/* CJK Compatibility Ideographs Supplement */ #define TT_UCR_CJK_COMPATIBILITY_IDEOGRAPHS (1L << 29) /* U+31C0-U+31EF */ - /* U+F900-U+FAFF */ - /*U+2F800-U+2FA1F*/ - /* Bit 62 Alphabetic Presentation Forms */ +/* U+F900-U+FAFF */ +/*U+2F800-U+2FA1F*/ +/* Bit 62 Alphabetic Presentation Forms */ #define TT_UCR_ALPHABETIC_PRESENTATION_FORMS (1L << 30) /* U+FB00-U+FB4F */ - /* Bit 63 Arabic Presentation Forms-A */ +/* Bit 63 Arabic Presentation Forms-A */ #define TT_UCR_ARABIC_PRESENTATIONS_A (1L << 31) /* U+FB50-U+FDFF */ - /* Bit 64 Combining Half Marks */ +/* Bit 64 Combining Half Marks */ #define TT_UCR_COMBINING_HALF_MARKS (1L << 0) /* U+FE20-U+FE2F */ - /* Bit 65 Vertical forms */ - /* CJK Compatibility Forms */ +/* Bit 65 Vertical forms */ +/* CJK Compatibility Forms */ #define TT_UCR_CJK_COMPATIBILITY_FORMS (1L << 1) /* U+FE10-U+FE1F */ - /* U+FE30-U+FE4F */ - /* Bit 66 Small Form Variants */ +/* U+FE30-U+FE4F */ +/* Bit 66 Small Form Variants */ #define TT_UCR_SMALL_FORM_VARIANTS (1L << 2) /* U+FE50-U+FE6F */ - /* Bit 67 Arabic Presentation Forms-B */ +/* Bit 67 Arabic Presentation Forms-B */ #define TT_UCR_ARABIC_PRESENTATIONS_B (1L << 3) /* U+FE70-U+FEFE */ - /* Bit 68 Halfwidth and Fullwidth Forms */ +/* Bit 68 Halfwidth and Fullwidth Forms */ #define TT_UCR_HALFWIDTH_FULLWIDTH_FORMS (1L << 4) /* U+FF00-U+FFEF */ - /* Bit 69 Specials */ +/* Bit 69 Specials */ #define TT_UCR_SPECIALS (1L << 5) /* U+FFF0-U+FFFD */ - /* Bit 70 Tibetan */ +/* Bit 70 Tibetan */ #define TT_UCR_TIBETAN (1L << 6) /* U+0F00-U+0FFF */ - /* Bit 71 Syriac */ +/* Bit 71 Syriac */ #define TT_UCR_SYRIAC (1L << 7) /* U+0700-U+074F */ - /* Bit 72 Thaana */ +/* Bit 72 Thaana */ #define TT_UCR_THAANA (1L << 8) /* U+0780-U+07BF */ - /* Bit 73 Sinhala */ +/* Bit 73 Sinhala */ #define TT_UCR_SINHALA (1L << 9) /* U+0D80-U+0DFF */ - /* Bit 74 Myanmar */ +/* Bit 74 Myanmar */ #define TT_UCR_MYANMAR (1L << 10) /* U+1000-U+109F */ - /* Bit 75 Ethiopic */ - /* Ethiopic Supplement */ - /* Ethiopic Extended */ +/* Bit 75 Ethiopic */ +/* Ethiopic Supplement */ +/* Ethiopic Extended */ #define TT_UCR_ETHIOPIC (1L << 11) /* U+1200-U+137F */ - /* U+1380-U+139F */ - /* U+2D80-U+2DDF */ - /* Bit 76 Cherokee */ +/* U+1380-U+139F */ +/* U+2D80-U+2DDF */ +/* Bit 76 Cherokee */ #define TT_UCR_CHEROKEE (1L << 12) /* U+13A0-U+13FF */ - /* Bit 77 Unified Canadian Aboriginal Syllabics */ +/* Bit 77 Unified Canadian Aboriginal Syllabics */ #define TT_UCR_CANADIAN_ABORIGINAL_SYLLABICS (1L << 13) /* U+1400-U+167F */ - /* Bit 78 Ogham */ +/* Bit 78 Ogham */ #define TT_UCR_OGHAM (1L << 14) /* U+1680-U+169F */ - /* Bit 79 Runic */ +/* Bit 79 Runic */ #define TT_UCR_RUNIC (1L << 15) /* U+16A0-U+16FF */ - /* Bit 80 Khmer */ - /* Khmer Symbols */ +/* Bit 80 Khmer */ +/* Khmer Symbols */ #define TT_UCR_KHMER (1L << 16) /* U+1780-U+17FF */ - /* U+19E0-U+19FF */ - /* Bit 81 Mongolian */ +/* U+19E0-U+19FF */ +/* Bit 81 Mongolian */ #define TT_UCR_MONGOLIAN (1L << 17) /* U+1800-U+18AF */ - /* Bit 82 Braille Patterns */ +/* Bit 82 Braille Patterns */ #define TT_UCR_BRAILLE (1L << 18) /* U+2800-U+28FF */ - /* Bit 83 Yi Syllables */ - /* Yi Radicals */ +/* Bit 83 Yi Syllables */ +/* Yi Radicals */ #define TT_UCR_YI (1L << 19) /* U+A000-U+A48F */ - /* U+A490-U+A4CF */ - /* Bit 84 Tagalog */ - /* Hanunoo */ - /* Buhid */ - /* Tagbanwa */ +/* U+A490-U+A4CF */ +/* Bit 84 Tagalog */ +/* Hanunoo */ +/* Buhid */ +/* Tagbanwa */ #define TT_UCR_PHILIPPINE (1L << 20) /* U+1700-U+171F */ - /* U+1720-U+173F */ - /* U+1740-U+175F */ - /* U+1760-U+177F */ - /* Bit 85 Old Italic */ +/* U+1720-U+173F */ +/* U+1740-U+175F */ +/* U+1760-U+177F */ +/* Bit 85 Old Italic */ #define TT_UCR_OLD_ITALIC (1L << 21) /*U+10300-U+1032F*/ - /* Bit 86 Gothic */ +/* Bit 86 Gothic */ #define TT_UCR_GOTHIC (1L << 22) /*U+10330-U+1034F*/ - /* Bit 87 Deseret */ +/* Bit 87 Deseret */ #define TT_UCR_DESERET (1L << 23) /*U+10400-U+1044F*/ - /* Bit 88 Byzantine Musical Symbols */ - /* Musical Symbols */ - /* Ancient Greek Musical Notation */ +/* Bit 88 Byzantine Musical Symbols */ +/* Musical Symbols */ +/* Ancient Greek Musical Notation */ #define TT_UCR_MUSICAL_SYMBOLS (1L << 24) /*U+1D000-U+1D0FF*/ - /*U+1D100-U+1D1FF*/ - /*U+1D200-U+1D24F*/ - /* Bit 89 Mathematical Alphanumeric Symbols */ +/*U+1D100-U+1D1FF*/ +/*U+1D200-U+1D24F*/ +/* Bit 89 Mathematical Alphanumeric Symbols */ #define TT_UCR_MATH_ALPHANUMERIC_SYMBOLS (1L << 25) /*U+1D400-U+1D7FF*/ - /* Bit 90 Private Use (plane 15) */ - /* Private Use (plane 16) */ +/* Bit 90 Private Use (plane 15) */ +/* Private Use (plane 16) */ #define TT_UCR_PRIVATE_USE_SUPPLEMENTARY (1L << 26) /*U+F0000-U+FFFFD*/ - /*U+100000-U+10FFFD*/ - /* Bit 91 Variation Selectors */ - /* Variation Selectors Supplement */ +/*U+100000-U+10FFFD*/ +/* Bit 91 Variation Selectors */ +/* Variation Selectors Supplement */ #define TT_UCR_VARIATION_SELECTORS (1L << 27) /* U+FE00-U+FE0F */ - /*U+E0100-U+E01EF*/ - /* Bit 92 Tags */ +/*U+E0100-U+E01EF*/ +/* Bit 92 Tags */ #define TT_UCR_TAGS (1L << 28) /*U+E0000-U+E007F*/ - /* Bit 93 Limbu */ +/* Bit 93 Limbu */ #define TT_UCR_LIMBU (1L << 29) /* U+1900-U+194F */ - /* Bit 94 Tai Le */ +/* Bit 94 Tai Le */ #define TT_UCR_TAI_LE (1L << 30) /* U+1950-U+197F */ - /* Bit 95 New Tai Lue */ +/* Bit 95 New Tai Lue */ #define TT_UCR_NEW_TAI_LUE (1L << 31) /* U+1980-U+19DF */ - /* Bit 96 Buginese */ +/* Bit 96 Buginese */ #define TT_UCR_BUGINESE (1L << 0) /* U+1A00-U+1A1F */ - /* Bit 97 Glagolitic */ +/* Bit 97 Glagolitic */ #define TT_UCR_GLAGOLITIC (1L << 1) /* U+2C00-U+2C5F */ - /* Bit 98 Tifinagh */ +/* Bit 98 Tifinagh */ #define TT_UCR_TIFINAGH (1L << 2) /* U+2D30-U+2D7F */ - /* Bit 99 Yijing Hexagram Symbols */ +/* Bit 99 Yijing Hexagram Symbols */ #define TT_UCR_YIJING (1L << 3) /* U+4DC0-U+4DFF */ - /* Bit 100 Syloti Nagri */ +/* Bit 100 Syloti Nagri */ #define TT_UCR_SYLOTI_NAGRI (1L << 4) /* U+A800-U+A82F */ - /* Bit 101 Linear B Syllabary */ - /* Linear B Ideograms */ - /* Aegean Numbers */ +/* Bit 101 Linear B Syllabary */ +/* Linear B Ideograms */ +/* Aegean Numbers */ #define TT_UCR_LINEAR_B (1L << 5) /*U+10000-U+1007F*/ - /*U+10080-U+100FF*/ - /*U+10100-U+1013F*/ - /* Bit 102 Ancient Greek Numbers */ +/*U+10080-U+100FF*/ +/*U+10100-U+1013F*/ +/* Bit 102 Ancient Greek Numbers */ #define TT_UCR_ANCIENT_GREEK_NUMBERS (1L << 6) /*U+10140-U+1018F*/ - /* Bit 103 Ugaritic */ +/* Bit 103 Ugaritic */ #define TT_UCR_UGARITIC (1L << 7) /*U+10380-U+1039F*/ - /* Bit 104 Old Persian */ +/* Bit 104 Old Persian */ #define TT_UCR_OLD_PERSIAN (1L << 8) /*U+103A0-U+103DF*/ - /* Bit 105 Shavian */ +/* Bit 105 Shavian */ #define TT_UCR_SHAVIAN (1L << 9) /*U+10450-U+1047F*/ - /* Bit 106 Osmanya */ +/* Bit 106 Osmanya */ #define TT_UCR_OSMANYA (1L << 10) /*U+10480-U+104AF*/ - /* Bit 107 Cypriot Syllabary */ +/* Bit 107 Cypriot Syllabary */ #define TT_UCR_CYPRIOT_SYLLABARY (1L << 11) /*U+10800-U+1083F*/ - /* Bit 108 Kharoshthi */ +/* Bit 108 Kharoshthi */ #define TT_UCR_KHAROSHTHI (1L << 12) /*U+10A00-U+10A5F*/ - /* Bit 109 Tai Xuan Jing Symbols */ +/* Bit 109 Tai Xuan Jing Symbols */ #define TT_UCR_TAI_XUAN_JING (1L << 13) /*U+1D300-U+1D35F*/ - /* Bit 110 Cuneiform */ - /* Cuneiform Numbers and Punctuation */ +/* Bit 110 Cuneiform */ +/* Cuneiform Numbers and Punctuation */ #define TT_UCR_CUNEIFORM (1L << 14) /*U+12000-U+123FF*/ - /*U+12400-U+1247F*/ - /* Bit 111 Counting Rod Numerals */ +/*U+12400-U+1247F*/ +/* Bit 111 Counting Rod Numerals */ #define TT_UCR_COUNTING_ROD_NUMERALS (1L << 15) /*U+1D360-U+1D37F*/ - /* Bit 112 Sundanese */ +/* Bit 112 Sundanese */ #define TT_UCR_SUNDANESE (1L << 16) /* U+1B80-U+1BBF */ - /* Bit 113 Lepcha */ +/* Bit 113 Lepcha */ #define TT_UCR_LEPCHA (1L << 17) /* U+1C00-U+1C4F */ - /* Bit 114 Ol Chiki */ +/* Bit 114 Ol Chiki */ #define TT_UCR_OL_CHIKI (1L << 18) /* U+1C50-U+1C7F */ - /* Bit 115 Saurashtra */ +/* Bit 115 Saurashtra */ #define TT_UCR_SAURASHTRA (1L << 19) /* U+A880-U+A8DF */ - /* Bit 116 Kayah Li */ +/* Bit 116 Kayah Li */ #define TT_UCR_KAYAH_LI (1L << 20) /* U+A900-U+A92F */ - /* Bit 117 Rejang */ +/* Bit 117 Rejang */ #define TT_UCR_REJANG (1L << 21) /* U+A930-U+A95F */ - /* Bit 118 Cham */ +/* Bit 118 Cham */ #define TT_UCR_CHAM (1L << 22) /* U+AA00-U+AA5F */ - /* Bit 119 Ancient Symbols */ +/* Bit 119 Ancient Symbols */ #define TT_UCR_ANCIENT_SYMBOLS (1L << 23) /*U+10190-U+101CF*/ - /* Bit 120 Phaistos Disc */ +/* Bit 120 Phaistos Disc */ #define TT_UCR_PHAISTOS_DISC (1L << 24) /*U+101D0-U+101FF*/ - /* Bit 121 Carian */ - /* Lycian */ - /* Lydian */ +/* Bit 121 Carian */ +/* Lycian */ +/* Lydian */ #define TT_UCR_OLD_ANATOLIAN (1L << 25) /*U+102A0-U+102DF*/ - /*U+10280-U+1029F*/ - /*U+10920-U+1093F*/ - /* Bit 122 Domino Tiles */ - /* Mahjong Tiles */ +/*U+10280-U+1029F*/ +/*U+10920-U+1093F*/ +/* Bit 122 Domino Tiles */ +/* Mahjong Tiles */ #define TT_UCR_GAME_TILES (1L << 26) /*U+1F030-U+1F09F*/ - /*U+1F000-U+1F02F*/ - /* Bit 123-127 Reserved for process-internal usage */ +/*U+1F000-U+1F02F*/ +/* Bit 123-127 Reserved for process-internal usage */ - /*************************************************************************/ - /* */ - /* Some compilers have a very limited length of identifiers. */ - /* */ +/*************************************************************************/ +/* */ +/* Some compilers have a very limited length of identifiers. */ +/* */ #if defined( __TURBOC__ ) && __TURBOC__ < 0x0410 || defined( __PACIFIC__ ) #define HAVE_LIMIT_ON_IDENTS #endif @@ -1204,17 +1204,17 @@ FT_BEGIN_HEADER #ifndef HAVE_LIMIT_ON_IDENTS - /*************************************************************************/ - /* */ - /* Here some alias #defines in order to be clearer. */ - /* */ - /* These are not always #defined to stay within the 31~character limit */ - /* which some compilers have. */ - /* */ - /* Credits go to Dave Hoo <dhoo@flash.net> for pointing out that modern */ - /* Borland compilers (read: from BC++ 3.1 on) can increase this limit. */ - /* If you get a warning with such a compiler, use the -i40 switch. */ - /* */ +/*************************************************************************/ +/* */ +/* Here some alias #defines in order to be clearer. */ +/* */ +/* These are not always #defined to stay within the 31~character limit */ +/* which some compilers have. */ +/* */ +/* Credits go to Dave Hoo <dhoo@flash.net> for pointing out that modern */ +/* Borland compilers (read: from BC++ 3.1 on) can increase this limit. */ +/* If you get a warning with such a compiler, use the -i40 switch. */ +/* */ #define TT_UCR_ARABIC_PRESENTATION_FORMS_A \ TT_UCR_ARABIC_PRESENTATIONS_A #define TT_UCR_ARABIC_PRESENTATION_FORMS_B \ diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/tttables.h b/thirdparties/common/include/libfreetype/freetype2/freetype/tttables.h index fe07117..3bdfc45 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/tttables.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/tttables.h @@ -33,35 +33,34 @@ FT_BEGIN_HEADER - /*************************************************************************/ - /* */ - /* <Section> */ - /* truetype_tables */ - /* */ - /* <Title> */ - /* TrueType Tables */ - /* */ - /* <Abstract> */ - /* TrueType specific table types and functions. */ - /* */ - /* <Description> */ - /* This section contains the definition of TrueType-specific tables */ - /* as well as some routines used to access and process them. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_Header */ - /* */ - /* <Description> */ - /* A structure used to model a TrueType font header table. All */ - /* fields follow the TrueType specification. */ - /* */ - typedef struct TT_Header_ - { +/*************************************************************************/ +/* */ +/* <Section> */ +/* truetype_tables */ +/* */ +/* <Title> */ +/* TrueType Tables */ +/* */ +/* <Abstract> */ +/* TrueType specific table types and functions. */ +/* */ +/* <Description> */ +/* This section contains the definition of TrueType-specific tables */ +/* as well as some routines used to access and process them. */ +/* */ +/*************************************************************************/ + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* TT_Header */ +/* */ +/* <Description> */ +/* A structure used to model a TrueType font header table. All */ +/* fields follow the TrueType specification. */ +/* */ +typedef struct TT_Header_ { FT_Fixed Table_Version; FT_Fixed Font_Revision; @@ -86,99 +85,98 @@ FT_BEGIN_HEADER FT_Short Index_To_Loc_Format; FT_Short Glyph_Data_Format; - } TT_Header; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_HoriHeader */ - /* */ - /* <Description> */ - /* A structure used to model a TrueType horizontal header, the `hhea' */ - /* table, as well as the corresponding horizontal metrics table, */ - /* i.e., the `hmtx' table. */ - /* */ - /* <Fields> */ - /* Version :: The table version. */ - /* */ - /* Ascender :: The font's ascender, i.e., the distance */ - /* from the baseline to the top-most of all */ - /* glyph points found in the font. */ - /* */ - /* This value is invalid in many fonts, as */ - /* it is usually set by the font designer, */ - /* and often reflects only a portion of the */ - /* glyphs found in the font (maybe ASCII). */ - /* */ - /* You should use the `sTypoAscender' field */ - /* of the OS/2 table instead if you want */ - /* the correct one. */ - /* */ - /* Descender :: The font's descender, i.e., the distance */ - /* from the baseline to the bottom-most of */ - /* all glyph points found in the font. It */ - /* is negative. */ - /* */ - /* This value is invalid in many fonts, as */ - /* it is usually set by the font designer, */ - /* and often reflects only a portion of the */ - /* glyphs found in the font (maybe ASCII). */ - /* */ - /* You should use the `sTypoDescender' */ - /* field of the OS/2 table instead if you */ - /* want the correct one. */ - /* */ - /* Line_Gap :: The font's line gap, i.e., the distance */ - /* to add to the ascender and descender to */ - /* get the BTB, i.e., the */ - /* baseline-to-baseline distance for the */ - /* font. */ - /* */ - /* advance_Width_Max :: This field is the maximum of all advance */ - /* widths found in the font. It can be */ - /* used to compute the maximum width of an */ - /* arbitrary string of text. */ - /* */ - /* min_Left_Side_Bearing :: The minimum left side bearing of all */ - /* glyphs within the font. */ - /* */ - /* min_Right_Side_Bearing :: The minimum right side bearing of all */ - /* glyphs within the font. */ - /* */ - /* xMax_Extent :: The maximum horizontal extent (i.e., the */ - /* `width' of a glyph's bounding box) for */ - /* all glyphs in the font. */ - /* */ - /* caret_Slope_Rise :: The rise coefficient of the cursor's */ - /* slope of the cursor (slope=rise/run). */ - /* */ - /* caret_Slope_Run :: The run coefficient of the cursor's */ - /* slope. */ - /* */ - /* Reserved :: 8~reserved bytes. */ - /* */ - /* metric_Data_Format :: Always~0. */ - /* */ - /* number_Of_HMetrics :: Number of HMetrics entries in the `hmtx' */ - /* table -- this value can be smaller than */ - /* the total number of glyphs in the font. */ - /* */ - /* long_metrics :: A pointer into the `hmtx' table. */ - /* */ - /* short_metrics :: A pointer into the `hmtx' table. */ - /* */ - /* <Note> */ - /* IMPORTANT: The TT_HoriHeader and TT_VertHeader structures should */ - /* be identical except for the names of their fields which */ - /* are different. */ - /* */ - /* This ensures that a single function in the `ttload' */ - /* module is able to read both the horizontal and vertical */ - /* headers. */ - /* */ - typedef struct TT_HoriHeader_ - { +} TT_Header; + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* TT_HoriHeader */ +/* */ +/* <Description> */ +/* A structure used to model a TrueType horizontal header, the `hhea' */ +/* table, as well as the corresponding horizontal metrics table, */ +/* i.e., the `hmtx' table. */ +/* */ +/* <Fields> */ +/* Version :: The table version. */ +/* */ +/* Ascender :: The font's ascender, i.e., the distance */ +/* from the baseline to the top-most of all */ +/* glyph points found in the font. */ +/* */ +/* This value is invalid in many fonts, as */ +/* it is usually set by the font designer, */ +/* and often reflects only a portion of the */ +/* glyphs found in the font (maybe ASCII). */ +/* */ +/* You should use the `sTypoAscender' field */ +/* of the OS/2 table instead if you want */ +/* the correct one. */ +/* */ +/* Descender :: The font's descender, i.e., the distance */ +/* from the baseline to the bottom-most of */ +/* all glyph points found in the font. It */ +/* is negative. */ +/* */ +/* This value is invalid in many fonts, as */ +/* it is usually set by the font designer, */ +/* and often reflects only a portion of the */ +/* glyphs found in the font (maybe ASCII). */ +/* */ +/* You should use the `sTypoDescender' */ +/* field of the OS/2 table instead if you */ +/* want the correct one. */ +/* */ +/* Line_Gap :: The font's line gap, i.e., the distance */ +/* to add to the ascender and descender to */ +/* get the BTB, i.e., the */ +/* baseline-to-baseline distance for the */ +/* font. */ +/* */ +/* advance_Width_Max :: This field is the maximum of all advance */ +/* widths found in the font. It can be */ +/* used to compute the maximum width of an */ +/* arbitrary string of text. */ +/* */ +/* min_Left_Side_Bearing :: The minimum left side bearing of all */ +/* glyphs within the font. */ +/* */ +/* min_Right_Side_Bearing :: The minimum right side bearing of all */ +/* glyphs within the font. */ +/* */ +/* xMax_Extent :: The maximum horizontal extent (i.e., the */ +/* `width' of a glyph's bounding box) for */ +/* all glyphs in the font. */ +/* */ +/* caret_Slope_Rise :: The rise coefficient of the cursor's */ +/* slope of the cursor (slope=rise/run). */ +/* */ +/* caret_Slope_Run :: The run coefficient of the cursor's */ +/* slope. */ +/* */ +/* Reserved :: 8~reserved bytes. */ +/* */ +/* metric_Data_Format :: Always~0. */ +/* */ +/* number_Of_HMetrics :: Number of HMetrics entries in the `hmtx' */ +/* table -- this value can be smaller than */ +/* the total number of glyphs in the font. */ +/* */ +/* long_metrics :: A pointer into the `hmtx' table. */ +/* */ +/* short_metrics :: A pointer into the `hmtx' table. */ +/* */ +/* <Note> */ +/* IMPORTANT: The TT_HoriHeader and TT_VertHeader structures should */ +/* be identical except for the names of their fields which */ +/* are different. */ +/* */ +/* This ensures that a single function in the `ttload' */ +/* module is able to read both the horizontal and vertical */ +/* headers. */ +/* */ +typedef struct TT_HoriHeader_ { FT_Fixed Version; FT_Short Ascender; FT_Short Descender; @@ -205,106 +203,105 @@ FT_BEGIN_HEADER void* long_metrics; void* short_metrics; - } TT_HoriHeader; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_VertHeader */ - /* */ - /* <Description> */ - /* A structure used to model a TrueType vertical header, the `vhea' */ - /* table, as well as the corresponding vertical metrics table, i.e., */ - /* the `vmtx' table. */ - /* */ - /* <Fields> */ - /* Version :: The table version. */ - /* */ - /* Ascender :: The font's ascender, i.e., the distance */ - /* from the baseline to the top-most of */ - /* all glyph points found in the font. */ - /* */ - /* This value is invalid in many fonts, as */ - /* it is usually set by the font designer, */ - /* and often reflects only a portion of */ - /* the glyphs found in the font (maybe */ - /* ASCII). */ - /* */ - /* You should use the `sTypoAscender' */ - /* field of the OS/2 table instead if you */ - /* want the correct one. */ - /* */ - /* Descender :: The font's descender, i.e., the */ - /* distance from the baseline to the */ - /* bottom-most of all glyph points found */ - /* in the font. It is negative. */ - /* */ - /* This value is invalid in many fonts, as */ - /* it is usually set by the font designer, */ - /* and often reflects only a portion of */ - /* the glyphs found in the font (maybe */ - /* ASCII). */ - /* */ - /* You should use the `sTypoDescender' */ - /* field of the OS/2 table instead if you */ - /* want the correct one. */ - /* */ - /* Line_Gap :: The font's line gap, i.e., the distance */ - /* to add to the ascender and descender to */ - /* get the BTB, i.e., the */ - /* baseline-to-baseline distance for the */ - /* font. */ - /* */ - /* advance_Height_Max :: This field is the maximum of all */ - /* advance heights found in the font. It */ - /* can be used to compute the maximum */ - /* height of an arbitrary string of text. */ - /* */ - /* min_Top_Side_Bearing :: The minimum top side bearing of all */ - /* glyphs within the font. */ - /* */ - /* min_Bottom_Side_Bearing :: The minimum bottom side bearing of all */ - /* glyphs within the font. */ - /* */ - /* yMax_Extent :: The maximum vertical extent (i.e., the */ - /* `height' of a glyph's bounding box) for */ - /* all glyphs in the font. */ - /* */ - /* caret_Slope_Rise :: The rise coefficient of the cursor's */ - /* slope of the cursor (slope=rise/run). */ - /* */ - /* caret_Slope_Run :: The run coefficient of the cursor's */ - /* slope. */ - /* */ - /* caret_Offset :: The cursor's offset for slanted fonts. */ - /* This value is `reserved' in vmtx */ - /* version 1.0. */ - /* */ - /* Reserved :: 8~reserved bytes. */ - /* */ - /* metric_Data_Format :: Always~0. */ - /* */ - /* number_Of_HMetrics :: Number of VMetrics entries in the */ - /* `vmtx' table -- this value can be */ - /* smaller than the total number of glyphs */ - /* in the font. */ - /* */ - /* long_metrics :: A pointer into the `vmtx' table. */ - /* */ - /* short_metrics :: A pointer into the `vmtx' table. */ - /* */ - /* <Note> */ - /* IMPORTANT: The TT_HoriHeader and TT_VertHeader structures should */ - /* be identical except for the names of their fields which */ - /* are different. */ - /* */ - /* This ensures that a single function in the `ttload' */ - /* module is able to read both the horizontal and vertical */ - /* headers. */ - /* */ - typedef struct TT_VertHeader_ - { +} TT_HoriHeader; + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* TT_VertHeader */ +/* */ +/* <Description> */ +/* A structure used to model a TrueType vertical header, the `vhea' */ +/* table, as well as the corresponding vertical metrics table, i.e., */ +/* the `vmtx' table. */ +/* */ +/* <Fields> */ +/* Version :: The table version. */ +/* */ +/* Ascender :: The font's ascender, i.e., the distance */ +/* from the baseline to the top-most of */ +/* all glyph points found in the font. */ +/* */ +/* This value is invalid in many fonts, as */ +/* it is usually set by the font designer, */ +/* and often reflects only a portion of */ +/* the glyphs found in the font (maybe */ +/* ASCII). */ +/* */ +/* You should use the `sTypoAscender' */ +/* field of the OS/2 table instead if you */ +/* want the correct one. */ +/* */ +/* Descender :: The font's descender, i.e., the */ +/* distance from the baseline to the */ +/* bottom-most of all glyph points found */ +/* in the font. It is negative. */ +/* */ +/* This value is invalid in many fonts, as */ +/* it is usually set by the font designer, */ +/* and often reflects only a portion of */ +/* the glyphs found in the font (maybe */ +/* ASCII). */ +/* */ +/* You should use the `sTypoDescender' */ +/* field of the OS/2 table instead if you */ +/* want the correct one. */ +/* */ +/* Line_Gap :: The font's line gap, i.e., the distance */ +/* to add to the ascender and descender to */ +/* get the BTB, i.e., the */ +/* baseline-to-baseline distance for the */ +/* font. */ +/* */ +/* advance_Height_Max :: This field is the maximum of all */ +/* advance heights found in the font. It */ +/* can be used to compute the maximum */ +/* height of an arbitrary string of text. */ +/* */ +/* min_Top_Side_Bearing :: The minimum top side bearing of all */ +/* glyphs within the font. */ +/* */ +/* min_Bottom_Side_Bearing :: The minimum bottom side bearing of all */ +/* glyphs within the font. */ +/* */ +/* yMax_Extent :: The maximum vertical extent (i.e., the */ +/* `height' of a glyph's bounding box) for */ +/* all glyphs in the font. */ +/* */ +/* caret_Slope_Rise :: The rise coefficient of the cursor's */ +/* slope of the cursor (slope=rise/run). */ +/* */ +/* caret_Slope_Run :: The run coefficient of the cursor's */ +/* slope. */ +/* */ +/* caret_Offset :: The cursor's offset for slanted fonts. */ +/* This value is `reserved' in vmtx */ +/* version 1.0. */ +/* */ +/* Reserved :: 8~reserved bytes. */ +/* */ +/* metric_Data_Format :: Always~0. */ +/* */ +/* number_Of_HMetrics :: Number of VMetrics entries in the */ +/* `vmtx' table -- this value can be */ +/* smaller than the total number of glyphs */ +/* in the font. */ +/* */ +/* long_metrics :: A pointer into the `vmtx' table. */ +/* */ +/* short_metrics :: A pointer into the `vmtx' table. */ +/* */ +/* <Note> */ +/* IMPORTANT: The TT_HoriHeader and TT_VertHeader structures should */ +/* be identical except for the names of their fields which */ +/* are different. */ +/* */ +/* This ensures that a single function in the `ttload' */ +/* module is able to read both the horizontal and vertical */ +/* headers. */ +/* */ +typedef struct TT_VertHeader_ { FT_Fixed Version; FT_Short Ascender; FT_Short Descender; @@ -331,24 +328,23 @@ FT_BEGIN_HEADER void* long_metrics; void* short_metrics; - } TT_VertHeader; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_OS2 */ - /* */ - /* <Description> */ - /* A structure used to model a TrueType OS/2 table. This is the long */ - /* table version. All fields comply to the TrueType specification. */ - /* */ - /* Note that we now support old Mac fonts which do not include an */ - /* OS/2 table. In this case, the `version' field is always set to */ - /* 0xFFFF. */ - /* */ - typedef struct TT_OS2_ - { +} TT_VertHeader; + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* TT_OS2 */ +/* */ +/* <Description> */ +/* A structure used to model a TrueType OS/2 table. This is the long */ +/* table version. All fields comply to the TrueType specification. */ +/* */ +/* Note that we now support old Mac fonts which do not include an */ +/* OS/2 table. In this case, the `version' field is always set to */ +/* 0xFFFF. */ +/* */ +typedef struct TT_OS2_ { FT_UShort version; /* 0x0001 - more or 0xFFFF */ FT_Short xAvgCharWidth; FT_UShort usWeightClass; @@ -397,22 +393,21 @@ FT_BEGIN_HEADER FT_UShort usBreakChar; FT_UShort usMaxContext; - } TT_OS2; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_Postscript */ - /* */ - /* <Description> */ - /* A structure used to model a TrueType PostScript table. All fields */ - /* comply to the TrueType specification. This structure does not */ - /* reference the PostScript glyph names, which can be nevertheless */ - /* accessed with the `ttpost' module. */ - /* */ - typedef struct TT_Postscript_ - { +} TT_OS2; + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* TT_Postscript */ +/* */ +/* <Description> */ +/* A structure used to model a TrueType PostScript table. All fields */ +/* comply to the TrueType specification. This structure does not */ +/* reference the PostScript glyph names, which can be nevertheless */ +/* accessed with the `ttpost' module. */ +/* */ +typedef struct TT_Postscript_ { FT_Fixed FormatType; FT_Fixed italicAngle; FT_Short underlinePosition; @@ -426,20 +421,19 @@ FT_BEGIN_HEADER /* Glyph names follow in the file, but we don't */ /* load them by default. See the ttpost.c file. */ - } TT_Postscript; +} TT_Postscript; - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_PCLT */ - /* */ - /* <Description> */ - /* A structure used to model a TrueType PCLT table. All fields */ - /* comply to the TrueType specification. */ - /* */ - typedef struct TT_PCLT_ - { +/*************************************************************************/ +/* */ +/* <Struct> */ +/* TT_PCLT */ +/* */ +/* <Description> */ +/* A structure used to model a TrueType PCLT table. All fields */ +/* comply to the TrueType specification. */ +/* */ +typedef struct TT_PCLT_ { FT_Fixed Version; FT_ULong FontNumber; FT_UShort Pitch; @@ -456,77 +450,76 @@ FT_BEGIN_HEADER FT_Byte SerifStyle; FT_Byte Reserved; - } TT_PCLT; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_MaxProfile */ - /* */ - /* <Description> */ - /* The maximum profile is a table containing many max values which */ - /* can be used to pre-allocate arrays. This ensures that no memory */ - /* allocation occurs during a glyph load. */ - /* */ - /* <Fields> */ - /* version :: The version number. */ - /* */ - /* numGlyphs :: The number of glyphs in this TrueType */ - /* font. */ - /* */ - /* maxPoints :: The maximum number of points in a */ - /* non-composite TrueType glyph. See also */ - /* the structure element */ - /* `maxCompositePoints'. */ - /* */ - /* maxContours :: The maximum number of contours in a */ - /* non-composite TrueType glyph. See also */ - /* the structure element */ - /* `maxCompositeContours'. */ - /* */ - /* maxCompositePoints :: The maximum number of points in a */ - /* composite TrueType glyph. See also the */ - /* structure element `maxPoints'. */ - /* */ - /* maxCompositeContours :: The maximum number of contours in a */ - /* composite TrueType glyph. See also the */ - /* structure element `maxContours'. */ - /* */ - /* maxZones :: The maximum number of zones used for */ - /* glyph hinting. */ - /* */ - /* maxTwilightPoints :: The maximum number of points in the */ - /* twilight zone used for glyph hinting. */ - /* */ - /* maxStorage :: The maximum number of elements in the */ - /* storage area used for glyph hinting. */ - /* */ - /* maxFunctionDefs :: The maximum number of function */ - /* definitions in the TrueType bytecode for */ - /* this font. */ - /* */ - /* maxInstructionDefs :: The maximum number of instruction */ - /* definitions in the TrueType bytecode for */ - /* this font. */ - /* */ - /* maxStackElements :: The maximum number of stack elements used */ - /* during bytecode interpretation. */ - /* */ - /* maxSizeOfInstructions :: The maximum number of TrueType opcodes */ - /* used for glyph hinting. */ - /* */ - /* maxComponentElements :: The maximum number of simple (i.e., non- */ - /* composite) glyphs in a composite glyph. */ - /* */ - /* maxComponentDepth :: The maximum nesting depth of composite */ - /* glyphs. */ - /* */ - /* <Note> */ - /* This structure is only used during font loading. */ - /* */ - typedef struct TT_MaxProfile_ - { +} TT_PCLT; + + +/*************************************************************************/ +/* */ +/* <Struct> */ +/* TT_MaxProfile */ +/* */ +/* <Description> */ +/* The maximum profile is a table containing many max values which */ +/* can be used to pre-allocate arrays. This ensures that no memory */ +/* allocation occurs during a glyph load. */ +/* */ +/* <Fields> */ +/* version :: The version number. */ +/* */ +/* numGlyphs :: The number of glyphs in this TrueType */ +/* font. */ +/* */ +/* maxPoints :: The maximum number of points in a */ +/* non-composite TrueType glyph. See also */ +/* the structure element */ +/* `maxCompositePoints'. */ +/* */ +/* maxContours :: The maximum number of contours in a */ +/* non-composite TrueType glyph. See also */ +/* the structure element */ +/* `maxCompositeContours'. */ +/* */ +/* maxCompositePoints :: The maximum number of points in a */ +/* composite TrueType glyph. See also the */ +/* structure element `maxPoints'. */ +/* */ +/* maxCompositeContours :: The maximum number of contours in a */ +/* composite TrueType glyph. See also the */ +/* structure element `maxContours'. */ +/* */ +/* maxZones :: The maximum number of zones used for */ +/* glyph hinting. */ +/* */ +/* maxTwilightPoints :: The maximum number of points in the */ +/* twilight zone used for glyph hinting. */ +/* */ +/* maxStorage :: The maximum number of elements in the */ +/* storage area used for glyph hinting. */ +/* */ +/* maxFunctionDefs :: The maximum number of function */ +/* definitions in the TrueType bytecode for */ +/* this font. */ +/* */ +/* maxInstructionDefs :: The maximum number of instruction */ +/* definitions in the TrueType bytecode for */ +/* this font. */ +/* */ +/* maxStackElements :: The maximum number of stack elements used */ +/* during bytecode interpretation. */ +/* */ +/* maxSizeOfInstructions :: The maximum number of TrueType opcodes */ +/* used for glyph hinting. */ +/* */ +/* maxComponentElements :: The maximum number of simple (i.e., non- */ +/* composite) glyphs in a composite glyph. */ +/* */ +/* maxComponentDepth :: The maximum nesting depth of composite */ +/* glyphs. */ +/* */ +/* <Note> */ +/* This structure is only used during font loading. */ +/* */ +typedef struct TT_MaxProfile_ { FT_Fixed version; FT_UShort numGlyphs; FT_UShort maxPoints; @@ -543,20 +536,19 @@ FT_BEGIN_HEADER FT_UShort maxComponentElements; FT_UShort maxComponentDepth; - } TT_MaxProfile; +} TT_MaxProfile; - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_Sfnt_Tag */ - /* */ - /* <Description> */ - /* An enumeration used to specify the index of an SFNT table. */ - /* Used in the @FT_Get_Sfnt_Table API function. */ - /* */ - typedef enum FT_Sfnt_Tag_ - { +/*************************************************************************/ +/* */ +/* <Enum> */ +/* FT_Sfnt_Tag */ +/* */ +/* <Description> */ +/* An enumeration used to specify the index of an SFNT table. */ +/* Used in the @FT_Get_Sfnt_Table API function. */ +/* */ +typedef enum FT_Sfnt_Tag_ { ft_sfnt_head = 0, /* TT_Header */ ft_sfnt_maxp = 1, /* TT_MaxProfile */ ft_sfnt_os2 = 2, /* TT_OS2 */ @@ -567,206 +559,206 @@ FT_BEGIN_HEADER sfnt_max /* internal end mark */ - } FT_Sfnt_Tag; - - /* */ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Sfnt_Table */ - /* */ - /* <Description> */ - /* Return a pointer to a given SFNT table within a face. */ - /* */ - /* <Input> */ - /* face :: A handle to the source. */ - /* */ - /* tag :: The index of the SFNT table. */ - /* */ - /* <Return> */ - /* A type-less pointer to the table. This will be~0 in case of */ - /* error, or if the corresponding table was not found *OR* loaded */ - /* from the file. */ - /* */ - /* Use a typecast according to `tag' to access the structure */ - /* elements. */ - /* */ - /* <Note> */ - /* The table is owned by the face object and disappears with it. */ - /* */ - /* This function is only useful to access SFNT tables that are loaded */ - /* by the sfnt, truetype, and opentype drivers. See @FT_Sfnt_Tag for */ - /* a list. */ - /* */ - /* Here an example how to access the `vhea' table: */ - /* */ - /* { */ - /* TT_VertHeader* vert_header; */ - /* */ - /* */ - /* vert_header = */ - /* (TT_VertHeader*)FT_Get_Sfnt_Table( face, ft_sfnt_vhea ); */ - /* } */ - /* */ - FT_EXPORT( void* ) - FT_Get_Sfnt_Table( FT_Face face, - FT_Sfnt_Tag tag ); - - - /************************************************************************** - * - * @function: - * FT_Load_Sfnt_Table - * - * @description: - * Load any font table into client memory. - * - * @input: - * face :: - * A handle to the source face. - * - * tag :: - * The four-byte tag of the table to load. Use the value~0 if you want - * to access the whole font file. Otherwise, you can use one of the - * definitions found in the @FT_TRUETYPE_TAGS_H file, or forge a new - * one with @FT_MAKE_TAG. - * - * offset :: - * The starting offset in the table (or file if tag == 0). - * - * @output: - * buffer :: - * The target buffer address. The client must ensure that the memory - * array is big enough to hold the data. - * - * @inout: - * length :: - * If the `length' parameter is NULL, then try to load the whole table. - * Return an error code if it fails. - * - * Else, if `*length' is~0, exit immediately while returning the - * table's (or file) full size in it. - * - * Else the number of bytes to read from the table or file, from the - * starting offset. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * If you need to determine the table's length you should first call this - * function with `*length' set to~0, as in the following example: - * - * { - * FT_ULong length = 0; - * - * - * error = FT_Load_Sfnt_Table( face, tag, 0, NULL, &length ); - * if ( error ) { ... table does not exist ... } - * - * buffer = malloc( length ); - * if ( buffer == NULL ) { ... not enough memory ... } - * - * error = FT_Load_Sfnt_Table( face, tag, 0, buffer, &length ); - * if ( error ) { ... could not load table ... } - * } - */ - FT_EXPORT( FT_Error ) - FT_Load_Sfnt_Table( FT_Face face, - FT_ULong tag, - FT_Long offset, - FT_Byte* buffer, - FT_ULong* length ); - - - /************************************************************************** - * - * @function: - * FT_Sfnt_Table_Info - * - * @description: - * Return 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. - * - * @inout: - * tag :: - * The name tag of the SFNT table. If the value is NULL, `table_index' - * is ignored, and `length' returns the number of SFNT tables in the - * font. - * - * @output: - * length :: - * The length of the SFNT table (or the number of SFNT tables, depending - * on `tag'). - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * While parsing fonts, FreeType handles SFNT tables with length zero as - * missing. - * - */ - FT_EXPORT( FT_Error ) - FT_Sfnt_Table_Info( FT_Face face, - FT_UInt table_index, - FT_ULong *tag, - FT_ULong *length ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_CMap_Language_ID */ - /* */ - /* <Description> */ - /* Return TrueType/sfnt specific cmap language ID. Definitions of */ - /* language ID values are in `freetype/ttnameid.h'. */ - /* */ - /* <Input> */ - /* charmap :: */ - /* The target charmap. */ - /* */ - /* <Return> */ - /* The language ID of `charmap'. If `charmap' doesn't belong to a */ - /* TrueType/sfnt face, just return~0 as the default value. */ - /* */ - /* For a format~14 cmap (to access Unicode IVS), the return value is */ - /* 0xFFFFFFFF. */ - /* */ - FT_EXPORT( FT_ULong ) - FT_Get_CMap_Language_ID( FT_CharMap charmap ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_CMap_Format */ - /* */ - /* <Description> */ - /* Return TrueType/sfnt specific cmap format. */ - /* */ - /* <Input> */ - /* charmap :: */ - /* The target charmap. */ - /* */ - /* <Return> */ - /* The format of `charmap'. If `charmap' doesn't belong to a */ - /* TrueType/sfnt face, return -1. */ - /* */ - FT_EXPORT( FT_Long ) - FT_Get_CMap_Format( FT_CharMap charmap ); - - /* */ +} FT_Sfnt_Tag; + +/* */ + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Get_Sfnt_Table */ +/* */ +/* <Description> */ +/* Return a pointer to a given SFNT table within a face. */ +/* */ +/* <Input> */ +/* face :: A handle to the source. */ +/* */ +/* tag :: The index of the SFNT table. */ +/* */ +/* <Return> */ +/* A type-less pointer to the table. This will be~0 in case of */ +/* error, or if the corresponding table was not found *OR* loaded */ +/* from the file. */ +/* */ +/* Use a typecast according to `tag' to access the structure */ +/* elements. */ +/* */ +/* <Note> */ +/* The table is owned by the face object and disappears with it. */ +/* */ +/* This function is only useful to access SFNT tables that are loaded */ +/* by the sfnt, truetype, and opentype drivers. See @FT_Sfnt_Tag for */ +/* a list. */ +/* */ +/* Here an example how to access the `vhea' table: */ +/* */ +/* { */ +/* TT_VertHeader* vert_header; */ +/* */ +/* */ +/* vert_header = */ +/* (TT_VertHeader*)FT_Get_Sfnt_Table( face, ft_sfnt_vhea ); */ +/* } */ +/* */ +FT_EXPORT( void* ) +FT_Get_Sfnt_Table( FT_Face face, + FT_Sfnt_Tag tag ); + + +/************************************************************************** + * + * @function: + * FT_Load_Sfnt_Table + * + * @description: + * Load any font table into client memory. + * + * @input: + * face :: + * A handle to the source face. + * + * tag :: + * The four-byte tag of the table to load. Use the value~0 if you want + * to access the whole font file. Otherwise, you can use one of the + * definitions found in the @FT_TRUETYPE_TAGS_H file, or forge a new + * one with @FT_MAKE_TAG. + * + * offset :: + * The starting offset in the table (or file if tag == 0). + * + * @output: + * buffer :: + * The target buffer address. The client must ensure that the memory + * array is big enough to hold the data. + * + * @inout: + * length :: + * If the `length' parameter is NULL, then try to load the whole table. + * Return an error code if it fails. + * + * Else, if `*length' is~0, exit immediately while returning the + * table's (or file) full size in it. + * + * Else the number of bytes to read from the table or file, from the + * starting offset. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * If you need to determine the table's length you should first call this + * function with `*length' set to~0, as in the following example: + * + * { + * FT_ULong length = 0; + * + * + * error = FT_Load_Sfnt_Table( face, tag, 0, NULL, &length ); + * if ( error ) { ... table does not exist ... } + * + * buffer = malloc( length ); + * if ( buffer == NULL ) { ... not enough memory ... } + * + * error = FT_Load_Sfnt_Table( face, tag, 0, buffer, &length ); + * if ( error ) { ... could not load table ... } + * } + */ +FT_EXPORT( FT_Error ) +FT_Load_Sfnt_Table( FT_Face face, + FT_ULong tag, + FT_Long offset, + FT_Byte* buffer, + FT_ULong* length ); + + +/************************************************************************** + * + * @function: + * FT_Sfnt_Table_Info + * + * @description: + * Return 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. + * + * @inout: + * tag :: + * The name tag of the SFNT table. If the value is NULL, `table_index' + * is ignored, and `length' returns the number of SFNT tables in the + * font. + * + * @output: + * length :: + * The length of the SFNT table (or the number of SFNT tables, depending + * on `tag'). + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * While parsing fonts, FreeType handles SFNT tables with length zero as + * missing. + * + */ +FT_EXPORT( FT_Error ) +FT_Sfnt_Table_Info( FT_Face face, + FT_UInt table_index, + FT_ULong *tag, + FT_ULong *length ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Get_CMap_Language_ID */ +/* */ +/* <Description> */ +/* Return TrueType/sfnt specific cmap language ID. Definitions of */ +/* language ID values are in `freetype/ttnameid.h'. */ +/* */ +/* <Input> */ +/* charmap :: */ +/* The target charmap. */ +/* */ +/* <Return> */ +/* The language ID of `charmap'. If `charmap' doesn't belong to a */ +/* TrueType/sfnt face, just return~0 as the default value. */ +/* */ +/* For a format~14 cmap (to access Unicode IVS), the return value is */ +/* 0xFFFFFFFF. */ +/* */ +FT_EXPORT( FT_ULong ) +FT_Get_CMap_Language_ID( FT_CharMap charmap ); + + +/*************************************************************************/ +/* */ +/* <Function> */ +/* FT_Get_CMap_Format */ +/* */ +/* <Description> */ +/* Return TrueType/sfnt specific cmap format. */ +/* */ +/* <Input> */ +/* charmap :: */ +/* The target charmap. */ +/* */ +/* <Return> */ +/* The format of `charmap'. If `charmap' doesn't belong to a */ +/* TrueType/sfnt face, return -1. */ +/* */ +FT_EXPORT( FT_Long ) +FT_Get_CMap_Format( FT_CharMap charmap ); + +/* */ FT_END_HEADER diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/ttunpat.h b/thirdparties/common/include/libfreetype/freetype2/freetype/ttunpat.h index a016275..b7d5db8 100755 --- a/thirdparties/common/include/libfreetype/freetype2/freetype/ttunpat.h +++ b/thirdparties/common/include/libfreetype/freetype2/freetype/ttunpat.h @@ -35,20 +35,20 @@ FT_BEGIN_HEADER - /*************************************************************************** - * - * @constant: - * FT_PARAM_TAG_UNPATENTED_HINTING - * - * @description: - * A constant used as the tag of an @FT_Parameter structure to indicate - * that unpatented methods only should be used by the TrueType bytecode - * interpreter for a typeface opened by @FT_Open_Face. - * - */ +/*************************************************************************** + * + * @constant: + * FT_PARAM_TAG_UNPATENTED_HINTING + * + * @description: + * A constant used as the tag of an @FT_Parameter structure to indicate + * that unpatented methods only should be used by the TrueType bytecode + * interpreter for a typeface opened by @FT_Open_Face. + * + */ #define FT_PARAM_TAG_UNPATENTED_HINTING FT_MAKE_TAG( 'u', 'n', 'p', 'a' ) - /* */ +/* */ FT_END_HEADER |