diff options
Diffstat (limited to 'src/freetype2/freetype')
68 files changed, 4442 insertions, 1344 deletions
diff --git a/src/freetype2/freetype/config/ftconfig.h b/src/freetype2/freetype/config/ftconfig.h index 3b33a65..18554a1 100644 --- a/src/freetype2/freetype/config/ftconfig.h +++ b/src/freetype2/freetype/config/ftconfig.h @@ -4,7 +4,7 @@  /*                                                                         */  /*    ANSI-specific configuration file (specification only).               */  /*                                                                         */ -/*  Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007 by                   */ +/*  Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007, 2008 by             */  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */  /*                                                                         */  /*  This file is part of the FreeType project, and may only be used,       */ @@ -43,6 +43,7 @@  #include FT_CONFIG_OPTIONS_H  #include FT_CONFIG_STANDARD_LIBRARY_H +  FT_BEGIN_HEADER @@ -134,18 +135,78 @@ FT_BEGIN_HEADER  #else  /* #define FT_MACINTOSH 1 CDLIB */  #endif + +#elif defined( __SC__ ) || defined( __MRC__ ) +  /* Classic MacOS compilers */ +#include "ConditionalMacros.h" +#if TARGET_OS_MAC +#define FT_MACINTOSH 1 +#endif +  #endif    /*************************************************************************/    /*                                                                       */ -  /* IntN types                                                            */ +  /* <Section>                                                             */ +  /*    basic_types                                                        */ +  /*                                                                       */ +  /*************************************************************************/ + + +  /*************************************************************************/    /*                                                                       */ -  /*   Used to guarantee the size of some specific integers.               */ +  /* <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 signed short    FT_Int16;    typedef unsigned short  FT_UInt16; +  /* */ + + +  /* 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; + +  /* */ + +#endif +  #if FT_SIZEOF_INT == (32 / FT_CHAR_BIT)    typedef signed int      FT_Int32; @@ -160,6 +221,7 @@ FT_BEGIN_HEADER  #error "no 32bit type found -- please check your configuration files"  #endif +    /* look up an integer type that is at least 32 bits */  #if FT_SIZEOF_INT >= (32 / FT_CHAR_BIT) @@ -215,17 +277,12 @@ FT_BEGIN_HEADER  #endif /* FT_SIZEOF_LONG == (64 / FT_CHAR_BIT) */ -#define FT_BEGIN_STMNT  do { -#define FT_END_STMNT    } while ( 0 ) -#define FT_DUMMY_STMNT  FT_BEGIN_STMNT FT_END_STMNT - -    /*************************************************************************/    /*                                                                       */    /* A 64-bit data type will create compilation problems if you compile    */ -  /* in strict ANSI mode.  To avoid them, we disable their use if          */ -  /* __STDC__ is defined.  You can however ignore this rule by             */ -  /* defining the FT_CONFIG_OPTION_FORCE_INT64 configuration macro.        */ +  /* 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 ) @@ -240,6 +297,86 @@ FT_BEGIN_HEADER  #endif /* FT_LONG64 && !FT_CONFIG_OPTION_FORCE_INT64 */ +#define FT_BEGIN_STMNT  do { +#define FT_END_STMNT    } while ( 0 ) +#define FT_DUMMY_STMNT  FT_BEGIN_STMNT FT_END_STMNT + + +#ifndef  FT_CONFIG_OPTION_NO_ASSEMBLER +  /* Provide assembler fragments for performance-critical functions. */ +  /* These must be defined `static __inline__' with GCC.             */ + +#ifdef __GNUC__ + +#if defined( __arm__ ) && !defined( __thumb__ ) +#define FT_MULFIX_ASSEMBLER  FT_MulFix_arm + +  /* documentation is in freetype.h */ + +  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, %2, lsl #16\n\t"  /* %0 |= %2 << 16 */ +      : "=r"(a), "=&r"(t2), "=&r"(t) +      : "r"(a), "r"(b) ); +    return a; +  } + +#endif /* __arm__ && !__thumb__ */ + +#if defined( i386 ) +#define FT_MULFIX_ASSEMBLER  FT_MulFix_i386 + +  /* documentation is in freetype.h */ + +  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" ); +    return result; +  } + +#endif /* i386 */ + +#endif /* __GNUC__ */ + +#endif /* !FT_CONFIG_OPTION_NO_ASSEMBLER */ + + +#ifdef FT_CONFIG_OPTION_INLINE_MULFIX +#ifdef FT_MULFIX_ASSEMBLER +#define FT_MULFIX_INLINED  FT_MULFIX_ASSEMBLER +#endif +#endif + +  #ifdef FT_MAKE_OPTION_SINGLE_OBJECT  #define FT_LOCAL( x )      static  x diff --git a/src/freetype2/freetype/config/ftheader.h b/src/freetype2/freetype/config/ftheader.h index b957d05..b63945d 100644 --- a/src/freetype2/freetype/config/ftheader.h +++ b/src/freetype2/freetype/config/ftheader.h @@ -4,7 +4,7 @@  /*                                                                         */  /*    Build macros of the FreeType 2 library.                              */  /*                                                                         */ -/*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by             */ +/*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by       */  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */  /*                                                                         */  /*  This file is part of the FreeType project, and may only be used,       */ @@ -74,7 +74,7 @@    /*                                                                       */    /* <Description>                                                         */    /*    The following macros are defined to the name of specific           */ -  /*    FreeType 2 header files.  They can be used directly in #include    */ +  /*    FreeType~2 header files.  They can be used directly in #include    */    /*    statements as in:                                                  */    /*                                                                       */    /*    {                                                                  */ @@ -85,11 +85,11 @@    /*                                                                       */    /*    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       */ +  /*    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.                     */ +  /*    way FreeType~2 is installed on a given system.                     */    /*                                                                       */    /*************************************************************************/ @@ -103,7 +103,7 @@     *     * @description:     *   A macro used in #include statements to name the file containing -   *   FreeType 2 configuration data. +   *   FreeType~2 configuration data.     *     */  #ifndef FT_CONFIG_CONFIG_H @@ -118,7 +118,7 @@     *     * @description:     *   A macro used in #include statements to name the file containing -   *   FreeType 2 interface to the standard C library functions. +   *   FreeType~2 interface to the standard C library functions.     *     */  #ifndef FT_CONFIG_STANDARD_LIBRARY_H @@ -133,7 +133,7 @@     *     * @description:     *   A macro used in #include statements to name the file containing -   *   FreeType 2 project-specific configuration options. +   *   FreeType~2 project-specific configuration options.     *     */  #ifndef FT_CONFIG_OPTIONS_H @@ -148,7 +148,7 @@     *     * @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 +   *   list of FreeType~2 modules that are statically linked to new library     *   instances in @FT_Init_FreeType.     *     */ @@ -156,6 +156,7 @@  #define FT_CONFIG_MODULES_H  <freetype/config/ftmodule.h>  #endif +  /* */    /* public headers */ @@ -166,7 +167,7 @@     *     * @description:     *   A macro used in #include statements to name the file containing the -   *   base FreeType 2 API. +   *   base FreeType~2 API.     *     */  #define FT_FREETYPE_H  <freetype/freetype.h> @@ -179,7 +180,7 @@     *     * @description:     *   A macro used in #include statements to name the file containing the -   *   list of FreeType 2 error codes (and messages). +   *   list of FreeType~2 error codes (and messages).     *     *   It is included by @FT_FREETYPE_H.     * @@ -194,7 +195,7 @@     *     * @description:     *   A macro used in #include statements to name the file containing the -   *   list of FreeType 2 module error offsets (and messages). +   *   list of FreeType~2 module error offsets (and messages).     *     */  #define FT_MODULE_ERRORS_H  <freetype/ftmoderr.h> @@ -207,7 +208,7 @@     *     * @description:     *   A macro used in #include statements to name the file containing the -   *   FreeType 2 interface to low-level operations (i.e., memory management +   *   FreeType~2 interface to low-level operations (i.e., memory management     *   and stream i/o).     *     *   It is included by @FT_FREETYPE_H. @@ -239,7 +240,7 @@     *     * @description:     *   A macro used in #include statements to name the file containing the -   *   basic data types defined by FreeType 2. +   *   basic data types defined by FreeType~2.     *     *   It is included by @FT_FREETYPE_H.     * @@ -254,7 +255,7 @@     *     * @description:     *   A macro used in #include statements to name the file containing the -   *   list management API of FreeType 2. +   *   list management API of FreeType~2.     *     *   (Most applications will never need to include this file.)     * @@ -269,7 +270,7 @@     *     * @description:     *   A macro used in #include statements to name the file containing the -   *   scalable outline management API of FreeType 2. +   *   scalable outline management API of FreeType~2.     *     */  #define FT_OUTLINE_H  <freetype/ftoutln.h> @@ -295,7 +296,7 @@     *     * @description:     *   A macro used in #include statements to name the file containing the -   *   module management API of FreeType 2. +   *   module management API of FreeType~2.     *     */  #define FT_MODULE_H  <freetype/ftmodapi.h> @@ -308,7 +309,7 @@     *     * @description:     *   A macro used in #include statements to name the file containing the -   *   renderer module management API of FreeType 2. +   *   renderer module management API of FreeType~2.     *     */  #define FT_RENDER_H  <freetype/ftrender.h> @@ -321,7 +322,7 @@     *     * @description:     *   A macro used in #include statements to name the file containing the -   *   types and API specific to the Type 1 format. +   *   types and API specific to the Type~1 format.     *     */  #define FT_TYPE1_TABLES_H  <freetype/t1tables.h> @@ -386,6 +387,20 @@    /*************************************************************************     *     * @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: @@ -468,7 +483,7 @@     *     * @description:     *   A macro used in #include statements to name the file containing the -   *   API of the optional FreeType 2 cache sub-system. +   *   API of the optional FreeType~2 cache sub-system.     *     */  #define FT_CACHE_H  <freetype/ftcache.h> @@ -481,7 +496,7 @@     *     * @description:     *   A macro used in #include statements to name the file containing the -   *   `glyph image' API of the FreeType 2 cache sub-system. +   *   `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 @@ -501,7 +516,7 @@     *     * @description:     *   A macro used in #include statements to name the file containing the -   *   `small bitmaps' API of the FreeType 2 cache sub-system. +   *   `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 @@ -522,7 +537,7 @@     *     * @description:     *   A macro used in #include statements to name the file containing the -   *   `charmap' API of the FreeType 2 cache sub-system. +   *   `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. @@ -538,7 +553,7 @@     *     * @description:     *   A macro used in #include statements to name the file containing the -   *   Macintosh-specific FreeType 2 API.  The latter is used to access +   *   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 @@ -555,7 +570,7 @@     *     * @description:     *   A macro used in #include statements to name the file containing the -   *   optional multiple-masters management API of FreeType 2. +   *   optional multiple-masters management API of FreeType~2.     *     */  #define FT_MULTIPLE_MASTERS_H  <freetype/ftmm.h> @@ -568,7 +583,7 @@     *     * @description:     *   A macro used in #include statements to name the file containing the -   *   optional FreeType 2 API which accesses embedded `name' strings in +   *   optional FreeType~2 API which accesses embedded `name' strings in     *   SFNT-based font formats (i.e., TrueType and OpenType).     *     */ @@ -582,7 +597,7 @@     *     * @description:     *   A macro used in #include statements to name the file containing the -   *   optional FreeType 2 API which validates OpenType tables (BASE, GDEF, +   *   optional FreeType~2 API which validates OpenType tables (BASE, GDEF,     *   GPOS, GSUB, JSTF).     *     */ @@ -596,7 +611,7 @@     *     * @description:     *   A macro used in #include statements to name the file containing the -   *   optional FreeType 2 API which validates TrueTypeGX/AAT tables (feat, +   *   optional FreeType~2 API which validates TrueTypeGX/AAT tables (feat,     *   mort, morx, bsln, just, kern, opbd, trak, prop).     *     */ @@ -610,7 +625,7 @@     *     * @description:     *   A macro used in #include statements to name the file containing the -   *   FreeType 2 API which accesses PFR-specific data. +   *   FreeType~2 API which accesses PFR-specific data.     *     */  #define FT_PFR_H  <freetype/ftpfr.h> @@ -623,7 +638,7 @@     *     * @description:     *   A macro used in #include statements to name the file containing the -   *   FreeType 2 API which provides functions to stroke outline paths. +   *   FreeType~2 API which provides functions to stroke outline paths.     */  #define FT_STROKER_H  <freetype/ftstroke.h> @@ -635,7 +650,7 @@     *     * @description:     *   A macro used in #include statements to name the file containing the -   *   FreeType 2 API which performs artificial obliquing and emboldening. +   *   FreeType~2 API which performs artificial obliquing and emboldening.     */  #define FT_SYNTHESIS_H  <freetype/ftsynth.h> @@ -647,7 +662,7 @@     *     * @description:     *   A macro used in #include statements to name the file containing the -   *   FreeType 2 API which provides functions specific to the XFree86 and +   *   FreeType~2 API which provides functions specific to the XFree86 and     *   X.Org X11 servers.     */  #define FT_XFREE86_H  <freetype/ftxf86.h> @@ -660,7 +675,7 @@     *     * @description:     *   A macro used in #include statements to name the file containing the -   *   FreeType 2 API which performs trigonometric computations (e.g., +   *   FreeType~2 API which performs trigonometric computations (e.g.,     *   cosines and arc tangents).     */  #define FT_TRIGONOMETRY_H  <freetype/fttrigon.h> @@ -673,7 +688,7 @@     *     * @description:     *   A macro used in #include statements to name the file containing the -   *   FreeType 2 API which performs color filtering for subpixel rendering. +   *   FreeType~2 API which performs color filtering for subpixel rendering.     */  #define FT_LCD_FILTER_H  <freetype/ftlcdfil.h> @@ -681,15 +696,51 @@    /*************************************************************************     *     * @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. +   */ +#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. +   *   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. +   */ +#define FT_ADVANCES_H  <freetype/ftadvanc.h> + +    /* */  #define FT_ERROR_DEFINITIONS_H  <freetype/fterrdef.h> diff --git a/src/freetype2/freetype/config/ftmodule.h b/src/freetype2/freetype/config/ftmodule.h index bc42a92..76d271a 100644 --- a/src/freetype2/freetype/config/ftmodule.h +++ b/src/freetype2/freetype/config/ftmodule.h @@ -10,23 +10,23 @@   *   */ -FT_USE_MODULE(autofit_module_class)  -FT_USE_MODULE(tt_driver_class) -FT_USE_MODULE(t1_driver_class)       -FT_USE_MODULE(cff_driver_class)      -FT_USE_MODULE(t1cid_driver_class)    -FT_USE_MODULE(pfr_driver_class)      -FT_USE_MODULE(t42_driver_class) -FT_USE_MODULE(winfnt_driver_class)   -FT_USE_MODULE(pcf_driver_class)      -FT_USE_MODULE(psaux_module_class)    -FT_USE_MODULE(psnames_module_class)  -FT_USE_MODULE(pshinter_module_class)  -FT_USE_MODULE(ft_raster1_renderer_class) -FT_USE_MODULE(sfnt_module_class) -FT_USE_MODULE(ft_smooth_renderer_class) -FT_USE_MODULE(ft_smooth_lcd_renderer_class) -FT_USE_MODULE(ft_smooth_lcdv_renderer_class) -FT_USE_MODULE(bdf_driver_class)          +FT_USE_MODULE( FT_Module_Class, autofit_module_class ) +FT_USE_MODULE( FT_Driver_ClassRec, tt_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, t1_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, cff_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, t1cid_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, pfr_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, t42_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, winfnt_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, pcf_driver_class ) +FT_USE_MODULE( FT_Module_Class, psaux_module_class ) +FT_USE_MODULE( FT_Module_Class, psnames_module_class ) +FT_USE_MODULE( FT_Module_Class, pshinter_module_class ) +FT_USE_MODULE( FT_Renderer_Class, ft_raster1_renderer_class ) +FT_USE_MODULE( FT_Module_Class, sfnt_module_class ) +FT_USE_MODULE( FT_Renderer_Class, ft_smooth_renderer_class ) +FT_USE_MODULE( FT_Renderer_Class, ft_smooth_lcd_renderer_class ) +FT_USE_MODULE( FT_Renderer_Class, ft_smooth_lcdv_renderer_class ) +FT_USE_MODULE( FT_Driver_ClassRec, bdf_driver_class )  /* EOF */ diff --git a/src/freetype2/freetype/config/ftoption.h b/src/freetype2/freetype/config/ftoption.h index 5323975..759b3a3 100644 --- a/src/freetype2/freetype/config/ftoption.h +++ b/src/freetype2/freetype/config/ftoption.h @@ -4,7 +4,7 @@  /*                                                                         */  /*    User-selectable configuration macros (specification only).           */  /*                                                                         */ -/*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by             */ +/*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */  /*                                                                         */  /*  This file is part of the FreeType project, and may only be used,       */ @@ -112,7 +112,28 @@ FT_BEGIN_HEADER    /*         file `ftconfig.h' either statically or through the            */    /*         `configure' script on supported platforms.                    */    /*                                                                       */ -#undef  FT_CONFIG_OPTION_FORCE_INT64 +#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.               */ +/* #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'.      */ +  /*                                                                       */ +#define FT_CONFIG_OPTION_INLINE_MULFIX    /*************************************************************************/ @@ -163,7 +184,7 @@ FT_BEGIN_HEADER    /*   Do not #undef this macro here since the build system might define   */    /*   it for certain configurations only.                                 */    /*                                                                       */ -/* #define  FT_CONFIG_OPTION_SYSTEM_ZLIB */ +/* #define FT_CONFIG_OPTION_SYSTEM_ZLIB */    /*************************************************************************/ @@ -204,27 +225,27 @@ FT_BEGIN_HEADER    /*   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 */ +/* #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 */ +  /*   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   */ +  /*   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 synthetize a Unicode        */ +  /*   - 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  */ @@ -240,12 +261,12 @@ FT_BEGIN_HEADER    /*   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        */ -  /*   synthetize on the fly a Unicode charmap from the CFF/Type 1 driver  */ +  /*   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 synthetize a Unicode charmap out of the glyphs found in the */ +  /*   able to synthesize a Unicode charmap out of the glyphs found in the */    /*   fonts.                                                              */    /*                                                                       */  #define FT_CONFIG_OPTION_ADOBE_GLYPH_LIST @@ -261,7 +282,7 @@ FT_BEGIN_HEADER    /*                                                                       */    /*   Note that the `FOND' resource isn't checked.                        */    /*                                                                       */ -#define FT_CONFIG_OPTION_MAC_FONTS    +#define FT_CONFIG_OPTION_MAC_FONTS    /*************************************************************************/ @@ -375,6 +396,20 @@ FT_BEGIN_HEADER  #undef FT_CONFIG_OPTION_USE_MODULE_ERRORS +  /*************************************************************************/ +  /*                                                                       */ +  /* Position Independent Code                                             */ +  /*                                                                       */ +  /*   If this macro is set (which is _not_ the default), FreeType2 will   */ +  /*   avoid creating constants that require address fixups. Instead the   */ +  /*   constants will be moved into a struct and additional intialization  */ +  /*   code will be used.                                                  */ +  /*                                                                       */ +  /*   Setting this macro is needed for systems that prohibit address      */ +  /*   fixups, such as BREW.                                               */ +  /*                                                                       */ +/* #define FT_CONFIG_OPTION_PIC */ +    /*************************************************************************/    /*************************************************************************/ @@ -418,7 +453,7 @@ FT_BEGIN_HEADER    /* does not contain any glyph name though.                               */    /*                                                                       */    /* Accessing SFNT names is done through the functions declared in        */ -  /* `freetype/ftnames.h'.                                                 */ +  /* `freetype/ftsnames.h'.                                                */    /*                                                                       */  #define TT_CONFIG_OPTION_SFNT_NAMES @@ -436,6 +471,8 @@ FT_BEGIN_HEADER  #define TT_CONFIG_CMAP_FORMAT_8  #define TT_CONFIG_CMAP_FORMAT_10  #define TT_CONFIG_CMAP_FORMAT_12 +#define TT_CONFIG_CMAP_FORMAT_13 +#define TT_CONFIG_CMAP_FORMAT_14    /*************************************************************************/ @@ -466,9 +503,9 @@ FT_BEGIN_HEADER    /* 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.  Note that the            */ -  /* the TT_CONFIG_OPTION_UNPATENTED_HINTING macro is *ignored* if you     */ -  /* define TT_CONFIG_OPTION_BYTECODE_INTERPRETER; with other words,       */ -  /* either define TT_CONFIG_OPTION_BYTECODE_INTERPRETER or                */ +  /* 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    */ @@ -547,7 +584,7 @@ FT_BEGIN_HEADER    /* and avar tables).  This has many similarities to Type 1 Multiple      */    /* Masters support.                                                      */    /*                                                                       */ -#define TT_CONFIG_OPTION_GX_VAR_SUPPORT  +#define TT_CONFIG_OPTION_GX_VAR_SUPPORT    /*************************************************************************/ @@ -624,7 +661,8 @@ FT_BEGIN_HEADER    /*************************************************************************/    /*                                                                       */ -  /* Compile autofit module with CJK script support.                       */ +  /* Compile autofit module with CJK (Chinese, Japanese, Korean) script    */ +  /* support.                                                              */    /*                                                                       */  #define AF_CONFIG_OPTION_CJK @@ -651,11 +689,12 @@ FT_BEGIN_HEADER    /* -   * This variable is defined if either unpatented or native TrueType +   * 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  #elif defined TT_CONFIG_OPTION_UNPATENTED_HINTING  #define  TT_USE_BYTECODE_INTERPRETER  #endif diff --git a/src/freetype2/freetype/config/ftstdlib.h b/src/freetype2/freetype/config/ftstdlib.h index f923f3e..30ec14e 100644 --- a/src/freetype2/freetype/config/ftstdlib.h +++ b/src/freetype2/freetype/config/ftstdlib.h @@ -5,7 +5,7 @@  /*    ANSI-specific library and header configuration file (specification   */  /*    only).                                                               */  /*                                                                         */ -/*  Copyright 2002, 2003, 2004, 2005, 2006, 2007 by                        */ +/*  Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2009 by                  */  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */  /*                                                                         */  /*  This file is part of the FreeType project, and may only be used,       */ @@ -54,12 +54,6 @@    /* In these case, `ftconfig.h' will refuse to compile anyway with a   */    /* message like `couldn't find 32-bit type' or something similar.     */    /*                                                                    */ -  /* IMPORTANT NOTE: We do not define aliases for heap management and   */ -  /*                 i/o routines (i.e. malloc/free/fopen/fread/...)    */ -  /*                 since these functions should all be encapsulated   */ -  /*                 by platform-specific implementations of            */ -  /*                 `ftsystem.c'.                                      */ -  /*                                                                    */    /**********************************************************************/ @@ -67,6 +61,7 @@  #define FT_CHAR_BIT   CHAR_BIT  #define FT_INT_MAX    INT_MAX +#define FT_INT_MIN    INT_MIN  #define FT_UINT_MAX   UINT_MAX  #define FT_ULONG_MAX  ULONG_MAX @@ -124,8 +119,6 @@  #define ft_qsort  qsort -#define ft_exit   exit    /* only used to exit from unhandled exceptions */ -    /**********************************************************************/    /*                                                                    */ diff --git a/src/freetype2/freetype/freetype.h b/src/freetype2/freetype/freetype.h index dbca087..9e74f11 100644 --- a/src/freetype2/freetype/freetype.h +++ b/src/freetype2/freetype/freetype.h @@ -4,7 +4,7 @@  /*                                                                         */  /*    FreeType high-level API and common types (specification only).       */  /*                                                                         */ -/*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by             */ +/*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */  /*                                                                         */  /*  This file is part of the FreeType project, and may only be used,       */ @@ -25,14 +25,6 @@  #endif -  /*************************************************************************/ -  /*                                                                       */ -  /* The `raster' component duplicates some of the declarations in         */ -  /* freetype.h for stand-alone use if _FREETYPE_ isn't defined.           */ -  /*                                                                       */ -  /*************************************************************************/ - -  #ifndef __FREETYPE_H__  #define __FREETYPE_H__ @@ -60,8 +52,8 @@ FT_BEGIN_HEADER    /*                                                                       */    /* <Description>                                                         */    /*    FreeType assumes that structures allocated by the user and passed  */ -  /*    as arguments are zeroed out except for the actual data.  With      */ -  /*    other words, it is recommended to use `calloc' (or variants of it) */ +  /*    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.                                */    /*                                                                       */    /*************************************************************************/ @@ -86,10 +78,10 @@ FT_BEGIN_HEADER    /*    Base Interface                                                     */    /*                                                                       */    /* <Abstract>                                                            */ -  /*    The FreeType 2 base font interface.                                */ +  /*    The FreeType~2 base font interface.                                */    /*                                                                       */    /* <Description>                                                         */ -  /*    This section describes the public high-level API of FreeType 2.    */ +  /*    This section describes the public high-level API of FreeType~2.    */    /*                                                                       */    /* <Order>                                                               */    /*    FT_Library                                                         */ @@ -191,6 +183,15 @@ FT_BEGIN_HEADER    /*    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                                                */ +  /*                                                                       */    /*************************************************************************/ @@ -386,8 +387,8 @@ FT_BEGIN_HEADER    /*    Use @FT_Done_Face to destroy it (along with its slot and sizes).   */    /*                                                                       */    /* <Also>                                                                */ -  /*    The @FT_FaceRec details the publicly accessible fields of a given  */ -  /*    face object.                                                       */ +  /*    See @FT_FaceRec for the publicly accessible fields of a given face */ +  /*    object.                                                            */    /*                                                                       */    typedef struct FT_FaceRec_*  FT_Face; @@ -416,8 +417,8 @@ FT_BEGIN_HEADER    /*    activated at any given time per face.                              */    /*                                                                       */    /* <Also>                                                                */ -  /*    The @FT_SizeRec structure details the publicly accessible fields   */ -  /*    of a given size object.                                            */ +  /*    See @FT_SizeRec for the publicly accessible fields of a given size */ +  /*    object.                                                            */    /*                                                                       */    typedef struct FT_SizeRec_*  FT_Size; @@ -429,7 +430,7 @@ FT_BEGIN_HEADER    /*                                                                       */    /* <Description>                                                         */    /*    A handle to a given `glyph slot'.  A slot is a container where it  */ -  /*    is possible to load any one of the glyphs contained in its parent  */ +  /*    is possible to load any of the glyphs contained in its parent      */    /*    face.                                                              */    /*                                                                       */    /*    In other words, each time you call @FT_Load_Glyph or               */ @@ -438,7 +439,7 @@ FT_BEGIN_HEADER    /*    other control information.                                         */    /*                                                                       */    /* <Also>                                                                */ -  /*    @FT_GlyphSlotRec details the publicly accessible glyph fields.     */ +  /*    See @FT_GlyphSlotRec for the publicly accessible glyph fields.     */    /*                                                                       */    typedef struct FT_GlyphSlotRec_*  FT_GlyphSlot; @@ -469,8 +470,8 @@ FT_BEGIN_HEADER    /*    the list and automatically activates it.                           */    /*                                                                       */    /* <Also>                                                                */ -  /*    The @FT_CharMapRec details the publicly accessible fields of a     */ -  /*    given character map.                                               */ +  /*    See @FT_CharMapRec for the publicly accessible fields of a given   */ +  /*    character map.                                                     */    /*                                                                       */    typedef struct FT_CharMapRec_*  FT_CharMap; @@ -485,7 +486,7 @@ FT_BEGIN_HEADER    /*    used to define `encoding' identifiers (see @FT_Encoding).          */    /*                                                                       */    /* <Note>                                                                */ -  /*    Since many 16bit compilers don't like 32bit enumerations, you      */ +  /*    Since many 16-bit compilers don't like 32-bit enumerations, you    */    /*    should redefine this macro in case of problems to something like   */    /*    this:                                                              */    /*                                                                       */ @@ -518,131 +519,132 @@ FT_BEGIN_HEADER    /* <Note>                                                                */    /*    Despite the name, this enumeration lists specific character        */    /*    repertories (i.e., charsets), and not text encoding methods (e.g., */ -  /*    UTF-8, UTF-16, GB2312_EUC, etc.).                                  */ -  /*                                                                       */ -  /*    Because of 32-bit charcodes defined in Unicode (i.e., surrogates), */ -  /*    all character codes must be expressed as FT_Longs.                 */ +  /*    UTF-8, UTF-16, etc.).                                              */    /*                                                                       */    /*    Other encodings might be defined in the future.                    */    /*                                                                       */    /* <Values>                                                              */ -  /*   FT_ENCODING_NONE ::                                                 */ -  /*     The encoding value 0 is reserved.                                 */ +  /*    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.                                                          */ +  /*    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.                                                         */    /*                                                                       */ -  /*   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'.          */ +  /*      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_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_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_GB2312 ::                                               */ -  /*     Corresponds to an encoding system for Simplified Chinese as used  */ -  /*     used in mainland China.                                           */ +  /*    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_BIG5 ::                                                 */ -  /*     Corresponds to an encoding system for Traditional Chinese as used */ -  /*     in Taiwan and Hong Kong.                                          */ +  /*    FT_ENCODING_GB2312 ::                                              */ +  /*      Corresponds to an encoding system for Simplified Chinese as used */ +  /*      used in mainland China.                                          */    /*                                                                       */ -  /*   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_BIG5 ::                                                */ +  /*      Corresponds to an encoding system for Traditional Chinese as     */ +  /*      used in Taiwan and Hong Kong.                                    */    /*                                                                       */ -  /*   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_WANSUNG ::                                             */ +  /*      Corresponds to the Korean encoding system known as Wansung.      */ +  /*      For more information see                                         */ +  /*      `http://www.microsoft.com/typography/unicode/949.txt'.           */    /*                                                                       */ -  /*   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_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_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_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_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_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_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_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_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_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_OLD_LATIN_2 ::                                          */ -  /*     This value is deprecated and was never used nor reported by       */ -  /*     FreeType.  Don't use or test for it.                              */ +  /*    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_MS_SJIS ::                                              */ -  /*     Same as FT_ENCODING_SJIS.  Deprecated.                            */ +  /*    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_GB2312 ::                                            */ -  /*     Same as FT_ENCODING_GB2312.  Deprecated.                          */ +  /*    FT_ENCODING_MS_SJIS ::                                             */ +  /*      Same as FT_ENCODING_SJIS.  Deprecated.                           */    /*                                                                       */ -  /*   FT_ENCODING_MS_BIG5 ::                                              */ -  /*     Same as FT_ENCODING_BIG5.  Deprecated.                            */ +  /*    FT_ENCODING_MS_GB2312 ::                                           */ +  /*      Same as FT_ENCODING_GB2312.  Deprecated.                         */    /*                                                                       */ -  /*   FT_ENCODING_MS_WANSUNG ::                                           */ -  /*     Same as FT_ENCODING_WANSUNG.  Deprecated.                         */ +  /*    FT_ENCODING_MS_BIG5 ::                                             */ +  /*      Same as FT_ENCODING_BIG5.  Deprecated.                           */    /*                                                                       */ -  /*   FT_ENCODING_MS_JOHAB ::                                             */ -  /*     Same as FT_ENCODING_JOHAB.  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 synthetizes 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  c     */ -  /*   @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.                                        */ +  /*    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_    { @@ -753,7 +755,7 @@ FT_BEGIN_HEADER    /*    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  */ +  /*    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; @@ -774,7 +776,7 @@ FT_BEGIN_HEADER    /*                           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    */ +  /*                           is set to~0 if there is only one face in    */    /*                           the font file.                              */    /*                                                                       */    /*    face_flags          :: A set of bit flags that give important      */ @@ -790,6 +792,9 @@ FT_BEGIN_HEADER    /*                           `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      */ @@ -799,6 +804,8 @@ FT_BEGIN_HEADER    /*                           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 */ @@ -836,9 +843,13 @@ FT_BEGIN_HEADER    /*                           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.  */ +  /*                           TrueType fonts, and 1000 for Type~1 fonts.  */    /*                           Only relevant for scalable formats.         */    /*                                                                       */    /*    ascender            :: The typographic ascender of the face,       */ @@ -874,7 +885,7 @@ FT_BEGIN_HEADER    /*                           scalable formats.                           */    /*                                                                       */    /*    underline_position  :: The position, in font units, of the         */ -  /*                           underline line for this face.  It's the     */ +  /*                           underline line for this face.  It is the    */    /*                           center of the underlining stem.  Only       */    /*                           relevant for scalable formats.              */    /*                                                                       */ @@ -889,8 +900,8 @@ FT_BEGIN_HEADER    /*    charmap             :: The current active charmap for this face.   */    /*                                                                       */    /* <Note>                                                                */ -  /*   Fields may be changed after a call to @FT_Attach_File or            */ -  /*   @FT_Attach_Stream.                                                  */ +  /*    Fields may be changed after a call to @FT_Attach_File or           */ +  /*    @FT_Attach_Stream.                                                 */    /*                                                                       */    typedef struct  FT_FaceRec_    { @@ -1019,6 +1030,36 @@ FT_BEGIN_HEADER    /*      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 six 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 ) @@ -1031,8 +1072,8 @@ FT_BEGIN_HEADER  #define FT_FACE_FLAG_GLYPH_NAMES       ( 1L <<  9 )  #define FT_FACE_FLAG_EXTERNAL_STREAM   ( 1L << 10 )  #define FT_FACE_FLAG_HINTER            ( 1L << 11 ) - -  /* */ +#define FT_FACE_FLAG_CID_KEYED         ( 1L << 12 ) +#define FT_FACE_FLAG_TRICKY            ( 1L << 13 )    /************************************************************************* @@ -1087,7 +1128,7 @@ FT_BEGIN_HEADER     *     * @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, +   *   font face (true for TrueType, Type~1, Type~42, CID, OpenType/CFF,     *   and PFR font formats.     *     */ @@ -1143,8 +1184,6 @@ FT_BEGIN_HEADER  #define FT_HAS_FIXED_SIZES( face ) \            ( face->face_flags & FT_FACE_FLAG_FIXED_SIZES ) -  /* */ -    /*************************************************************************     * @@ -1187,9 +1226,41 @@ FT_BEGIN_HEADER            ( 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. +   * +   */ +#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. +   * +   */ +#define FT_IS_TRICKY( face ) \ +          ( face->face_flags & FT_FACE_FLAG_TRICKY ) + +    /*************************************************************************/    /*                                                                       */ -  /* <Constant>                                                            */ +  /* <Const>                                                               */    /*    FT_STYLE_FLAG_XXX                                                  */    /*                                                                       */    /* <Description>                                                         */ @@ -1198,11 +1269,17 @@ FT_BEGIN_HEADER    /*                                                                       */    /* <Values>                                                              */    /*    FT_STYLE_FLAG_ITALIC ::                                            */ -  /*      Indicates that a given face is italicized.                       */ +  /*      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 ) @@ -1214,7 +1291,7 @@ FT_BEGIN_HEADER    /*                                                                       */    /* <Description>                                                         */    /*    An opaque handle to an `FT_Size_InternalRec' structure, used to    */ -  /*    model private data of a given FT_Size object.                      */ +  /*    model private data of a given @FT_Size object.                     */    /*                                                                       */    typedef struct FT_Size_InternalRec_*  FT_Size_Internal; @@ -1345,7 +1422,7 @@ FT_BEGIN_HEADER    /*                                                                       */    /* <Description>                                                         */    /*    An opaque handle to an `FT_Slot_InternalRec' structure, used to    */ -  /*    model private data of a given FT_GlyphSlot object.                 */ +  /*    model private data of a given @FT_GlyphSlot object.                */    /*                                                                       */    typedef struct FT_Slot_InternalRec_*  FT_Slot_Internal; @@ -1401,7 +1478,7 @@ FT_BEGIN_HEADER    /*                         Only relevant for outline glyphs.             */    /*                                                                       */    /*    advance           :: This is the transformed advance width for the */ -  /*                         glyph.                                        */ +  /*                         glyph (in 26.6 fractional pixel format).      */    /*                                                                       */    /*    format            :: This field indicates the format of the image  */    /*                         contained in the glyph slot.  Typically       */ @@ -1425,7 +1502,7 @@ FT_BEGIN_HEADER    /*    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   */ +  /*                         glyph scanline, upwards y~coordinates being   */    /*                         *positive*.                                   */    /*                                                                       */    /*    outline           :: The outline descriptor for the current glyph  */ @@ -1448,7 +1525,7 @@ FT_BEGIN_HEADER    /*                                                                       */    /*    control_data      :: Certain font drivers can also return the      */    /*                         control data for a given glyph image (e.g.    */ -  /*                         TrueType bytecode, Type 1 charstrings, etc.). */ +  /*                         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    */ @@ -1470,15 +1547,15 @@ FT_BEGIN_HEADER    /* <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  */ +  /*    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 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 convert it into a      */ +  /*    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 */ @@ -1573,7 +1650,12 @@ FT_BEGIN_HEADER    /*    alibrary :: A handle to a new library object.                      */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */ +  /*                                                                       */ +  /* <Note>                                                                */ +  /*    In case you want to provide your own memory allocating routines,   */ +  /*    use @FT_New_Library instead, followed by a call to                 */ +  /*    @FT_Add_Default_Modules (or a series of calls to @FT_Add_Module).  */    /*                                                                       */    FT_EXPORT( FT_Error )    FT_Init_FreeType( FT_Library  *alibrary ); @@ -1592,7 +1674,7 @@ FT_BEGIN_HEADER    /*    library :: A handle to the target library object.                  */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    FT_EXPORT( FT_Error )    FT_Done_FreeType( FT_Library  library ); @@ -1608,26 +1690,26 @@ FT_BEGIN_HEADER    /*    @FT_Open_Args structure.                                           */    /*                                                                       */    /* <Values>                                                              */ -  /*    FT_OPEN_MEMORY      :: This is a memory-based stream.              */ +  /*    FT_OPEN_MEMORY   :: This is a memory-based stream.                 */    /*                                                                       */ -  /*    FT_OPEN_STREAM      :: Copy the stream from the `stream' field.    */ +  /*    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_PATHNAME :: Create a new input stream from a C~path        */ +  /*                        name.                                          */    /*                                                                       */ -  /*    FT_OPEN_DRIVER      :: Use the `driver' field.                     */ +  /*    FT_OPEN_DRIVER   :: Use the `driver' field.                        */    /*                                                                       */ -  /*    FT_OPEN_PARAMS      :: Use the `num_params' and `params' fields.   */ +  /*    FT_OPEN_PARAMS   :: Use the `num_params' and `params' fields.      */    /*                                                                       */ -  /*    ft_open_memory      :: Deprecated; use @FT_OPEN_MEMORY instead.    */ +  /*    ft_open_memory   :: Deprecated; use @FT_OPEN_MEMORY instead.       */    /*                                                                       */ -  /*    ft_open_stream      :: Deprecated; use @FT_OPEN_STREAM instead.    */ +  /*    ft_open_stream   :: Deprecated; use @FT_OPEN_STREAM instead.       */    /*                                                                       */ -  /*    ft_open_pathname    :: Deprecated; use @FT_OPEN_PATHNAME instead.  */ +  /*    ft_open_pathname :: Deprecated; use @FT_OPEN_PATHNAME instead.     */    /*                                                                       */ -  /*    ft_open_driver      :: Deprecated; use @FT_OPEN_DRIVER instead.    */ +  /*    ft_open_driver   :: Deprecated; use @FT_OPEN_DRIVER instead.       */    /*                                                                       */ -  /*    ft_open_params      :: Deprecated; use @FT_OPEN_PARAMS instead.    */ +  /*    ft_open_params   :: Deprecated; use @FT_OPEN_PARAMS instead.       */    /*                                                                       */    /* <Note>                                                                */    /*    The `FT_OPEN_MEMORY', `FT_OPEN_STREAM', and `FT_OPEN_PATHNAME'     */ @@ -1652,8 +1734,8 @@ FT_BEGIN_HEADER    /*    FT_Parameter                                                       */    /*                                                                       */    /* <Description>                                                         */ -  /*    A simple structure used to pass more or less generic parameters    */ -  /*    to @FT_Open_Face.                                                  */ +  /*    A simple structure used to pass more or less generic parameters to */ +  /*    @FT_Open_Face.                                                     */    /*                                                                       */    /* <Fields>                                                              */    /*    tag  :: A four-byte identification tag.                            */ @@ -1695,7 +1777,7 @@ FT_BEGIN_HEADER    /*                                                                       */    /*    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  */ +  /*                   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.                     */ @@ -1726,7 +1808,7 @@ FT_BEGIN_HEADER    /*    `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.  With */ +  /*    as `const'; this is missing for API backwards compatibility.  In   */    /*    other words, applications should treat them as read-only.          */    /*                                                                       */    typedef struct  FT_Open_Args_ @@ -1758,7 +1840,7 @@ FT_BEGIN_HEADER    /*    pathname   :: A path to the font file.                             */    /*                                                                       */    /*    face_index :: The index of the face within the font.  The first    */ -  /*                  face has index 0.                                    */ +  /*                  face has index~0.                                    */    /*                                                                       */    /* <Output>                                                              */    /*    aface      :: A handle to a new face object.  If `face_index' is   */ @@ -1766,7 +1848,7 @@ FT_BEGIN_HEADER    /*                  See @FT_Open_Face for more details.                  */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    FT_EXPORT( FT_Error )    FT_New_Face( FT_Library   library, @@ -1793,7 +1875,7 @@ FT_BEGIN_HEADER    /*    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.                                    */ +  /*                  face has index~0.                                    */    /*                                                                       */    /* <Output>                                                              */    /*    aface      :: A handle to a new face object.  If `face_index' is   */ @@ -1801,7 +1883,7 @@ FT_BEGIN_HEADER    /*                  See @FT_Open_Face for more details.                  */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    /* <Note>                                                                */    /*    You must not deallocate the memory before calling @FT_Done_Face.   */ @@ -1831,7 +1913,7 @@ FT_BEGIN_HEADER    /*                  be filled by the caller.                             */    /*                                                                       */    /*    face_index :: The index of the face within the font.  The first    */ -  /*                  face has index 0.                                    */ +  /*                  face has index~0.                                    */    /*                                                                       */    /* <Output>                                                              */    /*    aface      :: A handle to a new face object.  If `face_index' is   */ @@ -1839,7 +1921,7 @@ FT_BEGIN_HEADER    /*                  See note below.                                      */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    /* <Note>                                                                */    /*    Unlike FreeType 1.x, this function automatically creates a glyph   */ @@ -1848,7 +1930,7 @@ FT_BEGIN_HEADER    /*                                                                       */    /*    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   */ +  /*    `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    */ @@ -1881,7 +1963,7 @@ FT_BEGIN_HEADER    /*    filepathname :: The pathname.                                      */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    FT_EXPORT( FT_Error )    FT_Attach_File( FT_Face      face, @@ -1896,7 +1978,7 @@ FT_BEGIN_HEADER    /* <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        */ +  /*    attach an AFM file that comes with a Type~1 font to get the        */    /*    kerning values and other metrics.                                  */    /*                                                                       */    /* <InOut>                                                               */ @@ -1907,7 +1989,7 @@ FT_BEGIN_HEADER    /*                  the caller.                                          */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    /* <Note>                                                                */    /*    The meaning of the `attach' (i.e., what really happens when the    */ @@ -1936,7 +2018,7 @@ FT_BEGIN_HEADER    /*    face :: A handle to a target face object.                          */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    FT_EXPORT( FT_Error )    FT_Done_Face( FT_Face  face ); @@ -1958,7 +2040,7 @@ FT_BEGIN_HEADER    /*                    `available_sizes' field of @FT_FaceRec structure.  */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    FT_EXPORT( FT_Error )    FT_Select_Size( FT_Face  face, @@ -2044,8 +2126,8 @@ FT_BEGIN_HEADER    /*                      value.                                           */    /*                                                                       */    /* <Note>                                                                */ -  /*    If `width' is zero, then the horizontal scaling value is set      */ -  /*    equal to the vertical scaling value, and vice versa.               */ +  /*    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_    { @@ -2055,7 +2137,18 @@ FT_BEGIN_HEADER      FT_UInt               horiResolution;      FT_UInt               vertResolution; -  } FT_Size_RequestRec, *FT_Size_Request; +  } FT_Size_RequestRec; + + +  /*************************************************************************/ +  /*                                                                       */ +  /* <Struct>                                                              */ +  /*    FT_Size_Request                                                    */ +  /*                                                                       */ +  /* <Description>                                                         */ +  /*    A handle to a size request structure.                              */ +  /*                                                                       */ +  typedef struct FT_Size_RequestRec_  *FT_Size_Request;    /*************************************************************************/ @@ -2073,7 +2166,7 @@ FT_BEGIN_HEADER    /*    req  :: A pointer to a @FT_Size_RequestRec.                        */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    /* <Note>                                                                */    /*    Although drivers may select the bitmap strike matching the         */ @@ -2108,7 +2201,7 @@ FT_BEGIN_HEADER    /*    vert_resolution :: The vertical resolution in dpi.                 */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    /* <Note>                                                                */    /*    If either the character width or height is zero, it is set equal   */ @@ -2120,7 +2213,8 @@ FT_BEGIN_HEADER    /*    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, @@ -2147,7 +2241,7 @@ FT_BEGIN_HEADER    /*    pixel_height :: The nominal height, in pixels.                     */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    FT_EXPORT( FT_Error )    FT_Set_Pixel_Sizes( FT_Face  face, @@ -2180,12 +2274,17 @@ FT_BEGIN_HEADER    /*                   whether to hint the outline, etc).                  */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    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, @@ -2216,7 +2315,7 @@ FT_BEGIN_HEADER    /*                   whether to hint the outline, etc).                  */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    /* <Note>                                                                */    /*    This function simply calls @FT_Get_Char_Index and @FT_Load_Glyph.  */ @@ -2238,7 +2337,7 @@ FT_BEGIN_HEADER     *     * @values:     *   FT_LOAD_DEFAULT :: -   *     Corresponding to 0, this value is used as the default glyph load +   *     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 @@ -2328,10 +2427,10 @@ FT_BEGIN_HEADER     *   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. +   *     8~pixels packed into each byte of the bitmap data.     *     *     Note that this has no effect on the hinting algorithm used.  You -   *     should use @FT_LOAD_TARGET_MONO instead so that the +   *     should rather use @FT_LOAD_TARGET_MONO so that the     *     monochrome-optimized hinting algorithm is used.     *     *   FT_LOAD_LINEAR_DESIGN :: @@ -2350,8 +2449,12 @@ FT_BEGIN_HEADER     *   @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. +   *     */  #define FT_LOAD_DEFAULT                      0x0  #define FT_LOAD_NO_SCALE                     0x1 @@ -2367,13 +2470,14 @@ FT_BEGIN_HEADER  #define FT_LOAD_IGNORE_TRANSFORM             0x800  #define FT_LOAD_MONOCHROME                   0x1000  #define FT_LOAD_LINEAR_DESIGN                0x2000 - -  /* temporary hack! */ -#define FT_LOAD_SBITS_ONLY                   0x4000  #define FT_LOAD_NO_AUTOHINT                  0x8000U    /* */ +  /* used internally only by certain font drivers! */ +#define FT_LOAD_ADVANCE_ONLY                 0x100 +#define FT_LOAD_SBITS_ONLY                   0x4000 +    /**************************************************************************     * @@ -2401,7 +2505,7 @@ FT_BEGIN_HEADER     *   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. +   *     shape.  A bit like rendering on Mac OS~X.     *     *     As a special exception, this target implies @FT_LOAD_FORCE_AUTOHINT.     * @@ -2437,30 +2541,29 @@ FT_BEGIN_HEADER     *     *       FT_Render_Glyph( face->glyph, FT_RENDER_MODE_LCD );     *     } +   *     */ +#define FT_LOAD_TARGET_( x )   ( (FT_Int32)( (x) & 15 ) << 16 ) -#define FT_LOAD_TARGET_( x )      ( (FT_Int32)( (x) & 15 ) << 16 ) +#define FT_LOAD_TARGET_NORMAL  FT_LOAD_TARGET_( FT_RENDER_MODE_NORMAL ) +#define FT_LOAD_TARGET_LIGHT   FT_LOAD_TARGET_( FT_RENDER_MODE_LIGHT  ) +#define FT_LOAD_TARGET_MONO    FT_LOAD_TARGET_( FT_RENDER_MODE_MONO   ) +#define FT_LOAD_TARGET_LCD     FT_LOAD_TARGET_( FT_RENDER_MODE_LCD    ) +#define FT_LOAD_TARGET_LCD_V   FT_LOAD_TARGET_( FT_RENDER_MODE_LCD_V  ) -#define FT_LOAD_TARGET_NORMAL     FT_LOAD_TARGET_( FT_RENDER_MODE_NORMAL ) -#define FT_LOAD_TARGET_LIGHT      FT_LOAD_TARGET_( FT_RENDER_MODE_LIGHT  ) -#define FT_LOAD_TARGET_MONO       FT_LOAD_TARGET_( FT_RENDER_MODE_MONO   ) -#define FT_LOAD_TARGET_LCD        FT_LOAD_TARGET_( FT_RENDER_MODE_LCD    ) -#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. +   *     */ -  #define FT_LOAD_TARGET_MODE( x )  ( (FT_Render_Mode)( ( (x) >> 16 ) & 15 ) ) -  /* */ -    /*************************************************************************/    /*                                                                       */ @@ -2476,9 +2579,9 @@ FT_BEGIN_HEADER    /*    face   :: A handle to the source face object.                      */    /*                                                                       */    /* <Input>                                                               */ -  /*    matrix :: A pointer to the transformation's 2x2 matrix.  Use 0 for */ +  /*    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 */ +  /*    delta  :: A pointer to the translation vector.  Use~0 for the null */    /*              vector.                                                  */    /*                                                                       */    /* <Note>                                                                */ @@ -2503,17 +2606,19 @@ FT_BEGIN_HEADER    /*                                                                       */    /* <Description>                                                         */    /*    An enumeration type that lists the render modes supported by       */ -  /*    FreeType 2.  Each mode corresponds to a specific type of scanline  */ +  /*    FreeType~2.  Each mode corresponds to a specific type of scanline  */    /*    conversion performed on the outline.                               */    /*                                                                       */ -  /*    For bitmap fonts the `bitmap->pixel_mode' field in the             */ -  /*    @FT_GlyphSlotRec structure gives the format of the returned        */ -  /*    bitmap.                                                            */ +  /*    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, using 256 levels of opacity.               */ +  /*      anti-aliased bitmaps.                                            */    /*                                                                       */    /*    FT_RENDER_MODE_LIGHT ::                                            */    /*      This is equivalent to @FT_RENDER_MODE_NORMAL.  It is only        */ @@ -2522,24 +2627,32 @@ FT_BEGIN_HEADER    /*      @FT_LOAD_TARGET_XXX for details.                                 */    /*                                                                       */    /*    FT_RENDER_MODE_MONO ::                                             */ -  /*      This mode corresponds to 1-bit bitmaps.                          */ +  /*      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   */ +  /*      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        */ +  /*      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 are     */ -  /*   _not_ _filtered_ to reduce color-fringes.  It is up to the caller   */ -  /*   to perform this pass.                                               */ +  /*    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_    { @@ -2564,8 +2677,8 @@ FT_BEGIN_HEADER    /*    @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_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 @@ -2591,7 +2704,7 @@ FT_BEGIN_HEADER    /*                   list of possible values.                            */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    FT_EXPORT( FT_Error )    FT_Render_Glyph( FT_GlyphSlot    slot, @@ -2609,7 +2722,7 @@ FT_BEGIN_HEADER    /*                                                                       */    /* <Values>                                                              */    /*    FT_KERNING_DEFAULT  :: Return scaled and grid-fitted kerning       */ -  /*                           distances (value is 0).                     */ +  /*                           distances (value is~0).                     */    /*                                                                       */    /*    FT_KERNING_UNFITTED :: Return scaled but un-grid-fitted kerning    */    /*                           distances.                                  */ @@ -2687,7 +2800,7 @@ FT_BEGIN_HEADER    /*                   and in pixels for fixed-sizes formats.              */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    /* <Note>                                                                */    /*    Only horizontal layouts (left-to-right & right-to-left) are        */ @@ -2712,17 +2825,17 @@ FT_BEGIN_HEADER    /*    Return the track kerning for a given face object at a given size.  */    /*                                                                       */    /* <Input>                                                               */ -  /*    face        :: A handle to a source face object.                   */ +  /*    face       :: A handle to a source face object.                    */    /*                                                                       */ -  /*    point_size  :: The point size in 16.16 fractional points.          */ +  /*    point_size :: The point size in 16.16 fractional points.           */    /*                                                                       */ -  /*    degree      :: The degree of tightness.                            */ +  /*    degree     :: The degree of tightness.                             */    /*                                                                       */    /* <Output>                                                              */ -  /*    akerning    :: The kerning in 16.16 fractional points.             */ +  /*    akerning   :: The kerning in 16.16 fractional points.              */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    FT_EXPORT( FT_Error )    FT_Get_Track_Kerning( FT_Face    face, @@ -2738,7 +2851,7 @@ FT_BEGIN_HEADER    /*                                                                       */    /* <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.   */ +  /*    works for those faces where @FT_HAS_GLYPH_NAMES(face) returns~1.   */    /*                                                                       */    /* <Input>                                                               */    /*    face        :: A handle to a source face object.                   */ @@ -2753,12 +2866,12 @@ FT_BEGIN_HEADER    /*                   copied to.                                          */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    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.            */ +  /*    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.              */ @@ -2780,14 +2893,14 @@ FT_BEGIN_HEADER    /*    FT_Get_Postscript_Name                                             */    /*                                                                       */    /* <Description>                                                         */ -  /*    Retrieve the ASCII Postscript name of a given face, if available.  */ -  /*    This only works with Postscript and TrueType fonts.                */ +  /*    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.     */ +  /*    A pointer to the face's PostScript name.  NULL if unavailable.     */    /*                                                                       */    /* <Note>                                                                */    /*    The returned pointer is owned by the face and is destroyed with    */ @@ -2813,7 +2926,7 @@ FT_BEGIN_HEADER    /*    encoding :: A handle to the selected encoding.                     */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    /* <Note>                                                                */    /*    This function returns an error if no charmap in the face           */ @@ -2821,7 +2934,8 @@ FT_BEGIN_HEADER    /*                                                                       */    /*    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.  It is thus preferable to               */ +  /*    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 ) @@ -2844,13 +2958,15 @@ FT_BEGIN_HEADER    /*    charmap :: A handle to the selected charmap.                       */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    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 ); @@ -2892,13 +3008,13 @@ FT_BEGIN_HEADER    /*    charcode :: The character code.                                    */    /*                                                                       */    /* <Return>                                                              */ -  /*    The glyph index.  0 means `undefined character code'.              */ +  /*    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  */ +  /*    the file.  This is done to ensure that value~0 always corresponds  */    /*    to the `missing glyph'.                                            */    /*                                                                       */    FT_EXPORT( FT_UInt ) @@ -2920,7 +3036,7 @@ FT_BEGIN_HEADER    /*    face    :: A handle to the source face object.                     */    /*                                                                       */    /* <Output>                                                              */ -  /*    agindex :: Glyph index of first character code.  0 if charmap is   */ +  /*    agindex :: Glyph index of first character code.  0~if charmap is   */    /*               empty.                                                  */    /*                                                                       */    /* <Return>                                                              */ @@ -2945,9 +3061,9 @@ FT_BEGIN_HEADER    /*      }                                                                */    /*    }                                                                  */    /*                                                                       */ -  /*    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    */ -  /*    when the value 0 is the first valid character code.                */ +  /*    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, @@ -2969,7 +3085,7 @@ FT_BEGIN_HEADER    /*    char_code :: The starting character code.                          */    /*                                                                       */    /* <Output>                                                              */ -  /*    agindex   :: Glyph index of first character code.  0 if charmap    */ +  /*    agindex   :: Glyph index of next character code.  0~if charmap     */    /*                 is empty.                                             */    /*                                                                       */    /* <Return>                                                              */ @@ -2980,7 +3096,7 @@ FT_BEGIN_HEADER    /*    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   */ +  /*    Note that `*agindex' is set to~0 when there are no more codes in   */    /*    the charmap.                                                       */    /*                                                                       */    FT_EXPORT( FT_ULong ) @@ -3004,7 +3120,7 @@ FT_BEGIN_HEADER    /*    glyph_name :: The glyph name.                                      */    /*                                                                       */    /* <Return>                                                              */ -  /*    The glyph index.  0 means `undefined character code'.              */ +  /*    The glyph index.  0~means `undefined character code'.              */    /*                                                                       */    FT_EXPORT( FT_UInt )    FT_Get_Name_Index( FT_Face     face, @@ -3046,15 +3162,16 @@ FT_BEGIN_HEADER     *     * @description:     *   Retrieve a description of a given subglyph.  Only use it if -   *   `glyph->format' is @FT_GLYPH_FORMAT_COMPOSITE, or an error is -   *   returned. +   *   `glyph->format' is @FT_GLYPH_FORMAT_COMPOSITE; an error is +   *   returned otherwise.     *     * @input:     *   glyph ::     *     The source glyph slot.     *     *   sub_index :: -   *     The index of subglyph.  Must be less than `glyph->num_subglyphs'. +   *     The index of the subglyph.  Must be less than +   *     `glyph->num_subglyphs'.     *     * @output:     *   p_index :: @@ -3073,7 +3190,7 @@ FT_BEGIN_HEADER     *     The subglyph transformation (if any).     *     * @return: -   *   FreeType error code.  0 means success. +   *   FreeType error code.  0~means success.     *     * @note:     *   The values of `*p_arg1', `*p_arg2', and `*p_transform' must be @@ -3093,6 +3210,305 @@ FT_BEGIN_HEADER    /*************************************************************************/    /*                                                                       */ +  /* <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 +#define FT_FSTYPE_EDITABLE_EMBEDDING            0x0008 +#define FT_FSTYPE_NO_SUBSETTING                 0x0100 +#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.                       */ +  /*                                                                       */ +  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 Report #37, the Ideographic Variation         */ +  /*    Database.  To date (October 2007), the character with the most     */ +  /*    variants is U+908A, having 8~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, +                             FT_ULong  variantSelector ); + + +  /*************************************************************************/ +  /*                                                                       */    /* <Section>                                                             */    /*    computations                                                       */    /*                                                                       */ @@ -3149,6 +3565,12 @@ FT_BEGIN_HEADER               FT_Long  c ); +  /* */ + +  /* The following #if 0 ... #endif is for the documentation formatter, */ +  /* hiding the internal `FT_MULFIX_INLINED' macro.                     */ + +#if 0    /*************************************************************************/    /*                                                                       */    /* <Function>                                                            */ @@ -3182,6 +3604,17 @@ FT_BEGIN_HEADER    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 ); +#endif +    /*************************************************************************/    /*                                                                       */ @@ -3202,8 +3635,8 @@ FT_BEGIN_HEADER    /*    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    */ +  /*    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 ) @@ -3310,26 +3743,27 @@ FT_BEGIN_HEADER    /*************************************************************************     * -   *  @enum: -   *    FREETYPE_XXX +   * @enum: +   *   FREETYPE_XXX     * -   *  @description: -   *    These three macros identify the FreeType source code version. -   *    Use @FT_Library_Version to access them at runtime. +   * @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. +   * @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.     * -   *  @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  3 -#define FREETYPE_PATCH  5 +#define FREETYPE_PATCH  11    /*************************************************************************/ @@ -3386,8 +3820,8 @@ FT_BEGIN_HEADER    /*    face :: A face handle.                                             */    /*                                                                       */    /* <Return>                                                              */ -  /*    1 if this is a TrueType font that uses one of the patented         */ -  /*    opcodes, 0 otherwise.                                              */ +  /*    1~if this is a TrueType font that uses one of the patented         */ +  /*    opcodes, 0~otherwise.                                              */    /*                                                                       */    /* <Since>                                                               */    /*    2.3.5                                                              */ @@ -3413,7 +3847,7 @@ FT_BEGIN_HEADER    /*                                                                       */    /* <Return>                                                              */    /*    The old setting value.  This will always be false if this is not   */ -  /*    a SFNT font, or if the unpatented hinter is not compiled in this   */ +  /*    an SFNT font, or if the unpatented hinter is not compiled in this  */    /*    instance of the library.                                           */    /*                                                                       */    /* <Since>                                                               */ diff --git a/src/freetype2/freetype/ftadvanc.h b/src/freetype2/freetype/ftadvanc.h new file mode 100644 index 0000000..b2451be --- /dev/null +++ b/src/freetype2/freetype/ftadvanc.h @@ -0,0 +1,179 @@ +/***************************************************************************/ +/*                                                                         */ +/*  ftadvanc.h                                                             */ +/*                                                                         */ +/*    Quick computation of advance widths (specification only).            */ +/*                                                                         */ +/*  Copyright 2008 by                                                      */ +/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */ +/*                                                                         */ +/*  This file is part of the FreeType project, and may only be used,       */ +/*  modified, and distributed under the terms of the FreeType project      */ +/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */ +/*  this file you indicate that you have read the license and              */ +/*  understand and accept it fully.                                        */ +/*                                                                         */ +/***************************************************************************/ + + +#ifndef __FTADVANC_H__ +#define __FTADVANC_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + +  /************************************************************************** +   * +   * @section: +   *   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 ); + +/* */ + + +FT_END_HEADER + +#endif /* __FTADVANC_H__ */ + + +/* END */ diff --git a/src/freetype2/freetype/ftbbox.h b/src/freetype2/freetype/ftbbox.h index 5f79c32..01fe3fb 100644 --- a/src/freetype2/freetype/ftbbox.h +++ b/src/freetype2/freetype/ftbbox.h @@ -4,7 +4,7 @@  /*                                                                         */  /*    FreeType exact bbox computation (specification).                     */  /*                                                                         */ -/*  Copyright 1996-2001, 2003 by                                           */ +/*  Copyright 1996-2001, 2003, 2007 by                                     */  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */  /*                                                                         */  /*  This file is part of the FreeType project, and may only be used,       */ @@ -58,10 +58,10 @@ FT_BEGIN_HEADER    /*    FT_Outline_Get_BBox                                                */    /*                                                                       */    /* <Description>                                                         */ -  /*    Computes the exact bounding box of an outline.  This is slower     */ +  /*    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 walked over to   */ +  /*    coincide.  Otherwise, the outline Bézier arcs are traversed to     */    /*    extract their extrema.                                             */    /*                                                                       */    /* <Input>                                                               */ @@ -71,7 +71,7 @@ FT_BEGIN_HEADER    /*    abbox   :: The outline's exact bounding box.                       */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    FT_EXPORT( FT_Error )    FT_Outline_Get_BBox( FT_Outline*  outline, diff --git a/src/freetype2/freetype/ftbdf.h b/src/freetype2/freetype/ftbdf.h index 9555694..4f8baf8 100644 --- a/src/freetype2/freetype/ftbdf.h +++ b/src/freetype2/freetype/ftbdf.h @@ -4,7 +4,7 @@  /*                                                                         */  /*    FreeType API for accessing BDF-specific strings (specification).     */  /*                                                                         */ -/*  Copyright 2002, 2003, 2004, 2006 by                                    */ +/*  Copyright 2002, 2003, 2004, 2006, 2009 by                              */  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */  /*                                                                         */  /*  This file is part of the FreeType project, and may only be used,       */ @@ -38,38 +38,39 @@ FT_BEGIN_HEADER    /*    bdf_fonts                                                          */    /*                                                                       */    /* <Title>                                                               */ -  /*    BDF Files                                                          */ +  /*    BDF and PCF Files                                                  */    /*                                                                       */    /* <Abstract>                                                            */ -  /*    BDF specific API.                                                  */ +  /*    BDF and PCF specific API.                                          */    /*                                                                       */    /* <Description>                                                         */ -  /*    This section contains the declaration of BDF specific functions.   */ +  /*    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. -  */ +  /********************************************************************** +   * +   * @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, @@ -80,15 +81,15 @@ FT_BEGIN_HEADER    } BDF_PropertyType; - /********************************************************************** -  * -  * @type: -  *    BDF_Property -  * -  * @description: -  *    A handle to a @BDF_PropertyRec structure to model a given -  *    BDF/PCF property. -  */ +  /********************************************************************** +   * +   * @type: +   *    BDF_Property +   * +   * @description: +   *    A handle to a @BDF_PropertyRec structure to model a given +   *    BDF/PCF property. +   */    typedef struct BDF_PropertyRec_*  BDF_Property; @@ -132,7 +133,7 @@ FT_BEGIN_HEADER    *    FT_Get_BDF_Charset_ID    *    * @description: -  *    Retrieves a BDF font character set identity, according to +  *    Retrieve a BDF font character set identity, according to    *    the BDF specification.    *    * @input: @@ -141,13 +142,13 @@ FT_BEGIN_HEADER    *    * @output:    *    acharset_encoding :: -  *       Charset encoding, as a C string, owned by the face. +  *       Charset encoding, as a C~string, owned by the face.    *    *    acharset_registry :: -  *       Charset registry, as a C string, owned by the face. +  *       Charset registry, as a C~string, owned by the face.    *    * @return: -  *   FreeType error code.  0 means success. +  *   FreeType error code.  0~means success.    *    * @note:    *   This function only works with BDF faces, returning an error otherwise. @@ -164,7 +165,7 @@ FT_BEGIN_HEADER    *    FT_Get_BDF_Property    *    * @description: -  *    Retrieves a BDF property from a BDF or PCF font file. +  *    Retrieve a BDF property from a BDF or PCF font file.    *    * @input:    *    face :: A handle to the input face. @@ -175,13 +176,21 @@ FT_BEGIN_HEADER    *    aproperty :: The property.    *    * @return: -  *   FreeType error code.  0 means success. +  *   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.    */ diff --git a/src/freetype2/freetype/ftbitmap.h b/src/freetype2/freetype/ftbitmap.h index 337d888..9274236 100644 --- a/src/freetype2/freetype/ftbitmap.h +++ b/src/freetype2/freetype/ftbitmap.h @@ -2,10 +2,9 @@  /*                                                                         */  /*  ftbitmap.h                                                             */  /*                                                                         */ -/*    FreeType utility functions for converting 1bpp, 2bpp, 4bpp, and 8bpp */ -/*    bitmaps into 8bpp format (specification).                            */ +/*    FreeType utility functions for bitmaps (specification).              */  /*                                                                         */ -/*  Copyright 2004, 2005, 2006 by                                          */ +/*  Copyright 2004, 2005, 2006, 2008 by                                    */  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */  /*                                                                         */  /*  This file is part of the FreeType project, and may only be used,       */ @@ -72,7 +71,7 @@ FT_BEGIN_HEADER    /*    FT_Bitmap_Copy                                                     */    /*                                                                       */    /* <Description>                                                         */ -  /*    Copies an bitmap into another one.                                 */ +  /*    Copy a bitmap into another one.                                    */    /*                                                                       */    /* <Input>                                                               */    /*    library :: A handle to a library object.                           */ @@ -83,7 +82,7 @@ FT_BEGIN_HEADER    /*    target  :: A handle to the target bitmap.                          */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    FT_EXPORT( FT_Error )    FT_Bitmap_Copy( FT_Library        library, @@ -114,14 +113,14 @@ FT_BEGIN_HEADER    /*    bitmap    :: A handle to the target bitmap.                        */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    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.      */ +  /*    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.       */ +  /*    you should call @FT_GlyphSlot_Own_Bitmap on the slot first.        */    /*                                                                       */    FT_EXPORT( FT_Error )    FT_Bitmap_Embolden( FT_Library  library, @@ -152,7 +151,7 @@ FT_BEGIN_HEADER    /*    target    :: The target bitmap.                                    */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    /* <Note>                                                                */    /*    It is possible to call @FT_Bitmap_Convert multiple times without   */ @@ -173,6 +172,28 @@ FT_BEGIN_HEADER    /*************************************************************************/    /*                                                                       */    /* <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>                                                         */ @@ -184,7 +205,7 @@ FT_BEGIN_HEADER    /*    bitmap  :: The bitmap object to be freed.                          */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    /* <Note>                                                                */    /*    The `library' argument is taken to have access to FreeType's       */ diff --git a/src/freetype2/freetype/ftcache.h b/src/freetype2/freetype/ftcache.h index 721aa16..0916d70 100644 --- a/src/freetype2/freetype/ftcache.h +++ b/src/freetype2/freetype/ftcache.h @@ -4,7 +4,7 @@  /*                                                                         */  /*    FreeType Cache subsystem (specification).                            */  /*                                                                         */ -/*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by             */ +/*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by       */  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */  /*                                                                         */  /*  This file is part of the FreeType project, and may only be used,       */ @@ -36,10 +36,10 @@ FT_BEGIN_HEADER     *    Cache Sub-System     *     * <Abstract> -   *    How to cache face, size, and glyph data with FreeType 2. +   *    How to cache face, size, and glyph data with FreeType~2.     *     * <Description> -   *   This section describes the FreeType 2 cache sub-system, which is used +   *   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. @@ -165,7 +165,7 @@ FT_BEGIN_HEADER     *   Failure to do so will result in incorrect behaviour or even     *   memory leaks and crashes.     */ -  typedef struct FTC_FaceIDRec_*  FTC_FaceID; +  typedef FT_Pointer  FTC_FaceID;    /************************************************************************ @@ -193,7 +193,7 @@ FT_BEGIN_HEADER     *     A new @FT_Face handle.     *     * <Return> -   *   FreeType error code.  0 means success. +   *   FreeType error code.  0~means success.     *     * <Note>     *   The third parameter `req_data' is the same as the one passed by the @@ -260,7 +260,7 @@ FT_BEGIN_HEADER    /*                                                                       */    /* <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      */ +  /*    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 lookup nodes, you have the ability to `acquire' them, i.e., */ @@ -279,19 +279,19 @@ FT_BEGIN_HEADER    /*    FTC_Manager_New                                                    */    /*                                                                       */    /* <Description>                                                         */ -  /*    Creates a new cache manager.                                       */ +  /*    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.             */ +  /*                 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.             */ +  /*                 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    */ +  /*                 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    */ @@ -301,11 +301,11 @@ FT_BEGIN_HEADER    /*                 each time it is called (see @FTC_Face_Requester).     */    /*                                                                       */    /* <Output>                                                              */ -  /*    amanager  :: A handle to a new manager object.  0 in case of       */ +  /*    amanager  :: A handle to a new manager object.  0~in case of       */    /*                 failure.                                              */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    FT_EXPORT( FT_Error )    FTC_Manager_New( FT_Library          library, @@ -323,7 +323,7 @@ FT_BEGIN_HEADER    /*    FTC_Manager_Reset                                                  */    /*                                                                       */    /* <Description>                                                         */ -  /*    Empties a given cache manager.  This simply gets rid of all the    */ +  /*    Empty a given cache manager.  This simply gets rid of all the      */    /*    currently cached @FT_Face and @FT_Size objects within the manager. */    /*                                                                       */    /* <InOut>                                                               */ @@ -339,7 +339,7 @@ FT_BEGIN_HEADER    /*    FTC_Manager_Done                                                   */    /*                                                                       */    /* <Description>                                                         */ -  /*    Destroys a given manager after emptying it.                        */ +  /*    Destroy a given manager after emptying it.                         */    /*                                                                       */    /* <Input>                                                               */    /*    manager :: A handle to the target cache manager object.            */ @@ -354,7 +354,7 @@ FT_BEGIN_HEADER    /*    FTC_Manager_LookupFace                                             */    /*                                                                       */    /* <Description>                                                         */ -  /*    Retrieves the @FT_Face object that corresponds to a given face ID  */ +  /*    Retrieve the @FT_Face object that corresponds to a given face ID   */    /*    through a cache manager.                                           */    /*                                                                       */    /* <Input>                                                               */ @@ -366,7 +366,7 @@ FT_BEGIN_HEADER    /*    aface   :: A handle to the face object.                            */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    /* <Note>                                                                */    /*    The returned @FT_Face object is always owned by the manager.  You  */ @@ -415,10 +415,10 @@ FT_BEGIN_HEADER    /*               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       */ +  /*    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       */ +  /*    y_res   :: Only used when `pixel' is value~0 to indicate the       */    /*               vertical resolution in dpi.                             */    /*                                                                       */    /* <Note>                                                                */ @@ -434,7 +434,18 @@ FT_BEGIN_HEADER      FT_UInt     x_res;      FT_UInt     y_res; -  } FTC_ScalerRec, *FTC_Scaler; +  } FTC_ScalerRec; + + +  /*************************************************************************/ +  /*                                                                       */ +  /* <Struct>                                                              */ +  /*    FTC_Scaler                                                         */ +  /*                                                                       */ +  /* <Description>                                                         */ +  /*    A handle to an @FTC_ScalerRec structure.                           */ +  /*                                                                       */ +  typedef struct FTC_ScalerRec_*  FTC_Scaler;    /*************************************************************************/ @@ -455,7 +466,7 @@ FT_BEGIN_HEADER    /*    asize   :: A handle to the size object.                            */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    /* <Note>                                                                */    /*    The returned @FT_Size object is always owned by the manager.  You  */ @@ -569,7 +580,7 @@ FT_BEGIN_HEADER     *     A new cache handle.  NULL in case of error.     *     * @return: -   *   FreeType error code.  0 means success. +   *   FreeType error code.  0~means success.     *     * @note:     *   Like all other caches, this one will be destroyed with the cache @@ -598,13 +609,14 @@ FT_BEGIN_HEADER     *     The source face ID.     *     *   cmap_index :: -   *     The index of the charmap in the source face. +   *     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'. +   *    Glyph index.  0~means `no glyph'.     *     */    FT_EXPORT( FT_UInt ) @@ -710,7 +722,7 @@ FT_BEGIN_HEADER    /*    FTC_ImageCache_New                                                 */    /*                                                                       */    /* <Description>                                                         */ -  /*    Creates a new glyph image cache.                                   */ +  /*    Create a new glyph image cache.                                    */    /*                                                                       */    /* <Input>                                                               */    /*    manager :: The parent manager for the image cache.                 */ @@ -719,7 +731,7 @@ FT_BEGIN_HEADER    /*    acache  :: A handle to the new glyph image cache object.           */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    FT_EXPORT( FT_Error )    FTC_ImageCache_New( FTC_Manager      manager, @@ -732,7 +744,7 @@ FT_BEGIN_HEADER    /*    FTC_ImageCache_Lookup                                              */    /*                                                                       */    /* <Description>                                                         */ -  /*    Retrieves a given glyph image from a glyph image cache.            */ +  /*    Retrieve a given glyph image from a glyph image cache.             */    /*                                                                       */    /* <Input>                                                               */    /*    cache  :: A handle to the source glyph image cache.                */ @@ -742,7 +754,7 @@ FT_BEGIN_HEADER    /*    gindex :: The glyph index to retrieve.                             */    /*                                                                       */    /* <Output>                                                              */ -  /*    aglyph :: The corresponding @FT_Glyph object.  0 in case of        */ +  /*    aglyph :: The corresponding @FT_Glyph object.  0~in case of        */    /*              failure.                                                 */    /*                                                                       */    /*    anode  :: Used to return the address of of the corresponding cache */ @@ -750,7 +762,7 @@ FT_BEGIN_HEADER    /*              below).                                                  */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    /* <Note>                                                                */    /*    The returned glyph is owned and managed by the glyph image cache.  */ @@ -795,7 +807,7 @@ FT_BEGIN_HEADER    /*    gindex     :: The glyph index to retrieve.                         */    /*                                                                       */    /* <Output>                                                              */ -  /*    aglyph     :: The corresponding @FT_Glyph object.  0 in case of    */ +  /*    aglyph     :: The corresponding @FT_Glyph object.  0~in case of    */    /*                  failure.                                             */    /*                                                                       */    /*    anode      :: Used to return the address of of the corresponding   */ @@ -803,7 +815,7 @@ FT_BEGIN_HEADER    /*                  (see note below).                                    */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    /* <Note>                                                                */    /*    The returned glyph is owned and managed by the glyph image cache.  */ @@ -821,6 +833,9 @@ FT_BEGIN_HEADER    /*    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, @@ -862,11 +877,11 @@ FT_BEGIN_HEADER    /*    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.                                        */ +  /*                 y~coordinates.                                        */    /*                                                                       */    /*    format    :: The format of the glyph bitmap (monochrome or gray).  */    /*                                                                       */ -  /*    max_grays :: Maximum gray level value (in the range 1 to 255).     */ +  /*    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.                                          */ @@ -915,7 +930,7 @@ FT_BEGIN_HEADER    /*    FTC_SBitCache_New                                                  */    /*                                                                       */    /* <Description>                                                         */ -  /*    Creates a new cache to store small glyph bitmaps.                  */ +  /*    Create a new cache to store small glyph bitmaps.                   */    /*                                                                       */    /* <Input>                                                               */    /*    manager :: A handle to the source cache manager.                   */ @@ -924,7 +939,7 @@ FT_BEGIN_HEADER    /*    acache  :: A handle to the new sbit cache.  NULL in case of error. */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    FT_EXPORT( FT_Error )    FTC_SBitCache_New( FTC_Manager     manager, @@ -937,7 +952,7 @@ FT_BEGIN_HEADER    /*    FTC_SBitCache_Lookup                                               */    /*                                                                       */    /* <Description>                                                         */ -  /*    Looks up a given small glyph bitmap in a given sbit cache and      */ +  /*    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>                                                               */ @@ -955,7 +970,7 @@ FT_BEGIN_HEADER    /*              below).                                                  */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    /* <Note>                                                                */    /*    The small bitmap descriptor and its bit buffer are owned by the    */ @@ -963,7 +978,7 @@ FT_BEGIN_HEADER    /*    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  */ +  /*    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     */ @@ -1010,7 +1025,7 @@ FT_BEGIN_HEADER    /*                  (see note below).                                    */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    /* <Note>                                                                */    /*    The small bitmap descriptor and its bit buffer are owned by the    */ @@ -1018,7 +1033,7 @@ FT_BEGIN_HEADER    /*    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  */ +  /*    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     */ diff --git a/src/freetype2/freetype/ftchapters.h b/src/freetype2/freetype/ftchapters.h index bd812c8..7775a6b 100644 --- a/src/freetype2/freetype/ftchapters.h +++ b/src/freetype2/freetype/ftchapters.h @@ -32,6 +32,7 @@  /*    version                                                              */  /*    basic_types                                                          */  /*    base_interface                                                       */ +/*    glyph_variants                                                       */  /*    glyph_management                                                     */  /*    mac_specific                                                         */  /*    sizes_management                                                     */ @@ -54,6 +55,7 @@  /*    type1_tables                                                         */  /*    sfnt_names                                                           */  /*    bdf_fonts                                                            */ +/*    cid_fonts                                                            */  /*    pfr_fonts                                                            */  /*    winfnt_fonts                                                         */  /*    font_formats                                                         */ @@ -88,6 +90,7 @@  /*    computations                                                         */  /*    list_processing                                                      */  /*    outline_processing                                                   */ +/*    quick_advance                                                        */  /*    bitmap_handling                                                      */  /*    raster                                                               */  /*    glyph_stroker                                                        */ diff --git a/src/freetype2/freetype/ftcid.h b/src/freetype2/freetype/ftcid.h new file mode 100644 index 0000000..203a30c --- /dev/null +++ b/src/freetype2/freetype/ftcid.h @@ -0,0 +1,166 @@ +/***************************************************************************/ +/*                                                                         */ +/*  ftcid.h                                                                */ +/*                                                                         */ +/*    FreeType API for accessing CID font information (specification).     */ +/*                                                                         */ +/*  Copyright 2007, 2009 by Dereg Clegg, Michael Toftdal.                  */ +/*                                                                         */ +/*  This file is part of the FreeType project, and may only be used,       */ +/*  modified, and distributed under the terms of the FreeType project      */ +/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */ +/*  this file you indicate that you have read the license and              */ +/*  understand and accept it fully.                                        */ +/*                                                                         */ +/***************************************************************************/ + + +#ifndef __FTCID_H__ +#define __FTCID_H__ + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + +  /*************************************************************************/ +  /*                                                                       */ +  /* <Section>                                                             */ +  /*    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 + +#endif /* __FTCID_H__ */ + + +/* END */ diff --git a/src/freetype2/freetype/ftgasp.h b/src/freetype2/freetype/ftgasp.h index 97cd330..91a769e 100644 --- a/src/freetype2/freetype/ftgasp.h +++ b/src/freetype2/freetype/ftgasp.h @@ -4,7 +4,7 @@  /*                                                                         */  /*    Access of TrueType's `gasp' table (specification).                   */  /*                                                                         */ -/*  Copyright 2007 by                                                      */ +/*  Copyright 2007, 2008 by                                                */  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */  /*                                                                         */  /*  This file is part of the FreeType project, and may only be used,       */ @@ -22,6 +22,13 @@  #include <ft2build.h>  #include FT_FREETYPE_H +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + +    /***************************************************************************     *     * @section: @@ -31,11 +38,11 @@     *   Gasp Table     *     * @abstract: -   *   Retrieving TrueType `gasp' table entries +   *   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 their `gasp' table, if any.  This is +   *   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.     */ @@ -95,7 +102,7 @@     *   ppem :: The vertical character pixel size.     *     * @return: -   *   Bit flags (see @FT_GASP_XXX), or @FT_GASP_NO_TABLE is there is no +   *   Bit flags (see @FT_GASP_XXX), or @FT_GASP_NO_TABLE if there is no     *   `gasp' table in the face.     *     * @since: diff --git a/src/freetype2/freetype/ftglyph.h b/src/freetype2/freetype/ftglyph.h index 08058da..cacccf0 100644 --- a/src/freetype2/freetype/ftglyph.h +++ b/src/freetype2/freetype/ftglyph.h @@ -4,7 +4,7 @@  /*                                                                         */  /*    FreeType convenience functions to handle glyphs (specification).     */  /*                                                                         */ -/*  Copyright 1996-2001, 2002, 2003, 2006 by                               */ +/*  Copyright 1996-2001, 2002, 2003, 2006, 2008, 2009 by                   */  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */  /*                                                                         */  /*  This file is part of the FreeType project, and may only be used,       */ @@ -145,7 +145,7 @@ FT_BEGIN_HEADER    /*                                                                       */    /*    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.  This distance is positive for upwards~y!        */    /*                                                                       */    /*    bitmap :: A descriptor for the bitmap.                             */    /*                                                                       */ @@ -194,7 +194,7 @@ FT_BEGIN_HEADER    /*    outline :: A descriptor for the outline.                           */    /*                                                                       */    /* <Note>                                                                */ -  /*    You can typecast a @FT_Glyph to @FT_OutlineGlyph if you have       */ +  /*    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.                                      */    /*                                                                       */ @@ -219,7 +219,8 @@ FT_BEGIN_HEADER    /*    FT_Get_Glyph                                                       */    /*                                                                       */    /* <Description>                                                         */ -  /*    A function used to extract a glyph image from a slot.              */ +  /*    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.                       */ @@ -228,7 +229,7 @@ FT_BEGIN_HEADER    /*    aglyph :: A handle to the glyph object.                            */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    FT_EXPORT( FT_Error )    FT_Get_Glyph( FT_GlyphSlot  slot, @@ -248,11 +249,11 @@ FT_BEGIN_HEADER    /*    source :: A handle to the source glyph object.                     */    /*                                                                       */    /* <Output>                                                              */ -  /*    target :: A handle to the target glyph object.  0 in case of       */ +  /*    target :: A handle to the target glyph object.  0~in case of       */    /*              error.                                                   */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    FT_EXPORT( FT_Error )    FT_Glyph_Copy( FT_Glyph   source, @@ -265,7 +266,7 @@ FT_BEGIN_HEADER    /*    FT_Glyph_Transform                                                 */    /*                                                                       */    /* <Description>                                                         */ -  /*    Transforms a glyph image if its format is scalable.                */ +  /*    Transform a glyph image if its format is scalable.                 */    /*                                                                       */    /* <InOut>                                                               */    /*    glyph  :: A handle to the target glyph object.                     */ @@ -375,7 +376,7 @@ FT_BEGIN_HEADER    /*             expressed in 1/64th of pixels if it is grid-fitted.       */    /*                                                                       */    /* <Note>                                                                */ -  /*    Coordinates are relative to the glyph origin, using the Y-upwards  */ +  /*    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'   */ @@ -421,17 +422,17 @@ FT_BEGIN_HEADER    /*    FT_Glyph_To_Bitmap                                                 */    /*                                                                       */    /* <Description>                                                         */ -  /*    Converts a given glyph object to a bitmap glyph object.            */ +  /*    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 describe how the data is        */ +  /*    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            */ +  /*                   image before rendering.  Can be~0 (if no            */    /*                   translation).  The origin is expressed in           */    /*                   26.6 pixels.                                        */    /*                                                                       */ @@ -440,15 +441,17 @@ FT_BEGIN_HEADER    /*                   never destroyed in case of error.                   */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    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.  Typically, you would use (omitting  */ -  /*    error handling):                                                   */ +  /*    be _replaced_ by this function (with newly allocated data).        */ +  /*    Typically, you would use (omitting error handling):                */    /*                                                                       */    /*                                                                       */    /*      {                                                                */ @@ -462,12 +465,12 @@ FT_BEGIN_HEADER    /*        // extract glyph image                                         */    /*        error = FT_Get_Glyph( face->glyph, &glyph );                   */    /*                                                                       */ -  /*        // convert to a bitmap (default render mode + destroy old)     */ +  /*        // 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_DEFAULT,  */    /*                                      0, 1 );                          */ -  /*          if ( error ) // glyph unchanged                              */ +  /*          if ( error ) // `glyph' unchanged                            */    /*            ...                                                        */    /*        }                                                              */    /*                                                                       */ @@ -482,7 +485,42 @@ FT_BEGIN_HEADER    /*      }                                                                */    /*                                                                       */    /*                                                                       */ -  /*    This function does nothing if the glyph format isn't scalable.     */ +  /*    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, @@ -497,7 +535,7 @@ FT_BEGIN_HEADER    /*    FT_Done_Glyph                                                      */    /*                                                                       */    /* <Description>                                                         */ -  /*    Destroys a given glyph.                                            */ +  /*    Destroy a given glyph.                                             */    /*                                                                       */    /* <Input>                                                               */    /*    glyph :: A handle to the target glyph object.                      */ @@ -524,7 +562,7 @@ FT_BEGIN_HEADER    /*    FT_Matrix_Multiply                                                 */    /*                                                                       */    /* <Description>                                                         */ -  /*    Performs the matrix operation `b = a*b'.                           */ +  /*    Perform the matrix operation `b = a*b'.                            */    /*                                                                       */    /* <Input>                                                               */    /*    a :: A pointer to matrix `a'.                                      */ @@ -537,7 +575,7 @@ FT_BEGIN_HEADER    /*                                                                       */    FT_EXPORT( void )    FT_Matrix_Multiply( const FT_Matrix*  a, -                      FT_Matrix*  b ); +                      FT_Matrix*        b );    /*************************************************************************/ @@ -546,14 +584,14 @@ FT_BEGIN_HEADER    /*    FT_Matrix_Invert                                                   */    /*                                                                       */    /* <Description>                                                         */ -  /*    Inverts a 2x2 matrix.  Returns an error if it can't be inverted.   */ +  /*    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.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    FT_EXPORT( FT_Error )    FT_Matrix_Invert( FT_Matrix*  matrix ); diff --git a/src/freetype2/freetype/ftgxval.h b/src/freetype2/freetype/ftgxval.h index c7ea861..497015c 100644 --- a/src/freetype2/freetype/ftgxval.h +++ b/src/freetype2/freetype/ftgxval.h @@ -202,7 +202,7 @@ FT_BEGIN_HEADER    *       The array itself must be allocated by a client.    *    * @return: -  *   FreeType error code.  0 means success. +  *   FreeType error code.  0~means success.    *    * @note:    *   This function only works with TrueTypeGX fonts, returning an error @@ -285,14 +285,14 @@ FT_BEGIN_HEADER    *    FT_ClassicKern_Validate    *    * @description: -  *    Validate classic (16bit format) kern table to assure that the offsets +  *    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 32bit format and the classic 16bit format, while -  *    FT_ClassicKern_Validate only supports the classic 16bit format. +  *    the new 32-bit format and the classic 16-bit format, while +  *    FT_ClassicKern_Validate only supports the classic 16-bit format.    *    * @input:    *    face :: @@ -307,7 +307,7 @@ FT_BEGIN_HEADER    *       A pointer to the kern table.    *    * @return: -  *   FreeType error code.  0 means success. +  *   FreeType error code.  0~means success.    *    * @note:    *   After use, the application should deallocate the buffers pointed to by diff --git a/src/freetype2/freetype/ftgzip.h b/src/freetype2/freetype/ftgzip.h index 9893437..acbc4f0 100644 --- a/src/freetype2/freetype/ftgzip.h +++ b/src/freetype2/freetype/ftgzip.h @@ -66,7 +66,7 @@ FT_BEGIN_HEADER    *     The source stream.    *    * @return: -  *   FreeType error code.  0 means success. +  *   FreeType error code.  0~means success.    *    * @note:    *   The source stream must be opened _before_ calling this function. diff --git a/src/freetype2/freetype/ftimage.h b/src/freetype2/freetype/ftimage.h index 1c428f1..2fcc113 100644 --- a/src/freetype2/freetype/ftimage.h +++ b/src/freetype2/freetype/ftimage.h @@ -5,7 +5,7 @@  /*    FreeType glyph image formats and default raster interface            */  /*    (specification).                                                     */  /*                                                                         */ -/*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by             */ +/*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */  /*                                                                         */  /*  This file is part of the FreeType project, and may only be used,       */ @@ -28,7 +28,7 @@  #define __FTIMAGE_H__ -/* _STANDALONE_ is from ftgrays.c */ +  /* _STANDALONE_ is from ftgrays.c */  #ifndef _STANDALONE_  #include <ft2build.h>  #endif @@ -53,7 +53,7 @@ FT_BEGIN_HEADER    /* <Description>                                                         */    /*    The type FT_Pos is a 32-bit integer used to store vectorial        */    /*    coordinates.  Depending on the context, these can represent        */ -  /*    distances in integer font units, or 16,16, or 26.6 fixed float     */ +  /*    distances in integer font units, or 16.16, or 26.6 fixed float     */    /*    pixel coordinates.                                                 */    /*                                                                       */    typedef signed long  FT_Pos; @@ -119,39 +119,40 @@ FT_BEGIN_HEADER    /*                                                                       */    /* <Values>                                                              */    /*    FT_PIXEL_MODE_NONE ::                                              */ -  /*      Value 0 is reserved.                                             */ +  /*      Value~0 is reserved.                                             */    /*                                                                       */    /*    FT_PIXEL_MODE_MONO ::                                              */ -  /*      A monochrome bitmap, using 1 bit per pixel.  Note that pixels    */ +  /*      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 value `gray' levels is stored in the `num_bytes' field of     */ -  /*      the @FT_Bitmap structure (it generally is 256).                  */ +  /*      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/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.       */ +  /*      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/pixel bitmap, used to represent embedded anti-aliased    */ +  /*      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, used to represent 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             */ +  /*      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, used to represent 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   */ +  /*      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_ @@ -206,11 +207,11 @@ FT_BEGIN_HEADER    /*    An enumeration type to describe the format of a bitmap palette,    */    /*    used with ft_pixel_mode_pal4 and ft_pixel_mode_pal8.               */    /*                                                                       */ -  /* <Fields>                                                              */ -  /*    ft_palette_mode_rgb  :: The palette is an array of 3-bytes RGB     */ +  /* <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-bytes RGBA    */ +  /*    ft_palette_mode_rgba :: The palette is an array of 4-byte RGBA     */    /*                            records.                                   */    /*                                                                       */    /* <Note>                                                                */ @@ -222,7 +223,7 @@ FT_BEGIN_HEADER      ft_palette_mode_rgb = 0,      ft_palette_mode_rgba, -    ft_palettte_mode_max   /* do not remove */ +    ft_palette_mode_max   /* do not remove */    } FT_Palette_Mode; @@ -317,14 +318,23 @@ FT_BEGIN_HEADER    /*                  elements, giving the outline's point coordinates.    */    /*                                                                       */    /*    tags       :: A pointer to an array of `n_points' chars, giving    */ -  /*                  each outline point's type.  If bit 0 is unset, the   */ -  /*                  point is `off' the curve, i.e., a Bézier control     */ -  /*                  point, while it is `on' when set.                    */ +  /*                  each outline point's type.                           */ +  /*                                                                       */ +  /*                  If bit~0 is unset, the point is `off' the curve,     */ +  /*                  i.e., a Bézier control point, while it is `on' if    */ +  /*                  set.                                                 */    /*                                                                       */ -  /*                  Bit 1 is meaningful for `off' points only.  If set,  */ +  /*                  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  */ @@ -335,6 +345,12 @@ FT_BEGIN_HEADER    /*                  and give hints to the scan-converter and hinter on   */    /*                  how to convert/grid-fit it.  See @FT_OUTLINE_FLAGS.  */    /*                                                                       */ +  /* <Note>                                                                */ +  /*    The B/W rasterizer only checks bit~2 in the `tags' array for the   */ +  /*    first point of each contour.  The drop-out mode as given with      */ +  /*    @FT_OUTLINE_IGNORE_DROPOUTS, @FT_OUTLINE_SMART_DROPOUTS, and       */ +  /*    @FT_OUTLINE_INCLUDE_STUBS in `flags' is then overridden.           */ +  /*                                                                       */    typedef struct  FT_Outline_    {      short       n_contours;      /* number of contours in glyph        */ @@ -348,71 +364,91 @@ FT_BEGIN_HEADER    } FT_Outline; +  /* Following limits must be consistent with */ +  /* FT_Outline.{n_contours,n_points}         */ +#define FT_OUTLINE_CONTOURS_MAX  SHRT_MAX +#define FT_OUTLINE_POINTS_MAX    SHRT_MAX +    /*************************************************************************/    /*                                                                       */    /* <Enum>                                                                */ -  /*   FT_OUTLINE_FLAGS                                                    */ +  /*    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' & `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 raster).              */ -  /*                                                                       */ -  /*   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.       */ -  /*                                                                       */ -  /*   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.                       */ +  /*    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  #define FT_OUTLINE_REVERSE_FILL     0x4  #define FT_OUTLINE_IGNORE_DROPOUTS  0x8 +#define FT_OUTLINE_SMART_DROPOUTS   0x10 +#define FT_OUTLINE_INCLUDE_STUBS    0x20  #define FT_OUTLINE_HIGH_PRECISION   0x100  #define FT_OUTLINE_SINGLE_PASS      0x200 @@ -448,21 +484,24 @@ FT_BEGIN_HEADER  #define FT_CURVE_TAG( flag )  ( flag & 3 ) -#define FT_CURVE_TAG_ON           1 -#define FT_CURVE_TAG_CONIC        0 -#define FT_CURVE_TAG_CUBIC        2 +#define FT_CURVE_TAG_ON            1 +#define FT_CURVE_TAG_CONIC         0 +#define FT_CURVE_TAG_CUBIC         2 + +#define FT_CURVE_TAG_HAS_SCANMODE  4 -#define FT_CURVE_TAG_TOUCH_X      8  /* reserved for the TrueType hinter */ -#define FT_CURVE_TAG_TOUCH_Y     16  /* reserved for the TrueType hinter */ +#define FT_CURVE_TAG_TOUCH_X       8  /* reserved for the TrueType hinter */ +#define FT_CURVE_TAG_TOUCH_Y      16  /* reserved for the TrueType hinter */ -#define FT_CURVE_TAG_TOUCH_BOTH  ( FT_CURVE_TAG_TOUCH_X | \ -                                   FT_CURVE_TAG_TOUCH_Y ) +#define FT_CURVE_TAG_TOUCH_BOTH    ( FT_CURVE_TAG_TOUCH_X | \ +                                     FT_CURVE_TAG_TOUCH_Y ) + +#define FT_Curve_Tag_On       FT_CURVE_TAG_ON +#define FT_Curve_Tag_Conic    FT_CURVE_TAG_CONIC +#define FT_Curve_Tag_Cubic    FT_CURVE_TAG_CUBIC +#define FT_Curve_Tag_Touch_X  FT_CURVE_TAG_TOUCH_X +#define FT_Curve_Tag_Touch_Y  FT_CURVE_TAG_TOUCH_Y -#define  FT_Curve_Tag_On       FT_CURVE_TAG_ON -#define  FT_Curve_Tag_Conic    FT_CURVE_TAG_CONIC -#define  FT_Curve_Tag_Cubic    FT_CURVE_TAG_CUBIC -#define  FT_Curve_Tag_Touch_X  FT_CURVE_TAG_TOUCH_X -#define  FT_Curve_Tag_Touch_Y  FT_CURVE_TAG_TOUCH_Y    /*************************************************************************/    /*                                                                       */ @@ -482,7 +521,7 @@ FT_BEGIN_HEADER    /*            decomposition function.                                    */    /*                                                                       */    /* <Return>                                                              */ -  /*    Error code.  0 means success.                                      */ +  /*    Error code.  0~means success.                                      */    /*                                                                       */    typedef int    (*FT_Outline_MoveToFunc)( const FT_Vector*  to, @@ -490,6 +529,7 @@ FT_BEGIN_HEADER  #define FT_Outline_MoveTo_Func  FT_Outline_MoveToFunc +    /*************************************************************************/    /*                                                                       */    /* <FuncType>                                                            */ @@ -508,13 +548,14 @@ FT_BEGIN_HEADER    /*            decomposition function.                                    */    /*                                                                       */    /* <Return>                                                              */ -  /*    Error code.  0 means success.                                      */ +  /*    Error code.  0~means success.                                      */    /*                                                                       */    typedef int    (*FT_Outline_LineToFunc)( const FT_Vector*  to,                              void*             user ); -#define  FT_Outline_LineTo_Func  FT_Outline_LineToFunc +#define FT_Outline_LineTo_Func  FT_Outline_LineToFunc +    /*************************************************************************/    /*                                                                       */ @@ -538,14 +579,15 @@ FT_BEGIN_HEADER    /*               the decomposition function.                             */    /*                                                                       */    /* <Return>                                                              */ -  /*    Error code.  0 means success.                                      */ +  /*    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 +#define FT_Outline_ConicTo_Func  FT_Outline_ConicToFunc +    /*************************************************************************/    /*                                                                       */ @@ -569,7 +611,7 @@ FT_BEGIN_HEADER    /*                the decomposition function.                            */    /*                                                                       */    /* <Return>                                                              */ -  /*    Error code.  0 means success.                                      */ +  /*    Error code.  0~means success.                                      */    /*                                                                       */    typedef int    (*FT_Outline_CubicToFunc)( const FT_Vector*  control1, @@ -577,7 +619,7 @@ FT_BEGIN_HEADER                               const FT_Vector*  to,                               void*             user ); -#define  FT_Outline_CubicTo_Func  FT_Outline_CubicToFunc +#define FT_Outline_CubicTo_Func  FT_Outline_CubicToFunc    /*************************************************************************/ @@ -615,7 +657,7 @@ FT_BEGIN_HEADER    /*      y' = (x << shift) - delta                                        */    /*    }                                                                  */    /*                                                                       */ -  /*    Set the value of `shift' and `delta' to 0 to get the original      */ +  /*    Set the value of `shift' and `delta' to~0 to get the original      */    /*    point coordinates.                                                 */    /*                                                                       */    typedef struct  FT_Outline_Funcs_ @@ -648,7 +690,7 @@ FT_BEGIN_HEADER    /*    This macro converts four-letter tags to an unsigned long type.     */    /*                                                                       */    /* <Note>                                                                */ -  /*    Since many 16bit compilers don't like 32bit enumerations, you      */ +  /*    Since many 16-bit compilers don't like 32-bit enumerations, you    */    /*    should redefine this macro in case of problems to something like   */    /*    this:                                                              */    /*                                                                       */ @@ -680,7 +722,7 @@ FT_BEGIN_HEADER    /*                                                                       */    /* <Values>                                                              */    /*    FT_GLYPH_FORMAT_NONE ::                                            */ -  /*      The value 0 is reserved.                                         */ +  /*      The value~0 is reserved.                                         */    /*                                                                       */    /*    FT_GLYPH_FORMAT_COMPOSITE ::                                       */    /*      The glyph image is a composite of several other images.  This    */ @@ -700,7 +742,7 @@ FT_BEGIN_HEADER    /*                                                                       */    /*    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,  */ +  /*      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.                                                  */ @@ -812,10 +854,11 @@ FT_BEGIN_HEADER    /*                                                                       */    /* <Note>                                                                */    /*    This structure is used by the span drawing callback type named     */ -  /*    @FT_SpanFunc which takes the y-coordinate of the span as a         */ +  /*    @FT_SpanFunc which takes the y~coordinate of the span as a         */    /*    a parameter.                                                       */    /*                                                                       */ -  /*    The coverage value is always between 0 and 255.                    */ +  /*    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_    { @@ -837,7 +880,7 @@ FT_BEGIN_HEADER    /*    spans on each scan line.                                           */    /*                                                                       */    /* <Input>                                                               */ -  /*    y     :: The scanline's y-coordinate.                              */ +  /*    y     :: The scanline's y~coordinate.                              */    /*                                                                       */    /*    count :: The number of spans to draw on this scanline.             */    /*                                                                       */ @@ -854,8 +897,8 @@ FT_BEGIN_HEADER    /*                                                                       */    /*    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      */ +  /*    `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.                                       */    /*                                                                       */ @@ -868,7 +911,7 @@ FT_BEGIN_HEADER                    const FT_Span*  spans,                    void*           user ); -#define FT_Raster_Span_Func   FT_SpanFunc +#define FT_Raster_Span_Func  FT_SpanFunc    /*************************************************************************/ @@ -885,14 +928,14 @@ FT_BEGIN_HEADER    /*    per-se the TrueType spec.                                          */    /*                                                                       */    /* <Input>                                                               */ -  /*    y     :: The pixel's y-coordinate.                                 */ +  /*    y     :: The pixel's y~coordinate.                                 */    /*                                                                       */ -  /*    x     :: The pixel's x-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.                               */ +  /*   1~if the pixel is `set', 0~otherwise.                               */    /*                                                                       */    typedef int    (*FT_Raster_BitTest_Func)( int    y, @@ -913,14 +956,14 @@ FT_BEGIN_HEADER    /*    drop-out control according to the TrueType specification.          */    /*                                                                       */    /* <Input>                                                               */ -  /*    y     :: The pixel's y-coordinate.                                 */ +  /*    y     :: The pixel's y~coordinate.                                 */    /*                                                                       */ -  /*    x     :: The pixel's x-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.                              */ +  /*    1~if the pixel is `set', 0~otherwise.                              */    /*                                                                       */    typedef void    (*FT_Raster_BitSet_Func)( int    y, @@ -999,7 +1042,7 @@ FT_BEGIN_HEADER    /*                                                                       */    /*    gray_spans  :: The gray span drawing callback.                     */    /*                                                                       */ -  /*    black_spans :: The black span drawing callback.                    */ +  /*    black_spans :: The black span drawing callback.  UNIMPLEMENTED!    */    /*                                                                       */    /*    bit_test    :: The bit test callback.  UNIMPLEMENTED!              */    /*                                                                       */ @@ -1036,7 +1079,7 @@ FT_BEGIN_HEADER      const void*             source;      int                     flags;      FT_SpanFunc             gray_spans; -    FT_SpanFunc             black_spans; +    FT_SpanFunc             black_spans;  /* doesn't work! */      FT_Raster_BitTest_Func  bit_test;     /* doesn't work! */      FT_Raster_BitSet_Func   bit_set;      /* doesn't work! */      void*                   user; @@ -1060,7 +1103,7 @@ FT_BEGIN_HEADER    /*    raster :: A handle to the new raster object.                       */    /*                                                                       */    /* <Return>                                                              */ -  /*    Error code.  0 means success.                                      */ +  /*    Error code.  0~means success.                                      */    /*                                                                       */    /* <Note>                                                                */    /*    The `memory' parameter is a typeless pointer in order to avoid     */ @@ -1073,7 +1116,8 @@ FT_BEGIN_HEADER    (*FT_Raster_NewFunc)( void*       memory,                          FT_Raster*  raster ); -#define  FT_Raster_New_Func    FT_Raster_NewFunc +#define FT_Raster_New_Func  FT_Raster_NewFunc +    /*************************************************************************/    /*                                                                       */ @@ -1089,7 +1133,8 @@ FT_BEGIN_HEADER    typedef void    (*FT_Raster_DoneFunc)( FT_Raster  raster ); -#define  FT_Raster_Done_Func   FT_Raster_DoneFunc +#define FT_Raster_Done_Func  FT_Raster_DoneFunc +    /*************************************************************************/    /*                                                                       */ @@ -1123,7 +1168,8 @@ FT_BEGIN_HEADER                            unsigned char*  pool_base,                            unsigned long   pool_size ); -#define  FT_Raster_Reset_Func   FT_Raster_ResetFunc +#define FT_Raster_Reset_Func  FT_Raster_ResetFunc +    /*************************************************************************/    /*                                                                       */ @@ -1148,7 +1194,8 @@ FT_BEGIN_HEADER                              unsigned long  mode,                              void*          args ); -#define  FT_Raster_Set_Mode_Func  FT_Raster_SetModeFunc +#define FT_Raster_Set_Mode_Func  FT_Raster_SetModeFunc +    /*************************************************************************/    /*                                                                       */ @@ -1156,8 +1203,8 @@ FT_BEGIN_HEADER    /*    FT_Raster_RenderFunc                                               */    /*                                                                       */    /* <Description>                                                         */ -  /*   Invokes a given raster to scan-convert a given glyph image into a   */ -  /*   target bitmap.                                                      */ +  /*    Invoke a given raster to scan-convert a given glyph image into a   */ +  /*    target bitmap.                                                     */    /*                                                                       */    /* <Input>                                                               */    /*    raster :: A handle to the raster object.                           */ @@ -1166,7 +1213,7 @@ FT_BEGIN_HEADER    /*              store the rendering parameters.                          */    /*                                                                       */    /* <Return>                                                              */ -  /*    Error code.  0 means success.                                      */ +  /*    Error code.  0~means success.                                      */    /*                                                                       */    /* <Note>                                                                */    /*    The exact format of the source image depends on the raster's glyph */ @@ -1188,7 +1235,8 @@ FT_BEGIN_HEADER    (*FT_Raster_RenderFunc)( FT_Raster                raster,                             const FT_Raster_Params*  params ); -#define  FT_Raster_Render_Func    FT_Raster_RenderFunc +#define FT_Raster_Render_Func  FT_Raster_RenderFunc +    /*************************************************************************/    /*                                                                       */ @@ -1211,12 +1259,12 @@ FT_BEGIN_HEADER    /*                                                                       */    typedef struct  FT_Raster_Funcs_    { -    FT_Glyph_Format         glyph_format; -    FT_Raster_NewFunc       raster_new; -    FT_Raster_ResetFunc     raster_reset; -    FT_Raster_SetModeFunc   raster_set_mode; -    FT_Raster_RenderFunc    raster_render; -    FT_Raster_DoneFunc      raster_done; +    FT_Glyph_Format        glyph_format; +    FT_Raster_NewFunc      raster_new; +    FT_Raster_ResetFunc    raster_reset; +    FT_Raster_SetModeFunc  raster_set_mode; +    FT_Raster_RenderFunc   raster_render; +    FT_Raster_DoneFunc     raster_done;    } FT_Raster_Funcs; diff --git a/src/freetype2/freetype/ftincrem.h b/src/freetype2/freetype/ftincrem.h index 46bc8bd..96abede 100644 --- a/src/freetype2/freetype/ftincrem.h +++ b/src/freetype2/freetype/ftincrem.h @@ -4,7 +4,7 @@  /*                                                                         */  /*    FreeType incremental loading (specification).                        */  /*                                                                         */ -/*  Copyright 2002, 2003, 2006, 2007 by                                    */ +/*  Copyright 2002, 2003, 2006, 2007, 2008 by                              */  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */  /*                                                                         */  /*  This file is part of the FreeType project, and may only be used,       */ @@ -31,192 +31,208 @@  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. -  */ +  /*************************************************************************** +   * +   * @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_Metrics -  * -  * @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 :: -  *     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. -  */ +  /*************************************************************************** +   * +   * @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 :: +   *     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_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. -  */ +  } 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). -  */ +  /*************************************************************************** +   * +   * @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. -  * -  */ +  /*************************************************************************** +   * +   * @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, @@ -244,6 +260,7 @@ FT_BEGIN_HEADER     *   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_    { @@ -254,41 +271,42 @@ FT_BEGIN_HEADER    } 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 ); -  *       ... -  *     } -  */ +  /*************************************************************************** +   * +   * @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; @@ -297,31 +315,31 @@ FT_BEGIN_HEADER    } FT_Incremental_InterfaceRec; - /*************************************************************************** -  * -  * @type: -  *   FT_Incremental_Interface -  * -  * @description: -  *   A pointer to an @FT_Incremental_InterfaceRec structure. -  * -  */ +  /*************************************************************************** +   * +   * @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. -  * -  */ +  /*************************************************************************** +   * +   * @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/src/freetype2/freetype/ftlcdfil.h b/src/freetype2/freetype/ftlcdfil.h index 9a61377..c6201b3 100644 --- a/src/freetype2/freetype/ftlcdfil.h +++ b/src/freetype2/freetype/ftlcdfil.h @@ -5,7 +5,7 @@  /*    FreeType API for color filtering of subpixel bitmap glyphs           */  /*    (specification).                                                     */  /*                                                                         */ -/*  Copyright 2006, 2007 by                                                */ +/*  Copyright 2006, 2007, 2008 by                                          */  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */  /*                                                                         */  /*  This file is part of the FreeType project, and may only be used,       */ @@ -23,6 +23,12 @@  #include <ft2build.h>  #include FT_FREETYPE_H +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif +  FT_BEGIN_HEADER @@ -85,7 +91,7 @@ FT_BEGIN_HEADER     * @since:     *   2.3.0     */ -  typedef enum +  typedef enum  FT_LcdFilter_    {      FT_LCD_FILTER_NONE    = 0,      FT_LCD_FILTER_DEFAULT = 1, @@ -119,7 +125,7 @@ FT_BEGIN_HEADER     *     well on most LCD screens.     *     * @return: -   *   FreeType error code.  0 means success. +   *   FreeType error code.  0~means success.     *     * @note:     *   This feature is always disabled by default.  Clients must make an @@ -141,8 +147,8 @@ FT_BEGIN_HEADER     *   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. +   *   @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 diff --git a/src/freetype2/freetype/ftlist.h b/src/freetype2/freetype/ftlist.h index f3223ee..93b05fc 100644 --- a/src/freetype2/freetype/ftlist.h +++ b/src/freetype2/freetype/ftlist.h @@ -81,7 +81,7 @@ FT_BEGIN_HEADER    /*    FT_List_Find                                                       */    /*                                                                       */    /* <Description>                                                         */ -  /*    Finds the list node for a given listed object.                     */ +  /*    Find the list node for a given listed object.                      */    /*                                                                       */    /* <Input>                                                               */    /*    list :: A pointer to the parent list.                              */ @@ -101,7 +101,7 @@ FT_BEGIN_HEADER    /*    FT_List_Add                                                        */    /*                                                                       */    /* <Description>                                                         */ -  /*    Appends an element to the end of a list.                           */ +  /*    Append an element to the end of a list.                            */    /*                                                                       */    /* <InOut>                                                               */    /*    list :: A pointer to the parent list.                              */ @@ -118,7 +118,7 @@ FT_BEGIN_HEADER    /*    FT_List_Insert                                                     */    /*                                                                       */    /* <Description>                                                         */ -  /*    Inserts an element at the head of a list.                          */ +  /*    Insert an element at the head of a list.                           */    /*                                                                       */    /* <InOut>                                                               */    /*    list :: A pointer to parent list.                                  */ @@ -135,7 +135,7 @@ FT_BEGIN_HEADER    /*    FT_List_Remove                                                     */    /*                                                                       */    /* <Description>                                                         */ -  /*    Removes a node from a list.  This function doesn't check whether   */ +  /*    Remove a node from a list.  This function doesn't check whether    */    /*    the node is in the list!                                           */    /*                                                                       */    /* <Input>                                                               */ @@ -155,7 +155,7 @@ FT_BEGIN_HEADER    /*    FT_List_Up                                                         */    /*                                                                       */    /* <Description>                                                         */ -  /*    Moves a node to the head/top of a list.  Used to maintain LRU      */ +  /*    Move a node to the head/top of a list.  Used to maintain LRU       */    /*    lists.                                                             */    /*                                                                       */    /* <InOut>                                                               */ @@ -193,7 +193,7 @@ FT_BEGIN_HEADER    /*    FT_List_Iterate                                                    */    /*                                                                       */    /* <Description>                                                         */ -  /*    Parses a list and calls a given iterator function on each element. */ +  /*    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.                                          */    /*                                                                       */ @@ -242,7 +242,7 @@ FT_BEGIN_HEADER    /*    FT_List_Finalize                                                   */    /*                                                                       */    /* <Description>                                                         */ -  /*    Destroys all elements in the list as well as the list itself.      */ +  /*    Destroy all elements in the list as well as the list itself.       */    /*                                                                       */    /* <Input>                                                               */    /*    list    :: A handle to the list.                                   */ diff --git a/src/freetype2/freetype/ftlzw.h b/src/freetype2/freetype/ftlzw.h index d950653..00d4016 100644 --- a/src/freetype2/freetype/ftlzw.h +++ b/src/freetype2/freetype/ftlzw.h @@ -63,7 +63,7 @@ FT_BEGIN_HEADER    *   source :: The source stream.    *    * @return: -  *   FreeType error code.  0 means success. +  *   FreeType error code.  0~means success.    *    * @note:    *   The source stream must be opened _before_ calling this function. diff --git a/src/freetype2/freetype/ftmac.h b/src/freetype2/freetype/ftmac.h index 3c6fafe..ab5bab5 100644 --- a/src/freetype2/freetype/ftmac.h +++ b/src/freetype2/freetype/ftmac.h @@ -18,9 +18,9 @@  /***************************************************************************/  /*                                                                         */ -/* NOTE: Include this file after <freetype/freetype.h> and after the       */ -/*       Mac-specific <Types.h> header (or any other Mac header that       */ -/*       includes <Types.h>); we use Handle type.                          */ +/* NOTE: Include this file after <freetype/freetype.h> and after any       */ +/*       Mac-specific headers (because this header uses Mac types such as  */ +/*       Handle, FSSpec, FSRef, etc.)                                      */  /*                                                                         */  /***************************************************************************/ @@ -85,7 +85,7 @@ FT_BEGIN_HEADER    /*    aface      :: A handle to a new face object.                       */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    /* <Notes>                                                               */    /*    This function can be used to create @FT_Face objects from fonts    */ @@ -100,7 +100,8 @@ FT_BEGIN_HEADER    FT_New_Face_From_FOND( FT_Library  library,                           Handle      fond,                           FT_Long     face_index, -                         FT_Face    *aface ); +                         FT_Face    *aface ) +                       FT_DEPRECATED_ATTRIBUTE;    /*************************************************************************/ @@ -123,7 +124,7 @@ FT_BEGIN_HEADER    /*                  @FT_New_Face_From_FSSpec.                            */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    FT_EXPORT( FT_Error )    FT_GetFile_From_Mac_Name( const char*  fontName, @@ -151,7 +152,7 @@ FT_BEGIN_HEADER    /*                  @FT_New_Face_From_FSSpec.                            */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    FT_EXPORT( FT_Error )    FT_GetFile_From_Mac_ATS_Name( const char*  fontName, @@ -182,13 +183,14 @@ FT_BEGIN_HEADER    /*    face_index  :: Index of the face.  For passing to @FT_New_Face.    */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    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_Long*     face_index ) +                                  FT_DEPRECATED_ATTRIBUTE;    /*************************************************************************/ @@ -207,12 +209,12 @@ FT_BEGIN_HEADER    /*    spec       :: FSSpec to the font file.                             */    /*                                                                       */    /*    face_index :: The index of the face within the resource.  The      */ -  /*                  first face has index 0.                              */ +  /*                  first face has index~0.                              */    /* <Output>                                                              */    /*    aface      :: A handle to a new face object.                       */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    /* <Note>                                                                */    /*    @FT_New_Face_From_FSSpec is identical to @FT_New_Face except       */ @@ -242,12 +244,12 @@ FT_BEGIN_HEADER    /*    spec       :: FSRef to the font file.                              */    /*                                                                       */    /*    face_index :: The index of the face within the resource.  The      */ -  /*                  first face has index 0.                              */ +  /*                  first face has index~0.                              */    /* <Output>                                                              */    /*    aface      :: A handle to a new face object.                       */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    /* <Note>                                                                */    /*    @FT_New_Face_From_FSRef is identical to @FT_New_Face except        */ diff --git a/src/freetype2/freetype/ftmm.h b/src/freetype2/freetype/ftmm.h index a9ccfe7..3aefb9e 100644 --- a/src/freetype2/freetype/ftmm.h +++ b/src/freetype2/freetype/ftmm.h @@ -4,7 +4,7 @@  /*                                                                         */  /*    FreeType Multiple Master font interface (specification).             */  /*                                                                         */ -/*  Copyright 1996-2001, 2003, 2004, 2006 by                               */ +/*  Copyright 1996-2001, 2003, 2004, 2006, 2009 by                         */  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */  /*                                                                         */  /*  This file is part of the FreeType project, and may only be used,       */ @@ -44,7 +44,7 @@ FT_BEGIN_HEADER    /*    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)        */ +  /*    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.                                  */ @@ -91,12 +91,12 @@ FT_BEGIN_HEADER    /*    This structure can't be used for GX var fonts.                     */    /*                                                                       */    /* <Fields>                                                              */ -  /*    num_axis    :: Number of axes.  Cannot exceed 4.                   */ +  /*    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      */ +  /*                   even though the Type~1 specification strangely      */    /*                   allows for intermediate designs to be present. This */ -  /*                   number cannot exceed 16.                            */ +  /*                   number cannot exceed~16.                            */    /*                                                                       */    /*    axis        :: A table of axis descriptors.                        */    /*                                                                       */ @@ -187,7 +187,7 @@ FT_BEGIN_HEADER    /*    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 */ +  /*    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       */ @@ -227,7 +227,7 @@ FT_BEGIN_HEADER    /*    FT_Get_Multi_Master                                                */    /*                                                                       */    /* <Description>                                                         */ -  /*    Retrieves the Multiple Master descriptor of a given font.          */ +  /*    Retrieve the Multiple Master descriptor of a given font.           */    /*                                                                       */    /*    This function can't be used with GX fonts.                         */    /*                                                                       */ @@ -238,7 +238,7 @@ FT_BEGIN_HEADER    /*    amaster :: The Multiple Masters descriptor.                        */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    FT_EXPORT( FT_Error )    FT_Get_Multi_Master( FT_Face           face, @@ -251,18 +251,18 @@ FT_BEGIN_HEADER    /*    FT_Get_MM_Var                                                      */    /*                                                                       */    /* <Description>                                                         */ -  /*    Retrieves the Multiple Master/GX var descriptor of a given font.   */ +  /*    Retrieve the Multiple Master/GX var descriptor of a given font.    */    /*                                                                       */    /* <Input>                                                               */    /*    face    :: A handle to the source face.                            */    /*                                                                       */    /* <Output>                                                              */ -  /*    amaster :: The Multiple Masters descriptor.                        */ +  /*    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.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    FT_EXPORT( FT_Error )    FT_Get_MM_Var( FT_Face      face, @@ -290,7 +290,7 @@ FT_BEGIN_HEADER    /*    coords     :: An array of design coordinates.                      */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    FT_EXPORT( FT_Error )    FT_Set_MM_Design_Coordinates( FT_Face   face, @@ -317,7 +317,7 @@ FT_BEGIN_HEADER    /*    coords     :: An array of design coordinates.                      */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    FT_EXPORT( FT_Error )    FT_Set_Var_Design_Coordinates( FT_Face    face, @@ -345,7 +345,7 @@ FT_BEGIN_HEADER    /*                  between 0 and 1.0).                                  */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    FT_EXPORT( FT_Error )    FT_Set_MM_Blend_Coordinates( FT_Face    face, diff --git a/src/freetype2/freetype/ftmodapi.h b/src/freetype2/freetype/ftmodapi.h index 9cc32af..3c9b876 100644 --- a/src/freetype2/freetype/ftmodapi.h +++ b/src/freetype2/freetype/ftmodapi.h @@ -4,7 +4,7 @@  /*                                                                         */  /*    FreeType modules public interface (specification).                   */  /*                                                                         */ -/*  Copyright 1996-2001, 2002, 2003, 2006 by                               */ +/*  Copyright 1996-2001, 2002, 2003, 2006, 2008, 2009 by                   */  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */  /*                                                                         */  /*  This file is part of the FreeType project, and may only be used,       */ @@ -78,12 +78,50 @@ FT_BEGIN_HEADER    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 finalize.                                  */ +  /*                                                                       */ +  /*    name ::   The name of the interface in the module.                 */ +  /*                                                                       */    typedef FT_Module_Interface    (*FT_Module_Requester)( FT_Module    module,                            const char*  name ); @@ -112,14 +150,11 @@ FT_BEGIN_HEADER    /*                       as a 16.16 fixed number (major.minor).  Starts  */    /*                       at version 2.0, i.e., 0x20000.                  */    /*                                                                       */ -  /*    module_init     :: A function used to initialize (not create) a    */ -  /*                       new module object.                              */ +  /*    module_init     :: The initializing function.                      */    /*                                                                       */ -  /*    module_done     :: A function used to finalize (not destroy) a     */ -  /*                       given module object                             */ +  /*    module_done     :: The finalizing function.                        */    /*                                                                       */ -  /*    get_interface   :: Queries a given module for a specific           */ -  /*                       interface by name.                              */ +  /*    get_interface   :: The interface requesting function.              */    /*                                                                       */    typedef struct  FT_Module_Class_    { @@ -144,7 +179,7 @@ FT_BEGIN_HEADER    /*    FT_Add_Module                                                      */    /*                                                                       */    /* <Description>                                                         */ -  /*    Adds a new module to a given library instance.                     */ +  /*    Add a new module to a given library instance.                      */    /*                                                                       */    /* <InOut>                                                               */    /*    library :: A handle to the library object.                         */ @@ -153,7 +188,7 @@ FT_BEGIN_HEADER    /*    clazz   :: A pointer to class descriptor for the module.           */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    /* <Note>                                                                */    /*    An error will be returned if a module already exists by that name, */ @@ -170,7 +205,7 @@ FT_BEGIN_HEADER    /*    FT_Get_Module                                                      */    /*                                                                       */    /* <Description>                                                         */ -  /*    Finds a module by its name.                                        */ +  /*    Find a module by its name.                                         */    /*                                                                       */    /* <Input>                                                               */    /*    library     :: A handle to the library object.                     */ @@ -178,7 +213,7 @@ FT_BEGIN_HEADER    /*    module_name :: The module's name (as an ASCII string).             */    /*                                                                       */    /* <Return>                                                              */ -  /*    A module handle.  0 if none was found.                             */ +  /*    A module handle.  0~if none was found.                             */    /*                                                                       */    /* <Note>                                                                */    /*    FreeType's internal modules aren't documented very well, and you   */ @@ -195,7 +230,7 @@ FT_BEGIN_HEADER    /*    FT_Remove_Module                                                   */    /*                                                                       */    /* <Description>                                                         */ -  /*    Removes a given module from a library instance.                    */ +  /*    Remove a given module from a library instance.                     */    /*                                                                       */    /* <InOut>                                                               */    /*    library :: A handle to a library object.                           */ @@ -204,7 +239,7 @@ FT_BEGIN_HEADER    /*    module  :: A handle to a module object.                            */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    /* <Note>                                                                */    /*    The module object is destroyed by the function in case of success. */ @@ -224,6 +259,10 @@ FT_BEGIN_HEADER    /*    from a given memory object.  It is thus possible to use libraries  */    /*    with distinct memory allocators within the same program.           */    /*                                                                       */ +  /*    Normally, you would call this function (followed by a call to      */ +  /*    @FT_Add_Default_Modules or a series of calls to @FT_Add_Module)    */ +  /*    instead of @FT_Init_FreeType to initialize the FreeType library.   */ +  /*                                                                       */    /* <Input>                                                               */    /*    memory   :: A handle to the original memory object.                */    /*                                                                       */ @@ -231,7 +270,7 @@ FT_BEGIN_HEADER    /*    alibrary :: A pointer to handle of a new library object.           */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    FT_EXPORT( FT_Error )    FT_New_Library( FT_Memory    memory, @@ -244,14 +283,14 @@ FT_BEGIN_HEADER    /*    FT_Done_Library                                                    */    /*                                                                       */    /* <Description>                                                         */ -  /*    Discards a given library object.  This closes all drivers and      */ +  /*    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.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    FT_EXPORT( FT_Error )    FT_Done_Library( FT_Library  library ); @@ -268,7 +307,7 @@ FT_BEGIN_HEADER    /*    FT_Set_Debug_Hook                                                  */    /*                                                                       */    /* <Description>                                                         */ -  /*    Sets a debug hook function for debugging the interpreter of a font */ +  /*    Set a debug hook function for debugging the interpreter of a font  */    /*    format.                                                            */    /*                                                                       */    /* <InOut>                                                               */ @@ -283,7 +322,7 @@ FT_BEGIN_HEADER    /*                                                                       */    /* <Note>                                                                */    /*    Currently, four debug hook slots are available, but only two (for  */ -  /*    the TrueType and the Type 1 interpreter) are defined.              */ +  /*    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.      */ @@ -301,7 +340,7 @@ FT_BEGIN_HEADER    /*    FT_Add_Default_Modules                                             */    /*                                                                       */    /* <Description>                                                         */ -  /*    Adds the set of default drivers to a given library object.         */ +  /*    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).         */    /*                                                                       */ @@ -362,7 +401,7 @@ FT_BEGIN_HEADER     *       2.2     *     */ -  typedef enum +  typedef enum  FT_TrueTypeEngineType_    {      FT_TRUETYPE_ENGINE_TYPE_NONE = 0,      FT_TRUETYPE_ENGINE_TYPE_UNPATENTED, @@ -377,7 +416,7 @@ FT_BEGIN_HEADER     *     FT_Get_TrueType_Engine_Type     *     *  @description: -   *     Return a @FT_TrueTypeEngineType value to indicate which level of +   *     Return an @FT_TrueTypeEngineType value to indicate which level of     *     the TrueType virtual machine a given library instance supports.     *     *  @input: diff --git a/src/freetype2/freetype/ftotval.h b/src/freetype2/freetype/ftotval.h index 7c488fd..027f2e8 100644 --- a/src/freetype2/freetype/ftotval.h +++ b/src/freetype2/freetype/ftotval.h @@ -4,7 +4,7 @@  /*                                                                         */  /*    FreeType API for validating OpenType tables (specification).         */  /*                                                                         */ -/*  Copyright 2004, 2005, 2006 by                                          */ +/*  Copyright 2004, 2005, 2006, 2007 by                                    */  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */  /*                                                                         */  /*  This file is part of the FreeType project, and may only be used,       */ @@ -56,7 +56,7 @@ FT_BEGIN_HEADER    /*                                                                       */    /* <Description>                                                         */    /*    This section contains the declaration of functions to validate     */ -  /*    some OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF).               */ +  /*    some OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH).         */    /*                                                                       */    /*************************************************************************/ @@ -86,8 +86,11 @@ FT_BEGIN_HEADER    *    FT_VALIDATE_JSTF ::    *      Validate JSTF table.    * +  *    FT_VALIDATE_MATH :: +  *      Validate MATH table. +  *    *    FT_VALIDATE_OT :: -  *      Validate all OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF). +  *      Validate all OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH).    *    */  #define FT_VALIDATE_BASE  0x0100 @@ -95,12 +98,14 @@ FT_BEGIN_HEADER  #define FT_VALIDATE_GPOS  0x0400  #define FT_VALIDATE_GSUB  0x0800  #define FT_VALIDATE_JSTF  0x1000 +#define FT_VALIDATE_MATH  0x2000  #define FT_VALIDATE_OT  FT_VALIDATE_BASE | \                          FT_VALIDATE_GDEF | \                          FT_VALIDATE_GPOS | \                          FT_VALIDATE_GSUB | \ -                        FT_VALIDATE_JSTF +                        FT_VALIDATE_JSTF | \ +                        FT_VALIDATE_MATH    /* */ @@ -140,7 +145,7 @@ FT_BEGIN_HEADER    *       A pointer to the JSTF table.    *    * @return: -  *   FreeType error code.  0 means success. +  *   FreeType error code.  0~means success.    *    * @note:    *   This function only works with OpenType fonts, returning an error diff --git a/src/freetype2/freetype/ftoutln.h b/src/freetype2/freetype/ftoutln.h index 786ae13..d7d01e8 100644 --- a/src/freetype2/freetype/ftoutln.h +++ b/src/freetype2/freetype/ftoutln.h @@ -5,7 +5,7 @@  /*    Support for the FT_Outline type used to store glyph shapes of        */  /*    most scalable font formats (specification).                          */  /*                                                                         */ -/*  Copyright 1996-2001, 2002, 2003, 2005, 2006, 2007 by                   */ +/*  Copyright 1996-2001, 2002, 2003, 2005, 2006, 2007, 2008, 2009 by       */  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */  /*                                                                         */  /*  This file is part of the FreeType project, and may only be used,       */ @@ -84,7 +84,7 @@ FT_BEGIN_HEADER    /*    FT_Outline_Decompose                                               */    /*                                                                       */    /* <Description>                                                         */ -  /*    Walks over an outline's structure to decompose it into individual  */ +  /*    Walk over an outline's structure to decompose it into individual   */    /*    segments and Bézier arcs.  This function is also able to emit      */    /*    `move to' and `close to' operations to indicate the start and end  */    /*    of new contours in the outline.                                    */ @@ -92,7 +92,7 @@ FT_BEGIN_HEADER    /* <Input>                                                               */    /*    outline        :: A pointer to the source target.                  */    /*                                                                       */ -  /*    func_interface :: A table of `emitters', i.e,. function pointers   */ +  /*    func_interface :: A table of `emitters', i.e., function pointers   */    /*                      called during decomposition to indicate path     */    /*                      operations.                                      */    /*                                                                       */ @@ -103,7 +103,7 @@ FT_BEGIN_HEADER    /*                      decomposition.                                   */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    FT_EXPORT( FT_Error )    FT_Outline_Decompose( FT_Outline*              outline, @@ -117,7 +117,7 @@ FT_BEGIN_HEADER    /*    FT_Outline_New                                                     */    /*                                                                       */    /* <Description>                                                         */ -  /*    Creates a new outline of a given size.                             */ +  /*    Create a new outline of a given size.                              */    /*                                                                       */    /* <Input>                                                               */    /*    library     :: A handle to the library object from where the       */ @@ -130,11 +130,10 @@ FT_BEGIN_HEADER    /*    numContours :: The maximal number of contours within the outline.  */    /*                                                                       */    /* <Output>                                                              */ -  /*    anoutline   :: A handle to the new outline.  NULL in case of       */ -  /*                   error.                                              */ +  /*    anoutline   :: A handle to the new outline.                        */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    /* <Note>                                                                */    /*    The reason why this function takes a `library' parameter is simply */ @@ -160,7 +159,7 @@ FT_BEGIN_HEADER    /*    FT_Outline_Done                                                    */    /*                                                                       */    /* <Description>                                                         */ -  /*    Destroys an outline created with @FT_Outline_New.                  */ +  /*    Destroy an outline created with @FT_Outline_New.                   */    /*                                                                       */    /* <Input>                                                               */    /*    library :: A handle of the library object used to allocate the     */ @@ -169,7 +168,7 @@ FT_BEGIN_HEADER    /*    outline :: A pointer to the outline object to be discarded.        */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    /* <Note>                                                                */    /*    If the outline's `owner' field is not set, only the outline        */ @@ -200,7 +199,7 @@ FT_BEGIN_HEADER    /*    outline :: A handle to a source outline.                           */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    FT_EXPORT( FT_Error )    FT_Outline_Check( FT_Outline*  outline ); @@ -212,7 +211,7 @@ FT_BEGIN_HEADER    /*    FT_Outline_Get_CBox                                                */    /*                                                                       */    /* <Description>                                                         */ -  /*    Returns an outline's `control box'.  The control box encloses all  */ +  /*    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  */ @@ -240,7 +239,7 @@ FT_BEGIN_HEADER    /*    FT_Outline_Translate                                               */    /*                                                                       */    /* <Description>                                                         */ -  /*    Applies a simple translation to the points of an outline.          */ +  /*    Apply a simple translation to the points of an outline.            */    /*                                                                       */    /* <InOut>                                                               */    /*    outline :: A pointer to the target outline descriptor.             */ @@ -262,7 +261,7 @@ FT_BEGIN_HEADER    /*    FT_Outline_Copy                                                    */    /*                                                                       */    /* <Description>                                                         */ -  /*    Copies an outline into another one.  Both objects must have the    */ +  /*    Copy an outline into another one.  Both objects must have the      */    /*    same sizes (number of points & number of contours) when this       */    /*    function is called.                                                */    /*                                                                       */ @@ -273,7 +272,7 @@ FT_BEGIN_HEADER    /*    target :: A handle to the target outline.                          */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    FT_EXPORT( FT_Error )    FT_Outline_Copy( const FT_Outline*  source, @@ -286,7 +285,7 @@ FT_BEGIN_HEADER    /*    FT_Outline_Transform                                               */    /*                                                                       */    /* <Description>                                                         */ -  /*    Applies a simple 2x2 matrix to all of an outline's points.  Useful */ +  /*    Apply a simple 2x2 matrix to all of an outline's points.  Useful   */    /*    for applying rotations, slanting, flipping, etc.                   */    /*                                                                       */    /* <InOut>                                                               */ @@ -310,7 +309,7 @@ FT_BEGIN_HEADER    /*    FT_Outline_Embolden                                                */    /*                                                                       */    /* <Description>                                                         */ -  /*    Emboldens an outline.  The new outline will be at most 4 times     */ +  /*    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.                                       */    /*                                                                       */ @@ -325,7 +324,7 @@ FT_BEGIN_HEADER    /*                26.6 pixel format.                                     */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    /* <Note>                                                                */    /*    The used algorithm to increase or decrease the thickness of the    */ @@ -333,6 +332,9 @@ FT_BEGIN_HEADER    /*    situations like acute angles or intersections are sometimes        */    /*    handled incorrectly.                                               */    /*                                                                       */ +  /*    If you need `better' metrics values you should call                */ +  /*    @FT_Outline_Get_CBox ot @FT_Outline_Get_BBox.                      */ +  /*                                                                       */    /*    Example call:                                                      */    /*                                                                       */    /*    {                                                                  */ @@ -352,14 +354,14 @@ FT_BEGIN_HEADER    /*    FT_Outline_Reverse                                                 */    /*                                                                       */    /* <Description>                                                         */ -  /*    Reverses the drawing direction of an outline.  This is used to     */ +  /*    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 functions toggles the bit flag @FT_OUTLINE_REVERSE_FILL in    */ +  /*    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     */ @@ -375,7 +377,7 @@ FT_BEGIN_HEADER    /*    FT_Outline_Get_Bitmap                                              */    /*                                                                       */    /* <Description>                                                         */ -  /*    Renders an outline within a bitmap.  The outline's image is simply */ +  /*    Render an outline within a bitmap.  The outline's image is simply  */    /*    OR-ed to the target bitmap.                                        */    /*                                                                       */    /* <Input>                                                               */ @@ -387,14 +389,19 @@ FT_BEGIN_HEADER    /*    abitmap :: A pointer to the target bitmap descriptor.              */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    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!                       */ +  /*    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, @@ -407,8 +414,8 @@ FT_BEGIN_HEADER    /*    FT_Outline_Render                                                  */    /*                                                                       */    /* <Description>                                                         */ -  /*    Renders an outline within a bitmap using the current scan-convert. */ -  /*    This functions uses an @FT_Raster_Params structure as an argument, */ +  /*    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.                                                               */    /*                                                                       */ @@ -422,7 +429,7 @@ FT_BEGIN_HEADER    /*               describe the rendering operation.                       */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    /* <Note>                                                                */    /*    You should know what you are doing and how @FT_Raster_Params works */ @@ -432,6 +439,11 @@ FT_BEGIN_HEADER    /*    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, @@ -446,7 +458,7 @@ FT_BEGIN_HEADER    * @description:    *   A list of values used to describe an outline's contour orientation.    * -  *   The TrueType and Postscript specifications use different conventions +  *   The TrueType and PostScript specifications use different conventions    *   to determine whether outline contours should be filled or unfilled.    *    * @values: @@ -455,7 +467,7 @@ FT_BEGIN_HEADER    *     be filled, and counter-clockwise ones must be unfilled.    *    *   FT_ORIENTATION_POSTSCRIPT :: -  *     According to the Postscript specification, counter-clockwise contours +  *     According to the PostScript specification, counter-clockwise contours    *     must be filled, and clockwise ones must be unfilled.    *    *   FT_ORIENTATION_FILL_RIGHT :: @@ -465,7 +477,7 @@ FT_BEGIN_HEADER    *    *   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 +  *     remember that in PostScript, everything that is to the left of    *     the drawing direction of a contour must be filled.    *    *   FT_ORIENTATION_NONE :: @@ -473,7 +485,7 @@ FT_BEGIN_HEADER    *     the glyph have different orientation.    *    */ -  typedef enum +  typedef enum  FT_Orientation_    {      FT_ORIENTATION_TRUETYPE   = 0,      FT_ORIENTATION_POSTSCRIPT = 1, diff --git a/src/freetype2/freetype/ftpfr.h b/src/freetype2/freetype/ftpfr.h index e2801fd..0b7b7d4 100644 --- a/src/freetype2/freetype/ftpfr.h +++ b/src/freetype2/freetype/ftpfr.h @@ -4,7 +4,7 @@  /*                                                                         */  /*    FreeType API for accessing PFR-specific data (specification only).   */  /*                                                                         */ -/*  Copyright 2002, 2003, 2004, 2006 by                                    */ +/*  Copyright 2002, 2003, 2004, 2006, 2008, 2009 by                        */  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */  /*                                                                         */  /*  This file is part of the FreeType project, and may only be used,       */ @@ -62,8 +62,8 @@ FT_BEGIN_HEADER    *    * @output:    *    aoutline_resolution :: -  *      Outline resolution.  This is equivalent to `face->units_per_EM'. -  *      Optional (parameter can be NULL). +  *      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' @@ -73,14 +73,14 @@ FT_BEGIN_HEADER    *      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) +  *      can be NULL).    *    *    ametrics_y_scale ::    *      Same as `ametrics_x_scale' but for the vertical direction. -  *      optional (parameter can be NULL) +  *      optional (parameter can be NULL).    *    * @return: -  *    FreeType error code.  0 means success. +  *    FreeType error code.  0~means success.    *    * @note:    *   If the input face is not a PFR, this function will return an error. @@ -115,7 +115,7 @@ FT_BEGIN_HEADER    *    avector :: A kerning vector.    *    * @return: -  *    FreeType error code.  0 means success. +  *    FreeType error code.  0~means success.    *    * @note:    *    This function always return distances in original PFR metrics @@ -150,7 +150,7 @@ FT_BEGIN_HEADER    *    aadvance :: The glyph advance in metrics units.    *    * @return: -  *    FreeType error code.  0 means success. +  *    FreeType error code.  0~means success.    *    * @note:    *    You can use the `x_scale' or `y_scale' results of @FT_Get_PFR_Metrics diff --git a/src/freetype2/freetype/ftrender.h b/src/freetype2/freetype/ftrender.h index 5b07f08..41c31ea 100644 --- a/src/freetype2/freetype/ftrender.h +++ b/src/freetype2/freetype/ftrender.h @@ -124,27 +124,32 @@ FT_BEGIN_HEADER    /*    The renderer module class descriptor.                              */    /*                                                                       */    /* <Fields>                                                              */ -  /*    root         :: The root @FT_Module_Class fields.                  */ +  /*    root            :: The root @FT_Module_Class fields.               */    /*                                                                       */ -  /*    glyph_format :: The glyph image format this renderer handles.      */ +  /*    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.                    */ +  /*    render_glyph    :: A method used to render the image that is in a  */ +  /*                       given glyph slot into a bitmap.                 */    /*                                                                       */ -  /*    set_mode     :: A method used to pass additional parameters.       */ +  /*    transform_glyph :: A method used to transform the image that is in */ +  /*                       a given glyph slot.                             */    /*                                                                       */ -  /*    raster_class :: For @FT_GLYPH_FORMAT_OUTLINE renderers only.  This */ -  /*                    is a pointer to its raster's class.                */ +  /*    get_glyph_cbox  :: A method used to access the glyph's cbox.       */    /*                                                                       */ -  /*    raster       :: For @FT_GLYPH_FORMAT_OUTLINE renderers only.  This */ -  /*                    is a pointer to the corresponding raster object,   */ -  /*                    if any.                                            */ +  /*    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.        */ +  /*                                                                       */ +  /*    raster          :: For @FT_GLYPH_FORMAT_OUTLINE renderers only.    */ +  /*                       This is a pointer to the corresponding raster   */ +  /*                       object, if any.                                 */    /*                                                                       */    typedef struct  FT_Renderer_Class_    { -    FT_Module_Class       root; +    FT_Module_Class            root; -    FT_Glyph_Format       glyph_format; +    FT_Glyph_Format            glyph_format;      FT_Renderer_RenderFunc     render_glyph;      FT_Renderer_TransformFunc  transform_glyph; @@ -162,7 +167,7 @@ FT_BEGIN_HEADER    /*    FT_Get_Renderer                                                    */    /*                                                                       */    /* <Description>                                                         */ -  /*    Retrieves the current renderer for a given glyph format.           */ +  /*    Retrieve the current renderer for a given glyph format.            */    /*                                                                       */    /* <Input>                                                               */    /*    library :: A handle to the library object.                         */ @@ -170,7 +175,7 @@ FT_BEGIN_HEADER    /*    format  :: The glyph format.                                       */    /*                                                                       */    /* <Return>                                                              */ -  /*    A renderer handle.  0 if none found.                               */ +  /*    A renderer handle.  0~if none found.                               */    /*                                                                       */    /* <Note>                                                                */    /*    An error will be returned if a module already exists by that name, */ @@ -190,7 +195,7 @@ FT_BEGIN_HEADER    /*    FT_Set_Renderer                                                    */    /*                                                                       */    /* <Description>                                                         */ -  /*    Sets the current renderer to use, and set additional mode.         */ +  /*    Set the current renderer to use, and set additional mode.          */    /*                                                                       */    /* <InOut>                                                               */    /*    library    :: A handle to the library object.                      */ @@ -203,7 +208,7 @@ FT_BEGIN_HEADER    /*    parameters :: Additional parameters.                               */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    /* <Note>                                                                */    /*    In case of success, the renderer will be used to convert glyph     */ diff --git a/src/freetype2/freetype/ftsizes.h b/src/freetype2/freetype/ftsizes.h index 622df16..3e548cc 100644 --- a/src/freetype2/freetype/ftsizes.h +++ b/src/freetype2/freetype/ftsizes.h @@ -4,7 +4,7 @@  /*                                                                         */  /*    FreeType size objects management (specification).                    */  /*                                                                         */ -/*  Copyright 1996-2001, 2003, 2004, 2006 by                               */ +/*  Copyright 1996-2001, 2003, 2004, 2006, 2009 by                         */  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */  /*                                                                         */  /*  This file is part of the FreeType project, and may only be used,       */ @@ -89,7 +89,7 @@ FT_BEGIN_HEADER    /*    asize :: A handle to a new size object.                            */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    /* <Note>                                                                */    /*    You need to call @FT_Activate_Size in order to select the new size */ @@ -115,7 +115,7 @@ FT_BEGIN_HEADER    /*    size :: A handle to a target size object.                          */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    FT_EXPORT( FT_Error )    FT_Done_Size( FT_Size  size ); @@ -129,8 +129,8 @@ FT_BEGIN_HEADER    /* <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 last-created one to   */ -  /*    determine the `current character pixel size'.                      */ +  /*    @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.                                                            */ @@ -139,7 +139,7 @@ FT_BEGIN_HEADER    /*    size :: A handle to a target size object.                          */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    /* <Note>                                                                */    /*    If `face' is the size's parent face object, this function changes  */ diff --git a/src/freetype2/freetype/ftsnames.h b/src/freetype2/freetype/ftsnames.h index 003cbcd..f20b409 100644 --- a/src/freetype2/freetype/ftsnames.h +++ b/src/freetype2/freetype/ftsnames.h @@ -7,7 +7,7 @@  /*                                                                         */  /*    This is _not_ used to retrieve glyph names!                          */  /*                                                                         */ -/*  Copyright 1996-2001, 2002, 2003, 2006 by                               */ +/*  Copyright 1996-2001, 2002, 2003, 2006, 2009 by                         */  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */  /*                                                                         */  /*  This file is part of the FreeType project, and may only be used,       */ @@ -48,7 +48,7 @@ FT_BEGIN_HEADER    /*    Access the names embedded in TrueType and OpenType files.          */    /*                                                                       */    /* <Description>                                                         */ -  /*    The TrueType and OpenType specification allow the inclusion of     */ +  /*    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.                         */ @@ -114,7 +114,7 @@ FT_BEGIN_HEADER    /*    FT_Get_Sfnt_Name_Count                                             */    /*                                                                       */    /* <Description>                                                         */ -  /*    Retrieves the number of name strings in the SFNT `name' table.     */ +  /*    Retrieve the number of name strings in the SFNT `name' table.      */    /*                                                                       */    /* <Input>                                                               */    /*    face :: A handle to the source face.                               */ @@ -132,7 +132,7 @@ FT_BEGIN_HEADER    /*    FT_Get_Sfnt_Name                                                   */    /*                                                                       */    /* <Description>                                                         */ -  /*    Retrieves a string of the SFNT `name' table for a given index.     */ +  /*    Retrieve a string of the SFNT `name' table for a given index.      */    /*                                                                       */    /* <Input>                                                               */    /*    face  :: A handle to the source face.                              */ @@ -143,11 +143,12 @@ FT_BEGIN_HEADER    /*    aname :: The indexed @FT_SfntName structure.                       */    /*                                                                       */    /* <Return>                                                              */ -  /*    FreeType error code.  0 means success.                             */ +  /*    FreeType error code.  0~means success.                             */    /*                                                                       */    /* <Note>                                                                */    /*    The `string' array returned in the `aname' structure is not        */ -  /*    null-terminated.                                                   */ +  /*    null-terminated.  The application should deallocate it if it is no */ +  /*    longer in use.                                                     */    /*                                                                       */    /*    Use @FT_Get_Sfnt_Name_Count to get the total number of available   */    /*    `name' table entries, then do a loop until you get the right       */ diff --git a/src/freetype2/freetype/ftstroke.h b/src/freetype2/freetype/ftstroke.h index 738b43c..3afb87d 100644 --- a/src/freetype2/freetype/ftstroke.h +++ b/src/freetype2/freetype/ftstroke.h @@ -4,7 +4,7 @@  /*                                                                         */  /*    FreeType path stroker (specification).                               */  /*                                                                         */ -/*  Copyright 2002, 2003, 2004, 2005, 2006 by                              */ +/*  Copyright 2002, 2003, 2004, 2005, 2006, 2008, 2009 by                  */  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */  /*                                                                         */  /*  This file is part of the FreeType project, and may only be used,       */ @@ -84,7 +84,7 @@ FT_BEGIN_HEADER     *     is too closed (this is useful to avoid unpleasant spikes     *     in beveled rendering).     */ -  typedef enum +  typedef enum  FT_Stroker_LineJoin_    {      FT_STROKER_LINEJOIN_ROUND = 0,      FT_STROKER_LINEJOIN_BEVEL, @@ -115,7 +115,7 @@ FT_BEGIN_HEADER     *     The end of lines is rendered as a square around the     *     last point.     */ -  typedef enum +  typedef enum  FT_Stroker_LineCap_    {      FT_STROKER_LINECAP_BUTT = 0,      FT_STROKER_LINECAP_ROUND, @@ -149,7 +149,7 @@ FT_BEGIN_HEADER     *   You can however use @FT_Outline_GetInsideBorder and     *   @FT_Outline_GetOutsideBorder to get these.     */ -  typedef enum +  typedef enum  FT_StrokerBorder_    {      FT_STROKER_BORDER_LEFT = 0,      FT_STROKER_BORDER_RIGHT @@ -171,7 +171,7 @@ FT_BEGIN_HEADER     *     The source outline handle.     *     * @return: -   *   The border index.  @FT_STROKER_BORDER_LEFT for empty or invalid +   *   The border index.  @FT_STROKER_BORDER_RIGHT for empty or invalid     *   outlines.     */    FT_EXPORT( FT_StrokerBorder ) @@ -216,7 +216,7 @@ FT_BEGIN_HEADER     *     A new stroker object handle.  NULL in case of error.     *     * @return: -   *    FreeType error code.  0 means success. +   *    FreeType error code.  0~means success.     */    FT_EXPORT( FT_Error )    FT_Stroker_New( FT_Library   library, @@ -249,7 +249,7 @@ FT_BEGIN_HEADER     *     expressed as 16.16 fixed point value.     *     * @note: -   *   The radius is expressed in the same units that the outline +   *   The radius is expressed in the same units as the outline     *   coordinates.     */    FT_EXPORT( void ) @@ -297,18 +297,18 @@ FT_BEGIN_HEADER     *     The source outline.     *     *   opened :: -   *     A boolean.  If 1, the outline is treated as an open path instead +   *     A boolean.  If~1, the outline is treated as an open path instead     *     of a closed one.     *     * @return: -   *   FreeType error code.  0 means success. +   *   FreeType error code.  0~means success.     *     * @note: -   *   If `opened' is 0 (the default), the outline is treated as a closed -   *   path, and the stroker will generate two distinct `border' outlines. +   *   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 will generate a single `stroke' outline. +   *   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.     */ @@ -334,10 +334,10 @@ FT_BEGIN_HEADER     *     A pointer to the start vector.     *     *   open :: -   *     A boolean.  If 1, the sub-path is treated as an open one. +   *     A boolean.  If~1, the sub-path is treated as an open one.     *     * @return: -   *   FreeType error code.  0 means success. +   *   FreeType error code.  0~means success.     *     * @note:     *   This function is useful when you need to stroke a path that is @@ -362,11 +362,11 @@ FT_BEGIN_HEADER     *     The target stroker handle.     *     * @return: -   *   FreeType error code.  0 means success. +   *   FreeType error code.  0~means success.     *     * @note:     *   You should call this function after @FT_Stroker_BeginSubPath. -   *   If the subpath was not `opened', this function will `draw' a +   *   If the subpath was not `opened', this function `draws' a     *   single line segment to the start position when needed.     */    FT_EXPORT( FT_Error ) @@ -390,7 +390,7 @@ FT_BEGIN_HEADER     *     A pointer to the destination point.     *     * @return: -   *   FreeType error code.  0 means success. +   *   FreeType error code.  0~means success.     *     * @note:     *   You should call this function between @FT_Stroker_BeginSubPath and @@ -421,7 +421,7 @@ FT_BEGIN_HEADER     *     A pointer to the destination point.     *     * @return: -   *   FreeType error code.  0 means success. +   *   FreeType error code.  0~means success.     *     * @note:     *   You should call this function between @FT_Stroker_BeginSubPath and @@ -456,7 +456,7 @@ FT_BEGIN_HEADER     *     A pointer to the destination point.     *     * @return: -   *   FreeType error code.  0 means success. +   *   FreeType error code.  0~means success.     *     * @note:     *   You should call this function between @FT_Stroker_BeginSubPath and @@ -476,7 +476,7 @@ FT_BEGIN_HEADER     *     * @description:     *   Call this function once you have finished parsing your paths -   *   with the stroker.  It will return the number of points and +   *   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.     * @@ -495,7 +495,7 @@ FT_BEGIN_HEADER     *     The number of contours.     *     * @return: -   *   FreeType error code.  0 means success. +   *   FreeType error code.  0~means success.     *     * @note:     *   When an outline, or a sub-path, is `closed', the stroker generates @@ -525,8 +525,8 @@ FT_BEGIN_HEADER     *   export the corresponding border to your own @FT_Outline     *   structure.     * -   *   Note that this function will append the border points and -   *   contours to your outline, but will not try to resize its +   *   Note that this function appends the border points and +   *   contours to your outline, but does not try to resize its     *   arrays.     *     * @input: @@ -583,7 +583,7 @@ FT_BEGIN_HEADER     *     The number of contours.     *     * @return: -   *   FreeType error code.  0 means success. +   *   FreeType error code.  0~means success.     */    FT_EXPORT( FT_Error )    FT_Stroker_GetCounts( FT_Stroker  stroker, @@ -598,10 +598,10 @@ FT_BEGIN_HEADER     *     * @description:     *   Call this function after @FT_Stroker_GetBorderCounts to -   *   export the all borders to your own @FT_Outline structure. +   *   export all borders to your own @FT_Outline structure.     * -   *   Note that this function will append the border points and -   *   contours to your outline, but will not try to resize its +   *   Note that this function appends the border points and +   *   contours to your outline, but does not try to resize its     *   arrays.     *     * @input: @@ -649,11 +649,11 @@ FT_BEGIN_HEADER     *     A stroker handle.     *     *   destroy :: -   *     A Boolean.  If 1, the source glyph object is destroyed +   *     A Boolean.  If~1, the source glyph object is destroyed     *     on success.     *     * @return: -   *    FreeType error code.  0 means success. +   *    FreeType error code.  0~means success.     *     * @note:     *   The source glyph is untouched in case of error. @@ -682,15 +682,15 @@ FT_BEGIN_HEADER     *     A stroker handle.     *     *   inside :: -   *     A Boolean.  If 1, return the inside border, otherwise +   *     A Boolean.  If~1, return the inside border, otherwise     *     the outside border.     *     *   destroy :: -   *     A Boolean.  If 1, the source glyph object is destroyed +   *     A Boolean.  If~1, the source glyph object is destroyed     *     on success.     *     * @return: -   *    FreeType error code.  0 means success. +   *    FreeType error code.  0~means success.     *     * @note:     *   The source glyph is untouched in case of error. diff --git a/src/freetype2/freetype/ftsynth.h b/src/freetype2/freetype/ftsynth.h index 36984bf..a068b79 100644 --- a/src/freetype2/freetype/ftsynth.h +++ b/src/freetype2/freetype/ftsynth.h @@ -5,7 +5,7 @@  /*    FreeType synthesizing code for emboldening and slanting              */  /*    (specification).                                                     */  /*                                                                         */ -/*  Copyright 2000-2001, 2003, 2006 by                                     */ +/*  Copyright 2000-2001, 2003, 2006, 2008 by                               */  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */  /*                                                                         */  /*  This file is part of the FreeType project, and may only be used,       */ @@ -23,7 +23,7 @@    /*************************************************************************/    /*************************************************************************/    /*********                                                       *********/ -  /*********        WARNING, THIS IS ALPHA CODE, THIS API          *********/ +  /*********        WARNING, THIS IS ALPHA CODE!  THIS API         *********/    /*********    IS DUE TO CHANGE UNTIL STRICTLY NOTIFIED BY THE    *********/    /*********            FREETYPE DEVELOPMENT TEAM                  *********/    /*********                                                       *********/ @@ -34,6 +34,13 @@    /*************************************************************************/ +  /* 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__  #define __FTSYNTH_H__ @@ -50,20 +57,20 @@  FT_BEGIN_HEADER -  /* Make sure slot owns slot->bitmap. */ -  FT_EXPORT( FT_Error ) -  FT_GlyphSlot_Own_Bitmap( FT_GlyphSlot  slot ); - -  /* Do not use this function directly!  Copy the code to */ -  /* your application and modify it to suit your need.    */ +  /* 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 metrics are estimates only; if you need   */ +  /* precise values you should call @FT_Outline_Get_CBox.                  */    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/src/freetype2/freetype/ftsystem.h b/src/freetype2/freetype/ftsystem.h index 59cd019..a95b2c7 100644 --- a/src/freetype2/freetype/ftsystem.h +++ b/src/freetype2/freetype/ftsystem.h @@ -82,7 +82,7 @@ FT_BEGIN_HEADER     *     The size in bytes to allocate.     *     * @return: -   *   Address of new memory block.  0 in case of failure. +   *   Address of new memory block.  0~in case of failure.     *     */    typedef void* @@ -133,7 +133,7 @@ FT_BEGIN_HEADER     *     The block's current address.     *     * @return: -   *   New block address.  0 in case of memory shortage. +   *   New block address.  0~in case of memory shortage.     *     * @note:     *   In case of error, the old block must still be available. @@ -152,7 +152,7 @@ FT_BEGIN_HEADER     *   FT_MemoryRec     *     * @description: -   *   A structure used to describe a given memory manager to FreeType 2. +   *   A structure used to describe a given memory manager to FreeType~2.     *     * @fields:     *   user :: @@ -240,7 +240,7 @@ FT_BEGIN_HEADER     *     * @note:     *   This function might be called to perform a seek or skip operation -   *   with a `count' of 0. +   *   with a `count' of~0.     *     */    typedef unsigned long diff --git a/src/freetype2/freetype/fttypes.h b/src/freetype2/freetype/fttypes.h index 2340bac..a57ffa6 100644 --- a/src/freetype2/freetype/fttypes.h +++ b/src/freetype2/freetype/fttypes.h @@ -4,7 +4,7 @@  /*                                                                         */  /*    FreeType simple types definitions (specification only).              */  /*                                                                         */ -/*  Copyright 1996-2001, 2002, 2004, 2006, 2007 by                         */ +/*  Copyright 1996-2001, 2002, 2004, 2006, 2007, 2008 by                   */  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */  /*                                                                         */  /*  This file is part of the FreeType project, and may only be used,       */ @@ -43,7 +43,7 @@ FT_BEGIN_HEADER    /*    The basic data types defined by the library.                       */    /*                                                                       */    /* <Description>                                                         */ -  /*    This section contains the basic data types defined by FreeType 2,  */ +  /*    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.       */    /*                                                                       */ @@ -53,6 +53,10 @@ FT_BEGIN_HEADER    /*    FT_Char                                                            */    /*    FT_Int                                                             */    /*    FT_UInt                                                            */ +  /*    FT_Int16                                                           */ +  /*    FT_UInt16                                                          */ +  /*    FT_Int32                                                           */ +  /*    FT_UInt32                                                          */    /*    FT_Short                                                           */    /*    FT_UShort                                                          */    /*    FT_Long                                                            */ @@ -95,7 +99,7 @@ FT_BEGIN_HEADER    /*                                                                       */    /* <Description>                                                         */    /*    A typedef of unsigned char, used for simple booleans.  As usual,   */ -  /*    values 1 and 0 represent true and false, respectively.             */ +  /*    values 1 and~0 represent true and false, respectively.             */    /*                                                                       */    typedef unsigned char  FT_Bool; @@ -163,7 +167,7 @@ FT_BEGIN_HEADER    /*    FT_Tag                                                             */    /*                                                                       */    /* <Description>                                                         */ -  /*    A typedef for 32bit tags (as used in the SFNT format).             */ +  /*    A typedef for 32-bit tags (as used in the SFNT format).            */    /*                                                                       */    typedef FT_UInt32  FT_Tag; @@ -286,7 +290,7 @@ FT_BEGIN_HEADER    /*    FT_Error                                                           */    /*                                                                       */    /* <Description>                                                         */ -  /*    The FreeType error code type.  A value of 0 is always interpreted  */ +  /*    The FreeType error code type.  A value of~0 is always interpreted  */    /*    as a successful operation.                                         */    /*                                                                       */    typedef int  FT_Error; @@ -309,7 +313,7 @@ FT_BEGIN_HEADER    /*    FT_Offset                                                          */    /*                                                                       */    /* <Description>                                                         */ -  /*    This is equivalent to the ANSI C `size_t' type, i.e., the largest  */ +  /*    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.                                            */    /*                                                                       */ @@ -322,7 +326,7 @@ FT_BEGIN_HEADER    /*    FT_PtrDist                                                         */    /*                                                                       */    /* <Description>                                                         */ -  /*    This is equivalent to the ANSI C `ptrdiff_t' type, i.e., the       */ +  /*    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.                                              */    /*                                                                       */ @@ -409,7 +413,7 @@ FT_BEGIN_HEADER    /*    FT_Generic_Finalizer                                               */    /*                                                                       */    /* <Description>                                                         */ -  /*    Describes a function used to destroy the `client' data of any      */ +  /*    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.                                                  */    /*                                                                       */ @@ -466,10 +470,11 @@ FT_BEGIN_HEADER    /*    TrueType tables into an unsigned long to be used within FreeType.  */    /*                                                                       */    /* <Note>                                                                */ -  /*    The produced values *must* be 32bit integers.  Don't redefine this */ -  /*    macro.                                                             */ +  /*    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 ) |     \              ( (FT_ULong)_x2 << 16 ) |     \              ( (FT_ULong)_x3 <<  8 ) |     \ diff --git a/src/freetype2/freetype/ftwinfnt.h b/src/freetype2/freetype/ftwinfnt.h index a0063cc..ea33353 100644 --- a/src/freetype2/freetype/ftwinfnt.h +++ b/src/freetype2/freetype/ftwinfnt.h @@ -4,7 +4,7 @@  /*                                                                         */  /*    FreeType API for accessing Windows fnt-specific data.                */  /*                                                                         */ -/*  Copyright 2003, 2004 by                                                */ +/*  Copyright 2003, 2004, 2008 by                                          */  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */  /*                                                                         */  /*  This file is part of the FreeType project, and may only be used,       */ @@ -111,11 +111,11 @@ FT_BEGIN_HEADER     *     ordering and minor deviations).     *     *   FT_WinFNT_ID_CP949 :: -   *     A superset of Korean Hangul KS C 5601-1987 (with different +   *     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 +   *     A superset of traditional Chinese Big~5 ETen (with different     *     ordering and minor deviations).     *     *   FT_WinFNT_ID_CP1250 :: @@ -219,36 +219,47 @@ FT_BEGIN_HEADER      FT_UShort  color_table_offset;      FT_ULong   reserved1[4]; -  } FT_WinFNT_HeaderRec, *FT_WinFNT_Header; +  } FT_WinFNT_HeaderRec; - /********************************************************************** -  * -  * @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. -  */ +  /*************************************************************************/ +  /*                                                                       */ +  /* <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 ); - /* */ +  /* */  FT_END_HEADER diff --git a/src/freetype2/freetype/ftxf86.h b/src/freetype2/freetype/ftxf86.h index ea82abb..8c68afd 100644 --- a/src/freetype2/freetype/ftxf86.h +++ b/src/freetype2/freetype/ftxf86.h @@ -49,6 +49,9 @@ FT_BEGIN_HEADER    /*   however, there are special cases (like in PDF devices) where it is  */    /*   important to differentiate, in spite of FreeType's uniform API.     */    /*                                                                       */ +  /*   This function is in the X11/xf86 namespace for historical reasons   */ +  /*   and in no way depends on that windowing system.                     */ +  /*                                                                       */    /*************************************************************************/ @@ -60,8 +63,8 @@ FT_BEGIN_HEADER    /* <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'.                                           */ +  /*   `TrueType', `Type~1', `BDF', `PCF', `Type~42', `CID~Type~1', `CFF', */ +  /*   `PFR', and `Windows~FNT'.                                           */    /*                                                                       */    /* <Input>                                                               */    /*   face ::                                                             */ diff --git a/src/freetype2/freetype/internal/autohint.h b/src/freetype2/freetype/internal/autohint.h index ee00402..7e3a08a 100644 --- a/src/freetype2/freetype/internal/autohint.h +++ b/src/freetype2/freetype/internal/autohint.h @@ -196,6 +196,32 @@ FT_BEGIN_HEADER    } FT_AutoHinter_ServiceRec, *FT_AutoHinter_Service; +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_AUTOHINTER_SERVICE(class_, reset_face_, get_global_hints_, \ +                                     done_global_hints_, load_glyph_)        \ +  FT_CALLBACK_TABLE_DEF                                                      \ +  const FT_AutoHinter_ServiceRec class_ =                                    \ +  {                                                                          \ +    reset_face_, get_global_hints_, done_global_hints_, load_glyph_          \ +  }; + +#else /* FT_CONFIG_OPTION_PIC */  + +#define FT_DEFINE_AUTOHINTER_SERVICE(class_, reset_face_, get_global_hints_, \ +                                     done_global_hints_, load_glyph_)        \ +  void                                                                       \ +  FT_Init_Class_##class_( FT_Library library,                                \ +                          FT_AutoHinter_ServiceRec* clazz)                   \ +  {                                                                          \ +    FT_UNUSED(library);                                                      \ +    clazz->reset_face = reset_face_;                                         \ +    clazz->get_global_hints = get_global_hints_;                             \ +    clazz->done_global_hints = done_global_hints_;                           \ +    clazz->load_glyph = load_glyph_;                                         \ +  }  + +#endif /* FT_CONFIG_OPTION_PIC */   FT_END_HEADER diff --git a/src/freetype2/freetype/internal/ftcalc.h b/src/freetype2/freetype/internal/ftcalc.h index c7e9901..f8b4324 100644 --- a/src/freetype2/freetype/internal/ftcalc.h +++ b/src/freetype2/freetype/internal/ftcalc.h @@ -4,7 +4,7 @@  /*                                                                         */  /*    Arithmetic computations (specification).                             */  /*                                                                         */ -/*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006 by                   */ +/*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2008, 2009 by       */  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */  /*                                                                         */  /*  This file is part of the FreeType project, and may only be used,       */ @@ -112,6 +112,31 @@ FT_BEGIN_HEADER    /* +   *  A variant of FT_Matrix_Multiply which scales its result afterwards. +   *  The idea is that both `a' and `b' are scaled by factors of 10 so that +   *  the values are as precise as possible to get a correct result during +   *  the 64bit multiplication.  Let `sa' and `sb' be the scaling factors of +   *  `a' and `b', respectively, then the scaling factor of the result is +   *  `sa*sb'. +   */ +  FT_BASE( void ) +  FT_Matrix_Multiply_Scaled( const FT_Matrix*  a, +                             FT_Matrix        *b, +                             FT_Long           scaling ); + + +  /* +   *  A variant of FT_Vector_Transform.  See comments for +   *  FT_Matrix_Multiply_Scaled. +   */ + +  FT_BASE( void ) +  FT_Vector_Transform_Scaled( FT_Vector*        vector, +                              const FT_Matrix*  matrix, +                              FT_Long           scaling ); + + +  /*     *  Return -1, 0, or +1, depending on the orientation of a given corner.     *  We use the Cartesian coordinate system, with positive vertical values     *  going upwards.  The function returns +1 if the corner turns to the @@ -140,6 +165,7 @@ FT_BEGIN_HEADER  #define INT_TO_FIXED( x )      ( (FT_Long)(x) << 16 )  #define F2DOT14_TO_FIXED( x )  ( (FT_Long)(x) << 2  )  #define FLOAT_TO_FIXED( x )    ( (FT_Long)( x * 65536.0 ) ) +#define FIXED_TO_INT( x )      ( FT_RoundFix( x ) >> 16 )  #define ROUND_F26DOT6( x )     ( x >= 0 ? (    ( (x) + 32 ) & -64 )     \                                          : ( -( ( 32 - (x) ) & -64 ) ) ) diff --git a/src/freetype2/freetype/internal/ftdebug.h b/src/freetype2/freetype/internal/ftdebug.h index 1562714..7baae35 100644 --- a/src/freetype2/freetype/internal/ftdebug.h +++ b/src/freetype2/freetype/internal/ftdebug.h @@ -4,7 +4,7 @@  /*                                                                         */  /*    Debugging and logging component (specification).                     */  /*                                                                         */ -/*  Copyright 1996-2001, 2002, 2004, 2006, 2007 by                         */ +/*  Copyright 1996-2001, 2002, 2004, 2006, 2007, 2008, 2009 by             */  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */  /*                                                                         */  /*  This file is part of the FreeType project, and may only be used,       */ @@ -54,7 +54,7 @@ FT_BEGIN_HEADER  #define FT_TRACE_DEF( x )  trace_ ## x ,    /* defining the enumeration */ -  typedef enum +  typedef enum  FT_Trace_    {  #include FT_INTERNAL_TRACE_H      trace_count @@ -92,7 +92,7 @@ FT_BEGIN_HEADER  #else /* !FT_DEBUG_LEVEL_TRACE */ -#define FT_TRACE( level, varformat )  do ; while ( 0 )      /* nothing */ +#define FT_TRACE( level, varformat )  do { } while ( 0 )      /* nothing */  #endif /* !FT_DEBUG_LEVEL_TRACE */ @@ -146,10 +146,12 @@ FT_BEGIN_HEADER    /*************************************************************************/    /*                                                                       */ -  /* You need two opening resp. closing parentheses!                       */ +  /* You need two opening and closing parentheses!                         */    /*                                                                       */    /* Example: FT_TRACE0(( "Value is %i", foo ))                            */    /*                                                                       */ +  /* Output of the FT_TRACEX macros is sent to stderr.                     */ +  /*                                                                       */    /*************************************************************************/  #define FT_TRACE0( varformat )  FT_TRACE( 0, varformat ) @@ -164,7 +166,9 @@ FT_BEGIN_HEADER    /*************************************************************************/    /*                                                                       */ -  /*  Define the FT_ERROR macro                                            */ +  /* Define the FT_ERROR macro.                                            */ +  /*                                                                       */ +  /* Output of this macro is sent to stderr.                               */    /*                                                                       */    /*************************************************************************/ @@ -174,14 +178,14 @@ FT_BEGIN_HEADER  #else  /* !FT_DEBUG_LEVEL_ERROR */ -#define FT_ERROR( varformat )  do ; while ( 0 )      /* nothing */ +#define FT_ERROR( varformat )  do { } while ( 0 )      /* nothing */  #endif /* !FT_DEBUG_LEVEL_ERROR */    /*************************************************************************/    /*                                                                       */ -  /* Define the FT_ASSERT macro                                            */ +  /* Define the FT_ASSERT macro.                                           */    /*                                                                       */    /*************************************************************************/ @@ -197,28 +201,30 @@ FT_BEGIN_HEADER  #else /* !FT_DEBUG_LEVEL_ERROR */ -#define FT_ASSERT( condition )  do ; while ( 0 ) +#define FT_ASSERT( condition )  do { } while ( 0 )  #endif /* !FT_DEBUG_LEVEL_ERROR */    /*************************************************************************/    /*                                                                       */ -  /*  Define `FT_Message' and `FT_Panic' when needed                       */ +  /* Define `FT_Message' and `FT_Panic' when needed.                       */    /*                                                                       */    /*************************************************************************/  #ifdef FT_DEBUG_LEVEL_ERROR -#include "stdio.h"  /* for vprintf() */ +#include "stdio.h"  /* for vfprintf() */    /* print a message */    FT_BASE( void ) -  FT_Message( const char*  fmt, ... ); +  FT_Message( const char*  fmt, +              ... );    /* print a message and exit */    FT_BASE( void ) -  FT_Panic( const char*  fmt, ... ); +  FT_Panic( const char*  fmt, +            ... );  #endif /* FT_DEBUG_LEVEL_ERROR */ @@ -229,8 +235,8 @@ FT_BEGIN_HEADER  #if defined( _MSC_VER )      /* Visual C++ (and Intel C++) */ -  /* we disable the warning `conditional expression is constant' here */ -  /* in order to compile cleanly with the maximum level of warnings   */ +  /* We disable the warning `conditional expression is constant' here */ +  /* in order to compile cleanly with the maximum level of warnings.  */  #pragma warning( disable : 4127 )  #endif /* _MSC_VER */ diff --git a/src/freetype2/freetype/internal/ftdriver.h b/src/freetype2/freetype/internal/ftdriver.h index 97f3fd0..1d06997 100644 --- a/src/freetype2/freetype/internal/ftdriver.h +++ b/src/freetype2/freetype/internal/ftdriver.h @@ -4,7 +4,7 @@  /*                                                                         */  /*    FreeType font driver interface (specification).                      */  /*                                                                         */ -/*  Copyright 1996-2001, 2002, 2003, 2006 by                               */ +/*  Copyright 1996-2001, 2002, 2003, 2006, 2008 by                         */  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */  /*                                                                         */  /*  This file is part of the FreeType project, and may only be used,       */ @@ -91,6 +91,7 @@ FT_BEGIN_HEADER    (*FT_CharMap_CharNextFunc)( FT_CharMap  charmap,                                FT_Long     charcode ); +    typedef FT_Error    (*FT_Face_GetKerningFunc)( FT_Face     face,                               FT_UInt     left_glyph, @@ -104,11 +105,11 @@ FT_BEGIN_HEADER    typedef FT_Error -  (*FT_Face_GetAdvancesFunc)( FT_Face     face, -                              FT_UInt     first, -                              FT_UInt     count, -                              FT_Bool     vertical, -                              FT_UShort*  advances ); +  (*FT_Face_GetAdvancesFunc)( FT_Face    face, +                              FT_UInt    first, +                              FT_UInt    count, +                              FT_Int32   flags, +                              FT_Fixed*  advances );    /*************************************************************************/ @@ -145,10 +146,6 @@ FT_BEGIN_HEADER    /*    load_glyph       :: A function handle to load a glyph to a slot.   */    /*                        This field is mandatory!                       */    /*                                                                       */ -  /*    get_char_index   :: A function handle to return the glyph index of */ -  /*                        a given character for a given charmap.  This   */ -  /*                        field is mandatory!                            */ -  /*                                                                       */    /*    get_kerning      :: A function handle to return the unscaled       */    /*                        kerning for a given pair of glyphs.  Can be    */    /*                        set to 0 if the format doesn't support         */ @@ -180,8 +177,8 @@ FT_BEGIN_HEADER    /*                        to 0 if the scaling done in the base layer     */    /*                        suffices.                                      */    /* <Note>                                                                */ -  /*    Most function pointers, with the exception of `load_glyph' and     */ -  /*    `get_char_index' can be set to 0 to indicate a default behaviour.  */ +  /*    Most function pointers, with the exception of `load_glyph', can be */ +  /*    set to 0 to indicate a default behaviour.                          */    /*                                                                       */    typedef struct  FT_Driver_ClassRec_    { @@ -243,6 +240,179 @@ FT_BEGIN_HEADER  #endif /* FT_CONFIG_OPTION_OLD_INTERNALS */ +  /*************************************************************************/ +  /*                                                                       */ +  /* <Macro>                                                               */ +  /*    FT_DECLARE_DRIVER                                                  */ +  /*                                                                       */ +  /* <Description>                                                         */ +  /*    Used to create a forward declaration of a                          */ +  /*    FT_Driver_ClassRec stract instance.                                */ +  /*                                                                       */ +  /* <Macro>                                                               */ +  /*    FT_DEFINE_DRIVER                                                   */ +  /*                                                                       */ +  /* <Description>                                                         */ +  /*    Used to initialize an instance of FT_Driver_ClassRec struct.       */ +  /*                                                                       */ +  /*    When FT_CONFIG_OPTION_PIC is defined a Create funtion will need    */ +  /*    to called with a pointer where the allocated stracture is returned.*/ +  /*    And when it is no longer needed a Destroy function needs           */ +  /*    to be called to release that allocation.                           */ +  /*    fcinit.c (ft_create_default_module_classes) already contains       */ +  /*    a mechanism to call these functions for the default modules        */ +  /*    described in ftmodule.h                                            */ +  /*                                                                       */ +  /*    Notice that the created Create and Destroy functions call          */ +  /*    pic_init and pic_free function to allow you to manually allocate   */ +  /*    and initialize any additional global data, like module specific    */ +  /*    interface, and put them in the global pic container defined in     */ +  /*    ftpic.h. if you don't need them just implement the functions as    */ +  /*    empty to resolve the link error.                                   */ +  /*                                                                       */ +  /*    When FT_CONFIG_OPTION_PIC is not defined the struct will be        */ +  /*    allocated in the global scope (or the scope where the macro        */ +  /*    is used).                                                          */ +  /*                                                                       */ +#ifndef FT_CONFIG_OPTION_PIC + +#ifdef FT_CONFIG_OPTION_OLD_INTERNALS +#define FT_DEFINE_DRIVERS_OLD_INTERNALS(a_,b_) \ +  a_, b_, +#else +  #define FT_DEFINE_DRIVERS_OLD_INTERNALS(a_,b_) +#endif + +#define FT_DECLARE_DRIVER(class_)    \ +  FT_CALLBACK_TABLE                  \ +  const FT_Driver_ClassRec  class_;   + +#define FT_DEFINE_DRIVER(class_,                                             \ +                         flags_, size_, name_, version_, requires_,          \ +                         interface_, init_, done_, get_interface_,           \ +                         face_object_size_, size_object_size_,               \ +                         slot_object_size_, init_face_, done_face_,          \ +                         init_size_, done_size_, init_slot_, done_slot_,     \ +                         old_set_char_sizes_, old_set_pixel_sizes_,          \ +                         load_glyph_, get_kerning_, attach_file_,            \ +                         get_advances_, request_size_, select_size_ )        \ +  FT_CALLBACK_TABLE_DEF                                                      \ +  const FT_Driver_ClassRec class_ =                                          \ +  {                                                                          \ +    FT_DEFINE_ROOT_MODULE(flags_,size_,name_,version_,requires_,interface_,  \ +                          init_,done_,get_interface_)                        \ +                                                                             \ +    face_object_size_,                                                       \ +    size_object_size_,                                                       \ +    slot_object_size_,                                                       \ +                                                                             \ +    init_face_,                                                              \ +    done_face_,                                                              \ +                                                                             \ +    init_size_,                                                              \ +    done_size_,                                                              \ +                                                                             \ +    init_slot_,                                                              \ +    done_slot_,                                                              \ +                                                                             \ +    FT_DEFINE_DRIVERS_OLD_INTERNALS(old_set_char_sizes_, old_set_pixel_sizes_) \ +                                                                             \ +    load_glyph_,                                                             \ +                                                                             \ +    get_kerning_,                                                            \ +    attach_file_,                                                            \ +    get_advances_,                                                           \ +                                                                             \ +    request_size_,                                                           \ +    select_size_                                                             \ +  }; + +#else /* FT_CONFIG_OPTION_PIC */  + +#ifdef FT_CONFIG_OPTION_OLD_INTERNALS +#define FT_DEFINE_DRIVERS_OLD_INTERNALS(a_,b_) \ +  clazz->set_char_sizes = a_; \ +  clazz->set_pixel_sizes = b_; +#else +  #define FT_DEFINE_DRIVERS_OLD_INTERNALS(a_,b_) +#endif + +#define FT_DECLARE_DRIVER(class_)    FT_DECLARE_MODULE(class_) + +#define FT_DEFINE_DRIVER(class_,                                             \ +                         flags_, size_, name_, version_, requires_,          \ +                         interface_, init_, done_, get_interface_,           \ +                         face_object_size_, size_object_size_,               \ +                         slot_object_size_, init_face_, done_face_,          \ +                         init_size_, done_size_, init_slot_, done_slot_,     \ +                         old_set_char_sizes_, old_set_pixel_sizes_,          \ +                         load_glyph_, get_kerning_, attach_file_,            \ +                         get_advances_, request_size_, select_size_ )        \ +  void class_##_pic_free( FT_Library library );                              \ +  FT_Error class_##_pic_init( FT_Library library );                          \ +                                                                             \ +  void                                                                       \ +  FT_Destroy_Class_##class_( FT_Library        library,                      \ +                             FT_Module_Class*  clazz )                       \ +  {                                                                          \ +    FT_Memory       memory = library->memory;                                \ +    FT_Driver_Class dclazz = (FT_Driver_Class)clazz;                         \ +    class_##_pic_free( library );                                            \ +    if ( dclazz )                                                            \ +      FT_FREE( dclazz );                                                     \ +  }                                                                          \ +                                                                             \ +  FT_Error                                                                   \ +  FT_Create_Class_##class_( FT_Library        library,                       \ +                            FT_Module_Class**  output_class )                \ +  {                                                                          \ +    FT_Driver_Class  clazz;                                                  \ +    FT_Error         error;                                                  \ +    FT_Memory        memory = library->memory;                               \ +                                                                             \ +    if ( FT_ALLOC( clazz, sizeof(*clazz) ) )                                 \ +      return error;                                                          \ +                                                                             \ +    error = class_##_pic_init( library );                                    \ +    if(error)                                                                \ +    {                                                                        \ +      FT_FREE( clazz );                                                      \ +      return error;                                                          \ +    }                                                                        \ +                                                                             \ +    FT_DEFINE_ROOT_MODULE(flags_,size_,name_,version_,requires_,interface_,  \ +                          init_,done_,get_interface_)                        \ +                                                                             \ +    clazz->face_object_size    = face_object_size_;                          \ +    clazz->size_object_size    = size_object_size_;                          \ +    clazz->slot_object_size    = slot_object_size_;                          \ +                                                                             \ +    clazz->init_face           = init_face_;                                 \ +    clazz->done_face           = done_face_;                                 \ +                                                                             \ +    clazz->init_size           = init_size_;                                 \ +    clazz->done_size           = done_size_;                                 \ +                                                                             \ +    clazz->init_slot           = init_slot_;                                 \ +    clazz->done_slot           = done_slot_;                                 \ +                                                                             \ +    FT_DEFINE_DRIVERS_OLD_INTERNALS(old_set_char_sizes_, old_set_pixel_sizes_) \ +                                                                             \ +    clazz->load_glyph          = load_glyph_;                                \ +                                                                             \ +    clazz->get_kerning         = get_kerning_;                               \ +    clazz->attach_file         = attach_file_;                               \ +    clazz->get_advances        = get_advances_;                              \ +                                                                             \ +    clazz->request_size        = request_size_;                              \ +    clazz->select_size         = select_size_;                               \ +                                                                             \ +    *output_class = (FT_Module_Class*)clazz;                                 \ +    return FT_Err_Ok;                                                        \ +  }                 + + +#endif /* FT_CONFIG_OPTION_PIC */  FT_END_HEADER diff --git a/src/freetype2/freetype/internal/ftgloadr.h b/src/freetype2/freetype/internal/ftgloadr.h index 9f47c0b..ce4dc6c 100644 --- a/src/freetype2/freetype/internal/ftgloadr.h +++ b/src/freetype2/freetype/internal/ftgloadr.h @@ -67,11 +67,11 @@ FT_BEGIN_HEADER    typedef struct  FT_GlyphLoadRec_    { -    FT_Outline   outline;       /* outline             */ -    FT_Vector*   extra_points;  /* extra points table  */ +    FT_Outline   outline;       /* outline                   */ +    FT_Vector*   extra_points;  /* extra points table        */      FT_Vector*   extra_points2; /* second extra points table */ -    FT_UInt      num_subglyphs; /* number of subglyphs */ -    FT_SubGlyph  subglyphs;     /* subglyphs           */ +    FT_UInt      num_subglyphs; /* number of subglyphs       */ +    FT_SubGlyph  subglyphs;     /* subglyphs                 */    } FT_GlyphLoadRec, *FT_GlyphLoad; @@ -121,15 +121,15 @@ FT_BEGIN_HEADER                                FT_UInt         n_contours ); -#define FT_GLYPHLOADER_CHECK_P( _loader, _count )                    \ -   ( (_count) == 0 || (int)((_loader)->base.outline.n_points    +    \ -                            (_loader)->current.outline.n_points +    \ -                            (_count)) <= (int)(_loader)->max_points ) +#define FT_GLYPHLOADER_CHECK_P( _loader, _count )                         \ +   ( (_count) == 0 || ((_loader)->base.outline.n_points    +              \ +                       (_loader)->current.outline.n_points +              \ +                       (unsigned long)(_count)) <= (_loader)->max_points ) -#define FT_GLYPHLOADER_CHECK_C( _loader, _count )                     \ -  ( (_count) == 0 || (int)((_loader)->base.outline.n_contours    +    \ -                           (_loader)->current.outline.n_contours +    \ -                           (_count)) <= (int)(_loader)->max_contours ) +#define FT_GLYPHLOADER_CHECK_C( _loader, _count )                          \ +  ( (_count) == 0 || ((_loader)->base.outline.n_contours    +              \ +                      (_loader)->current.outline.n_contours +              \ +                      (unsigned long)(_count)) <= (_loader)->max_contours )  #define FT_GLYPHLOADER_CHECK_POINTS( _loader, _points,_contours )      \    ( ( FT_GLYPHLOADER_CHECK_P( _loader, _points )   &&                  \ diff --git a/src/freetype2/freetype/internal/ftmemory.h b/src/freetype2/freetype/internal/ftmemory.h index c6ddc42..2010ca9 100644 --- a/src/freetype2/freetype/internal/ftmemory.h +++ b/src/freetype2/freetype/internal/ftmemory.h @@ -333,8 +333,8 @@ FT_BEGIN_HEADER                FT_ULong     size,                FT_Error    *p_error ); -#define FT_MEM_STRDUP( dst, str )                                     \ -          (dst) = ft_mem_strdup( memory, (const char*)(str), &error ) +#define FT_MEM_STRDUP( dst, str )                                            \ +          (dst) = (char*)ft_mem_strdup( memory, (const char*)(str), &error )  #define FT_STRDUP( dst, str )                           \            FT_MEM_SET_ERROR( FT_MEM_STRDUP( dst, str ) ) diff --git a/src/freetype2/freetype/internal/ftobjs.h b/src/freetype2/freetype/internal/ftobjs.h index 15b68d6..574cf58 100644 --- a/src/freetype2/freetype/internal/ftobjs.h +++ b/src/freetype2/freetype/internal/ftobjs.h @@ -4,7 +4,7 @@  /*                                                                         */  /*    The FreeType private base classes (specification).                   */  /*                                                                         */ -/*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006 by                   */ +/*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2008 by             */  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */  /*                                                                         */  /*  This file is part of the FreeType project, and may only be used,       */ @@ -35,6 +35,7 @@  #include FT_INTERNAL_DRIVER_H  #include FT_INTERNAL_AUTOHINT_H  #include FT_INTERNAL_SERVICE_H +#include FT_INTERNAL_PIC_H  #ifdef FT_CONFIG_OPTION_INCREMENTAL  #include FT_INCREMENTAL_H @@ -160,6 +161,31 @@ FT_BEGIN_HEADER    (*FT_CMap_CharNextFunc)( FT_CMap     cmap,                             FT_UInt32  *achar_code ); +  typedef FT_UInt +  (*FT_CMap_CharVarIndexFunc)( FT_CMap    cmap, +                               FT_CMap    unicode_cmap, +                               FT_UInt32  char_code, +                               FT_UInt32  variant_selector ); + +  typedef FT_Bool +  (*FT_CMap_CharVarIsDefaultFunc)( FT_CMap    cmap, +                                   FT_UInt32  char_code, +                                   FT_UInt32  variant_selector ); + +  typedef FT_UInt32 * +  (*FT_CMap_VariantListFunc)( FT_CMap    cmap, +                              FT_Memory  mem ); + +  typedef FT_UInt32 * +  (*FT_CMap_CharVariantListFunc)( FT_CMap    cmap, +                                  FT_Memory  mem, +                                  FT_UInt32  char_code ); + +  typedef FT_UInt32 * +  (*FT_CMap_VariantCharListFunc)( FT_CMap    cmap, +                                  FT_Memory  mem, +                                  FT_UInt32  variant_selector ); +    typedef struct  FT_CMap_ClassRec_    { @@ -169,8 +195,56 @@ FT_BEGIN_HEADER      FT_CMap_CharIndexFunc  char_index;      FT_CMap_CharNextFunc   char_next; +    /* Subsequent entries are special ones for format 14 -- the variant */ +    /* selector subtable which behaves like no other                    */ + +    FT_CMap_CharVarIndexFunc      char_var_index; +    FT_CMap_CharVarIsDefaultFunc  char_var_default; +    FT_CMap_VariantListFunc       variant_list; +    FT_CMap_CharVariantListFunc   charvariant_list; +    FT_CMap_VariantCharListFunc   variantchar_list; +    } FT_CMap_ClassRec; +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DECLARE_CMAP_CLASS(class_) \ +    FT_CALLBACK_TABLE const FT_CMap_ClassRec class_; + +#define FT_DEFINE_CMAP_CLASS(class_, size_, init_, done_, char_index_,       \ +        char_next_, char_var_index_, char_var_default_, variant_list_,       \ +        charvariant_list_, variantchar_list_)                                \ +  FT_CALLBACK_TABLE_DEF                                                      \ +  const FT_CMap_ClassRec class_ =                                            \ +  {                                                                          \ +    size_, init_, done_, char_index_, char_next_, char_var_index_,           \ +    char_var_default_, variant_list_, charvariant_list_, variantchar_list_   \ +  }; +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DECLARE_CMAP_CLASS(class_) \ +    void FT_Init_Class_##class_( FT_Library library, FT_CMap_ClassRec*  clazz); + +#define FT_DEFINE_CMAP_CLASS(class_, size_, init_, done_, char_index_,       \ +        char_next_, char_var_index_, char_var_default_, variant_list_,       \ +        charvariant_list_, variantchar_list_)                                \ +  void                                                                       \ +  FT_Init_Class_##class_( FT_Library library,                                \ +                          FT_CMap_ClassRec*  clazz)                          \ +  {                                                                          \ +    FT_UNUSED(library);                                                      \ +    clazz->size = size_;                                                     \ +    clazz->init = init_;                                                     \ +    clazz->done = done_;                                                     \ +    clazz->char_index = char_index_;                                         \ +    clazz->char_next = char_next_;                                           \ +    clazz->char_var_index = char_var_index_;                                 \ +    clazz->char_var_default = char_var_default_;                             \ +    clazz->variant_list = variant_list_;                                     \ +    clazz->charvariant_list = charvariant_list_;                             \ +    clazz->variantchar_list = variantchar_list_;                             \ +  }  +#endif /* FT_CONFIG_OPTION_PIC */    /* create a new charmap and add it to charmap->face */    FT_BASE( FT_Error ) @@ -306,7 +380,28 @@ FT_BEGIN_HEADER    } FT_GlyphSlot_InternalRec; +#if 0 + +  /*************************************************************************/ +  /*                                                                       */ +  /* <Struct>                                                              */ +  /*    FT_Size_InternalRec                                                */ +  /*                                                                       */ +  /* <Description>                                                         */ +  /*    This structure contains the internal fields of each FT_Size        */ +  /*    object.  Currently, it's empty.                                    */ +  /*                                                                       */    /*************************************************************************/ + +  typedef struct  FT_Size_InternalRec_ +  { +    /* empty */ + +  } FT_Size_InternalRec; + +#endif + +    /*************************************************************************/    /*************************************************************************/    /****                                                                 ****/ @@ -710,6 +805,10 @@ FT_BEGIN_HEADER    /*                                                                       */    /*    debug_hooks      :: XXX                                            */    /*                                                                       */ +  /*    pic_container    :: Contains global structs and tables, instead    */ +  /*                        of defining them globallly.                    */ +  /*                                                                       */ +    typedef struct  FT_LibraryRec_    {      FT_Memory          memory;           /* library's memory manager */ @@ -740,6 +839,10 @@ FT_BEGIN_HEADER      FT_Bitmap_LcdFilterFunc  lcd_filter_func;  /* filtering callback     */  #endif +#ifdef FT_CONFIG_OPTION_PIC +    FT_PIC_Container   pic_container; +#endif +    } FT_LibraryRec; @@ -811,6 +914,484 @@ FT_BEGIN_HEADER    FT_EXPORT_VAR( FT_Raster_Funcs )  ft_default_raster;  #endif +  /*************************************************************************/ +  /*************************************************************************/ +  /*************************************************************************/ +  /****                                                                 ****/ +  /****                                                                 ****/ +  /****              PIC-Support Macros for ftimage.h                   ****/ +  /****                                                                 ****/ +  /****                                                                 ****/ +  /*************************************************************************/ +  /*************************************************************************/ +  /*************************************************************************/ + + +  /*************************************************************************/ +  /*                                                                       */ +  /* <Macro>                                                               */ +  /*    FT_DEFINE_OUTLINE_FUNCS                                            */ +  /*                                                                       */ +  /* <Description>                                                         */ +  /*    Used to initialize an instance of FT_Outline_Funcs struct.         */ +  /*    When FT_CONFIG_OPTION_PIC is defined an init funtion will need to  */ +  /*    called with a pre-allocated stracture to be filled.                */ +  /*    When FT_CONFIG_OPTION_PIC is not defined the struct will be        */ +  /*    allocated in the global scope (or the scope where the macro        */ +  /*    is used).                                                          */ +  /*                                                                       */ +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_OUTLINE_FUNCS(class_, move_to_, line_to_, conic_to_,       \ +                                cubic_to_, shift_, delta_)                   \ +  static const FT_Outline_Funcs class_ =                                     \ +  {                                                                          \ +    move_to_, line_to_, conic_to_, cubic_to_, shift_, delta_                 \ +  }; + +#else /* FT_CONFIG_OPTION_PIC */  + +#define FT_DEFINE_OUTLINE_FUNCS(class_, move_to_, line_to_, conic_to_,       \ +                                cubic_to_, shift_, delta_)                   \ +  static FT_Error                                                            \ +  Init_Class_##class_( FT_Outline_Funcs*  clazz )                            \ +  {                                                                          \ +    clazz->move_to = move_to_;                                               \ +    clazz->line_to = line_to_;                                               \ +    clazz->conic_to = conic_to_;                                             \ +    clazz->cubic_to = cubic_to_;                                             \ +    clazz->shift = shift_;                                                   \ +    clazz->delta = delta_;                                                   \ +    return FT_Err_Ok;                                                        \ +  }  + +#endif /* FT_CONFIG_OPTION_PIC */  + +  /*************************************************************************/ +  /*                                                                       */ +  /* <Macro>                                                               */ +  /*    FT_DEFINE_RASTER_FUNCS                                             */ +  /*                                                                       */ +  /* <Description>                                                         */ +  /*    Used to initialize an instance of FT_Raster_Funcs struct.          */ +  /*    When FT_CONFIG_OPTION_PIC is defined an init funtion will need to  */ +  /*    called with a pre-allocated stracture to be filled.                */ +  /*    When FT_CONFIG_OPTION_PIC is not defined the struct will be        */ +  /*    allocated in the global scope (or the scope where the macro        */ +  /*    is used).                                                          */ +  /*                                                                       */ +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_RASTER_FUNCS(class_, glyph_format_, raster_new_,           \ +                               raster_reset_, raster_set_mode_,              \ +                               raster_render_, raster_done_)                 \ +  const FT_Raster_Funcs class_ =                                      \ +  {                                                                          \ +    glyph_format_, raster_new_, raster_reset_,                               \ +    raster_set_mode_, raster_render_, raster_done_                           \ +  }; + +#else /* FT_CONFIG_OPTION_PIC */  + +#define FT_DEFINE_RASTER_FUNCS(class_, glyph_format_, raster_new_,           \ +    raster_reset_, raster_set_mode_, raster_render_, raster_done_)           \ +  void                                                                       \ +  FT_Init_Class_##class_( FT_Raster_Funcs*  clazz )                          \ +  {                                                                          \ +    clazz->glyph_format = glyph_format_;                                     \ +    clazz->raster_new = raster_new_;                                         \ +    clazz->raster_reset = raster_reset_;                                     \ +    clazz->raster_set_mode = raster_set_mode_;                               \ +    clazz->raster_render = raster_render_;                                   \ +    clazz->raster_done = raster_done_;                                       \ +  }  + +#endif /* FT_CONFIG_OPTION_PIC */  + +  /*************************************************************************/ +  /*************************************************************************/ +  /*************************************************************************/ +  /****                                                                 ****/ +  /****                                                                 ****/ +  /****              PIC-Support Macros for ftrender.h                  ****/ +  /****                                                                 ****/ +  /****                                                                 ****/ +  /*************************************************************************/ +  /*************************************************************************/ +  /*************************************************************************/ + + + +  /*************************************************************************/ +  /*                                                                       */ +  /* <Macro>                                                               */ +  /*    FT_DEFINE_GLYPH                                                    */ +  /*                                                                       */ +  /* <Description>                                                         */ +  /*    Used to initialize an instance of FT_Glyph_Class struct.           */ +  /*    When FT_CONFIG_OPTION_PIC is defined an init funtion will need to  */ +  /*    called with a pre-allocated stracture to be filled.                */ +  /*    When FT_CONFIG_OPTION_PIC is not defined the struct will be        */ +  /*    allocated in the global scope (or the scope where the macro        */ +  /*    is used).                                                          */ +  /*                                                                       */ +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_GLYPH(class_, size_, format_, init_, done_, copy_,         \ +                        transform_, bbox_, prepare_)                         \ +  FT_CALLBACK_TABLE_DEF                                                      \ +  const FT_Glyph_Class class_ =                                              \ +  {                                                                          \ +    size_, format_, init_, done_, copy_, transform_, bbox_, prepare_         \ +  }; + +#else /* FT_CONFIG_OPTION_PIC */  + +#define FT_DEFINE_GLYPH(class_, size_, format_, init_, done_, copy_,         \ +                        transform_, bbox_, prepare_)                         \ +  void                                                                       \ +  FT_Init_Class_##class_( FT_Glyph_Class*  clazz )                           \ +  {                                                                          \ +    clazz->glyph_size = size_;                                               \ +    clazz->glyph_format = format_;                                           \ +    clazz->glyph_init = init_;                                               \ +    clazz->glyph_done = done_;                                               \ +    clazz->glyph_copy = copy_;                                               \ +    clazz->glyph_transform = transform_;                                     \ +    clazz->glyph_bbox = bbox_;                                               \ +    clazz->glyph_prepare = prepare_;                                         \ +  }  + +#endif /* FT_CONFIG_OPTION_PIC */  + +  /*************************************************************************/ +  /*                                                                       */ +  /* <Macro>                                                               */ +  /*    FT_DECLARE_RENDERER                                                */ +  /*                                                                       */ +  /* <Description>                                                         */ +  /*    Used to create a forward declaration of a                          */ +  /*    FT_Renderer_Class stract instance.                                 */ +  /*                                                                       */ +  /* <Macro>                                                               */ +  /*    FT_DEFINE_RENDERER                                                 */ +  /*                                                                       */ +  /* <Description>                                                         */ +  /*    Used to initialize an instance of FT_Renderer_Class struct.        */ +  /*                                                                       */ +  /*    When FT_CONFIG_OPTION_PIC is defined a Create funtion will need    */ +  /*    to called with a pointer where the allocated stracture is returned.*/ +  /*    And when it is no longer needed a Destroy function needs           */ +  /*    to be called to release that allocation.                           */ +  /*    fcinit.c (ft_create_default_module_classes) already contains       */ +  /*    a mechanism to call these functions for the default modules        */ +  /*    described in ftmodule.h                                            */ +  /*                                                                       */ +  /*    Notice that the created Create and Destroy functions call          */ +  /*    pic_init and pic_free function to allow you to manually allocate   */ +  /*    and initialize any additional global data, like module specific    */ +  /*    interface, and put them in the global pic container defined in     */ +  /*    ftpic.h. if you don't need them just implement the functions as    */ +  /*    empty to resolve the link error.                                   */ +  /*                                                                       */ +  /*    When FT_CONFIG_OPTION_PIC is not defined the struct will be        */ +  /*    allocated in the global scope (or the scope where the macro        */ +  /*    is used).                                                          */ +  /*                                                                       */ +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DECLARE_RENDERER(class_)                                          \ +    FT_EXPORT_VAR( const FT_Renderer_Class ) class_; + +#define FT_DEFINE_RENDERER(class_,                                           \ +                           flags_, size_, name_, version_, requires_,        \ +                           interface_, init_, done_, get_interface_,         \ +                           glyph_format_, render_glyph_, transform_glyph_,   \ +                           get_glyph_cbox_, set_mode_, raster_class_ )       \ +  FT_CALLBACK_TABLE_DEF                                                      \ +  const FT_Renderer_Class  class_ =                                          \ +  {                                                                          \ +    FT_DEFINE_ROOT_MODULE(flags_,size_,name_,version_,requires_,             \ +                          interface_,init_,done_,get_interface_)             \ +    glyph_format_,                                                           \ +                                                                             \ +    render_glyph_,                                                           \ +    transform_glyph_,                                                        \ +    get_glyph_cbox_,                                                         \ +    set_mode_,                                                               \ +                                                                             \ +    raster_class_                                                            \ +  }; + +#else /* FT_CONFIG_OPTION_PIC */  + +#define FT_DECLARE_RENDERER(class_)  FT_DECLARE_MODULE(class_) + +#define FT_DEFINE_RENDERER(class_, \ +                           flags_, size_, name_, version_, requires_,        \ +                           interface_, init_, done_, get_interface_,         \ +                           glyph_format_, render_glyph_, transform_glyph_,   \ +                           get_glyph_cbox_, set_mode_, raster_class_ )       \ +  void class_##_pic_free( FT_Library library );                              \ +  FT_Error class_##_pic_init( FT_Library library );                          \ +                                                                             \ +  void                                                                       \ +  FT_Destroy_Class_##class_( FT_Library        library,                      \ +                        FT_Module_Class*  clazz )                            \ +  {                                                                          \ +    FT_Renderer_Class* rclazz = (FT_Renderer_Class*)clazz;                   \ +    FT_Memory         memory = library->memory;                              \ +    class_##_pic_free( library );                                            \ +    if ( rclazz )                                                            \ +      FT_FREE( rclazz );                                                     \ +  }                                                                          \ +                                                                             \ +  FT_Error                                                                   \ +  FT_Create_Class_##class_( FT_Library         library,                      \ +                            FT_Module_Class**  output_class )                \ +  {                                                                          \ +    FT_Renderer_Class*  clazz;                                               \ +    FT_Error            error;                                               \ +    FT_Memory           memory = library->memory;                            \ +                                                                             \ +    if ( FT_ALLOC( clazz, sizeof(*clazz) ) )                                 \ +      return error;                                                          \ +                                                                             \ +    error = class_##_pic_init( library );                                    \ +    if(error)                                                                \ +    {                                                                        \ +      FT_FREE( clazz );                                                      \ +      return error;                                                          \ +    }                                                                        \ +                                                                             \ +    FT_DEFINE_ROOT_MODULE(flags_,size_,name_,version_,requires_,             \ +                          interface_,init_,done_,get_interface_)             \ +                                                                             \ +    clazz->glyph_format       = glyph_format_;                               \ +                                                                             \ +    clazz->render_glyph       = render_glyph_;                               \ +    clazz->transform_glyph    = transform_glyph_;                            \ +    clazz->get_glyph_cbox     = get_glyph_cbox_;                             \ +    clazz->set_mode           = set_mode_;                                   \ +                                                                             \ +    clazz->raster_class       = raster_class_;                               \ +                                                                             \ +    *output_class = (FT_Module_Class*)clazz;                                 \ +    return FT_Err_Ok;                                                        \ +  }  + + + +#endif /* FT_CONFIG_OPTION_PIC */  + +  /*************************************************************************/ +  /*************************************************************************/ +  /*************************************************************************/ +  /****                                                                 ****/ +  /****                                                                 ****/ +  /****              PIC-Support Macros for ftmodapi.h                  ****/ +  /****                                                                 ****/ +  /****                                                                 ****/ +  /*************************************************************************/ +  /*************************************************************************/ +  /*************************************************************************/ + + +#ifdef FT_CONFIG_OPTION_PIC + +  /*************************************************************************/ +  /*                                                                       */ +  /* <FuncType>                                                            */ +  /*    FT_Module_Creator                                                  */ +  /*                                                                       */ +  /* <Description>                                                         */ +  /*    A function used to create (allocate) a new module class object.    */ +  /*    The object's members are initialized, but the module itself is     */ +  /*    not.                                                               */ +  /*                                                                       */ +  /* <Input>                                                               */ +  /*    memory       :: A handle to the memory manager.                    */ +  /*    output_class :: Initialized with the newly allocated class.        */ +  /*                                                                       */ +  typedef FT_Error +  (*FT_Module_Creator)( FT_Memory          memory, +                        FT_Module_Class**  output_class ); + +  /*************************************************************************/ +  /*                                                                       */ +  /* <FuncType>                                                            */ +  /*    FT_Module_Destroyer                                                */ +  /*                                                                       */ +  /* <Description>                                                         */ +  /*    A function used to destroy (deallocate) a module class object.     */ +  /*                                                                       */ +  /* <Input>                                                               */ +  /*    memory :: A handle to the memory manager.                          */ +  /*    clazz  :: Module class to destroy.                                 */ +  /*                                                                       */ +  typedef void +  (*FT_Module_Destroyer)( FT_Memory         memory, +                          FT_Module_Class*  clazz ); + +#endif + +  /*************************************************************************/ +  /*                                                                       */ +  /* <Macro>                                                               */ +  /*    FT_DECLARE_MODULE                                                  */ +  /*                                                                       */ +  /* <Description>                                                         */ +  /*    Used to create a forward declaration of a                          */ +  /*    FT_Module_Class stract instance.                                   */ +  /*                                                                       */ +  /* <Macro>                                                               */ +  /*    FT_DEFINE_MODULE                                                   */ +  /*                                                                       */ +  /* <Description>                                                         */ +  /*    Used to initialize an instance of FT_Module_Class struct.          */ +  /*                                                                       */ +  /*    When FT_CONFIG_OPTION_PIC is defined a Create funtion will need    */ +  /*    to called with a pointer where the allocated stracture is returned.*/ +  /*    And when it is no longer needed a Destroy function needs           */ +  /*    to be called to release that allocation.                           */ +  /*    fcinit.c (ft_create_default_module_classes) already contains       */ +  /*    a mechanism to call these functions for the default modules        */ +  /*    described in ftmodule.h                                            */ +  /*                                                                       */ +  /*    Notice that the created Create and Destroy functions call          */ +  /*    pic_init and pic_free function to allow you to manually allocate   */ +  /*    and initialize any additional global data, like module specific    */ +  /*    interface, and put them in the global pic container defined in     */ +  /*    ftpic.h. if you don't need them just implement the functions as    */ +  /*    empty to resolve the link error.                                   */ +  /*                                                                       */ +  /*    When FT_CONFIG_OPTION_PIC is not defined the struct will be        */ +  /*    allocated in the global scope (or the scope where the macro        */ +  /*    is used).                                                          */ +  /*                                                                       */ +  /* <Macro>                                                               */ +  /*    FT_DEFINE_ROOT_MODULE                                              */ +  /*                                                                       */ +  /* <Description>                                                         */ +  /*    Used to initialize an instance of FT_Module_Class struct inside    */ +  /*    another stract that contains it or in a function that initializes  */ +  /*    that containing stract                                             */ +  /*                                                                       */ +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DECLARE_MODULE(class_)                                            \ +  FT_CALLBACK_TABLE                                                          \ +  const FT_Module_Class  class_;                                             \ + +#define FT_DEFINE_ROOT_MODULE(flags_, size_, name_, version_, requires_,     \ +                              interface_, init_, done_, get_interface_)      \ +  {                                                                          \ +    flags_,                                                                  \ +    size_,                                                                   \ +                                                                             \ +    name_,                                                                   \ +    version_,                                                                \ +    requires_,                                                               \ +                                                                             \ +    interface_,                                                              \ +                                                                             \ +    init_,                                                                   \ +    done_,                                                                   \ +    get_interface_,                                                          \ +  }, + +#define FT_DEFINE_MODULE(class_, flags_, size_, name_, version_, requires_,  \ +                         interface_, init_, done_, get_interface_)           \ +  FT_CALLBACK_TABLE_DEF                                                      \ +  const FT_Module_Class class_ =                                             \ +  {                                                                          \ +    flags_,                                                                  \ +    size_,                                                                   \ +                                                                             \ +    name_,                                                                   \ +    version_,                                                                \ +    requires_,                                                               \ +                                                                             \ +    interface_,                                                              \ +                                                                             \ +    init_,                                                                   \ +    done_,                                                                   \ +    get_interface_,                                                          \ +  }; + + +#else /* FT_CONFIG_OPTION_PIC */ + +#define FT_DECLARE_MODULE(class_)                                            \ +  FT_Error FT_Create_Class_##class_( FT_Library library,                     \ +                                     FT_Module_Class** output_class );       \ +  void     FT_Destroy_Class_##class_( FT_Library library,                    \ +                                      FT_Module_Class*  clazz ); + +#define FT_DEFINE_ROOT_MODULE(flags_, size_, name_, version_, requires_,     \ +                              interface_, init_, done_, get_interface_)      \ +    clazz->root.module_flags       = flags_;                                 \ +    clazz->root.module_size        = size_;                                  \ +    clazz->root.module_name        = name_;                                  \ +    clazz->root.module_version     = version_;                               \ +    clazz->root.module_requires    = requires_;                              \ +                                                                             \ +    clazz->root.module_interface   = interface_;                             \ +                                                                             \ +    clazz->root.module_init        = init_;                                  \ +    clazz->root.module_done        = done_;                                  \ +    clazz->root.get_interface      = get_interface_;                + +#define FT_DEFINE_MODULE(class_, flags_, size_, name_, version_, requires_,  \ +                         interface_, init_, done_, get_interface_)           \ +  void class_##_pic_free( FT_Library library );                              \ +  FT_Error class_##_pic_init( FT_Library library );                          \ +                                                                             \ +  void                                                                       \ +  FT_Destroy_Class_##class_( FT_Library library,                             \ +                             FT_Module_Class*  clazz )                       \ +  {                                                                          \ +    FT_Memory memory = library->memory;                                      \ +    class_##_pic_free( library );                                            \ +    if ( clazz )                                                             \ +      FT_FREE( clazz );                                                      \ +  }                                                                          \ +                                                                             \ +  FT_Error                                                                   \ +  FT_Create_Class_##class_( FT_Library library,                              \ +                            FT_Module_Class**  output_class )                \ +  {                                                                          \ +    FT_Memory memory = library->memory;                                      \ +    FT_Module_Class*  clazz;                                                 \ +    FT_Error          error;                                                 \ +                                                                             \ +    if ( FT_ALLOC( clazz, sizeof(*clazz) ) )                                 \ +      return error;                                                          \ +    error = class_##_pic_init( library );                                    \ +    if(error)                                                                \ +    {                                                                        \ +      FT_FREE( clazz );                                                      \ +      return error;                                                          \ +    }                                                                        \ +                                                                             \ +    clazz->module_flags       = flags_;                                      \ +    clazz->module_size        = size_;                                       \ +    clazz->module_name        = name_;                                       \ +    clazz->module_version     = version_;                                    \ +    clazz->module_requires    = requires_;                                   \ +                                                                             \ +    clazz->module_interface   = interface_;                                  \ +                                                                             \ +    clazz->module_init        = init_;                                       \ +    clazz->module_done        = done_;                                       \ +    clazz->get_interface      = get_interface_;                              \ +                                                                             \ +    *output_class = clazz;                                                   \ +    return FT_Err_Ok;                                                        \ +  }  + +#endif /* FT_CONFIG_OPTION_PIC */ +  FT_END_HEADER diff --git a/src/freetype2/freetype/internal/ftpic.h b/src/freetype2/freetype/internal/ftpic.h new file mode 100644 index 0000000..1b31957 --- /dev/null +++ b/src/freetype2/freetype/internal/ftpic.h @@ -0,0 +1,67 @@ +/***************************************************************************/ +/*                                                                         */ +/*  ftpic.h                                                                */ +/*                                                                         */ +/*    The FreeType position independent code services (declaration).       */ +/*                                                                         */ +/*  Copyright 2009 by                                                      */ +/*  Oran Agra and Mickey Gabel.                                            */ +/*                                                                         */ +/*  This file is part of the FreeType project, and may only be used,       */ +/*  modified, and distributed under the terms of the FreeType project      */ +/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */ +/*  this file you indicate that you have read the license and              */ +/*  understand and accept it fully.                                        */ +/*                                                                         */ +/***************************************************************************/ + +  /*************************************************************************/ +  /*                                                                       */ +  /*  Modules that ordinarily have const global data that need address     */ +  /*  can instead define pointers here.                                    */ +  /*                                                                       */ +  /*************************************************************************/ + + +#ifndef __FTPIC_H__ +#define __FTPIC_H__ + +   +FT_BEGIN_HEADER + +#ifdef FT_CONFIG_OPTION_PIC + +  typedef struct FT_PIC_Container_ +  { +    /* pic containers for base */ +    void* base; +    /* pic containers for modules */ +    void* autofit;    +    void* cff;     +    void* pshinter;     +    void* psnames;     +    void* raster;      +    void* sfnt;      +    void* smooth;      +    void* truetype;      +  } FT_PIC_Container; + +  /* Initialize the various function tables, structs, etc. stored in the container. */ +  FT_BASE( FT_Error ) +  ft_pic_container_init( FT_Library library ); + + +  /* Destroy the contents of the container. */ +  FT_BASE( void ) +  ft_pic_container_destroy( FT_Library library ); + +#endif /* FT_CONFIG_OPTION_PIC */ + + /* */ + +FT_END_HEADER + +#endif /* __FTPIC_H__ */ + + +/* END */ diff --git a/src/freetype2/freetype/internal/ftrfork.h b/src/freetype2/freetype/internal/ftrfork.h index 94402bc..aa573c8 100644 --- a/src/freetype2/freetype/internal/ftrfork.h +++ b/src/freetype2/freetype/internal/ftrfork.h @@ -4,7 +4,7 @@  /*                                                                         */  /*    Embedded resource forks accessor (specification).                    */  /*                                                                         */ -/*  Copyright 2004, 2006 by                                                */ +/*  Copyright 2004, 2006, 2007 by                                          */  /*  Masatake YAMATO and Redhat K.K.                                        */  /*                                                                         */  /*  This file is part of the FreeType project, and may only be used,       */ @@ -34,7 +34,19 @@ FT_BEGIN_HEADER    /* Number of guessing rules supported in `FT_Raccess_Guess'.            */    /* Don't forget to increment the number if you add a new guessing rule. */ -#define FT_RACCESS_N_RULES  8 +#define FT_RACCESS_N_RULES  9 + + +  /* A structure to describe a reference in a resource by its resource ID */ +  /* and internal offset.  The `POST' resource expects to be concatenated */ +  /* by the order of resource IDs instead of its appearance in the file.  */ + +  typedef struct  FT_RFork_Ref_ +  { +    FT_UShort  res_id; +    FT_ULong   offset; + +  } FT_RFork_Ref;    /*************************************************************************/ diff --git a/src/freetype2/freetype/internal/ftserv.h b/src/freetype2/freetype/internal/ftserv.h index 45d2fa9..569b9f7 100644 --- a/src/freetype2/freetype/internal/ftserv.h +++ b/src/freetype2/freetype/internal/ftserv.h @@ -163,6 +163,298 @@ FT_BEGIN_HEADER    typedef const FT_ServiceDescRec*  FT_ServiceDesc; +  /*************************************************************************/ +  /*                                                                       */ +  /* <Macro>                                                               */ +  /*    FT_DEFINE_SERVICEDESCREC1 .. FT_DEFINE_SERVICEDESCREC6             */ +  /*                                                                       */ +  /* <Description>                                                         */ +  /*    Used to initialize an array of FT_ServiceDescRec structs.          */ +  /*                                                                       */ +  /*    When FT_CONFIG_OPTION_PIC is defined a Create funtion will need    */ +  /*    to called with a pointer where the allocated array is returned.    */ +  /*    And when it is no longer needed a Destroy function needs           */ +  /*    to be called to release that allocation.                           */ +  /*                                                                       */ +  /*    These functions should be manyally called from the pic_init and    */ +  /*    pic_free functions of your module (see FT_DEFINE_MODULE)           */ +  /*                                                                       */ +  /*    When FT_CONFIG_OPTION_PIC is not defined the array will be         */ +  /*    allocated in the global scope (or the scope where the macro        */ +  /*    is used).                                                          */ +  /*                                                                       */ +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICEDESCREC1(class_, serv_id_1, serv_data_1)            \ +  static const FT_ServiceDescRec class_[] =                                  \ +  {                                                                          \ +  {serv_id_1, serv_data_1},                                                  \ +  {NULL, NULL}                                                               \ +  }; +#define FT_DEFINE_SERVICEDESCREC2(class_, serv_id_1, serv_data_1,            \ +        serv_id_2, serv_data_2)                                              \ +  static const FT_ServiceDescRec class_[] =                                  \ +  {                                                                          \ +  {serv_id_1, serv_data_1},                                                  \ +  {serv_id_2, serv_data_2},                                                  \ +  {NULL, NULL}                                                               \ +  }; +#define FT_DEFINE_SERVICEDESCREC3(class_, serv_id_1, serv_data_1,            \ +        serv_id_2, serv_data_2, serv_id_3, serv_data_3)                      \ +  static const FT_ServiceDescRec class_[] =                                  \ +  {                                                                          \ +  {serv_id_1, serv_data_1},                                                  \ +  {serv_id_2, serv_data_2},                                                  \ +  {serv_id_3, serv_data_3},                                                  \ +  {NULL, NULL}                                                               \ +  }; +#define FT_DEFINE_SERVICEDESCREC4(class_, serv_id_1, serv_data_1,            \ +        serv_id_2, serv_data_2, serv_id_3, serv_data_3,                      \ +        serv_id_4, serv_data_4)                                              \ +  static const FT_ServiceDescRec class_[] =                                  \ +  {                                                                          \ +  {serv_id_1, serv_data_1},                                                  \ +  {serv_id_2, serv_data_2},                                                  \ +  {serv_id_3, serv_data_3},                                                  \ +  {serv_id_4, serv_data_4},                                                  \ +  {NULL, NULL}                                                               \ +  }; +#define FT_DEFINE_SERVICEDESCREC5(class_, serv_id_1, serv_data_1,            \ +        serv_id_2, serv_data_2, serv_id_3, serv_data_3,                      \ +        serv_id_4, serv_data_4, serv_id_5, serv_data_5)                      \ +  static const FT_ServiceDescRec class_[] =                                  \ +  {                                                                          \ +  {serv_id_1, serv_data_1},                                                  \ +  {serv_id_2, serv_data_2},                                                  \ +  {serv_id_3, serv_data_3},                                                  \ +  {serv_id_4, serv_data_4},                                                  \ +  {serv_id_5, serv_data_5},                                                  \ +  {NULL, NULL}                                                               \ +  }; +#define FT_DEFINE_SERVICEDESCREC6(class_, serv_id_1, serv_data_1,            \ +        serv_id_2, serv_data_2, serv_id_3, serv_data_3,                      \ +        serv_id_4, serv_data_4, serv_id_5, serv_data_5,                      \ +        serv_id_6, serv_data_6)                                              \ +  static const FT_ServiceDescRec class_[] =                                  \ +  {                                                                          \ +  {serv_id_1, serv_data_1},                                                  \ +  {serv_id_2, serv_data_2},                                                  \ +  {serv_id_3, serv_data_3},                                                  \ +  {serv_id_4, serv_data_4},                                                  \ +  {serv_id_5, serv_data_5},                                                  \ +  {serv_id_6, serv_data_6},                                                  \ +  {NULL, NULL}                                                               \ +  }; + +#else /* FT_CONFIG_OPTION_PIC */  + +#define FT_DEFINE_SERVICEDESCREC1(class_, serv_id_1, serv_data_1)            \ +  void                                                                       \ +  FT_Destroy_Class_##class_( FT_Library library,                             \ +                             FT_ServiceDescRec* clazz )                      \ +  {                                                                          \ +    FT_Memory memory = library->memory;                                      \ +    if ( clazz )                                                             \ +      FT_FREE( clazz );                                                      \ +  }                                                                          \ +                                                                             \ +  FT_Error                                                                   \ +  FT_Create_Class_##class_( FT_Library library,                              \ +                            FT_ServiceDescRec** output_class)                \ +  {                                                                          \ +    FT_ServiceDescRec*  clazz;                                               \ +    FT_Error          error;                                                 \ +    FT_Memory memory = library->memory;                                      \ +                                                                             \ +    if ( FT_ALLOC( clazz, sizeof(*clazz)*2 ) )                               \ +      return error;                                                          \ +    clazz[0].serv_id = serv_id_1;                                            \ +    clazz[0].serv_data = serv_data_1;                                        \ +    clazz[1].serv_id = NULL;                                                 \ +    clazz[1].serv_data = NULL;                                               \ +    *output_class = clazz;                                                   \ +    return FT_Err_Ok;                                                        \ +  }  + +#define FT_DEFINE_SERVICEDESCREC2(class_, serv_id_1, serv_data_1,            \ +        serv_id_2, serv_data_2)                                              \ +  void                                                                       \ +  FT_Destroy_Class_##class_( FT_Library library,                             \ +                             FT_ServiceDescRec* clazz )                      \ +  {                                                                          \ +    FT_Memory memory = library->memory;                                      \ +    if ( clazz )                                                             \ +      FT_FREE( clazz );                                                      \ +  }                                                                          \ +                                                                             \ +  FT_Error                                                                   \ +  FT_Create_Class_##class_( FT_Library library,                              \ +                            FT_ServiceDescRec** output_class)                \ +  {                                                                          \ +    FT_ServiceDescRec*  clazz;                                               \ +    FT_Error          error;                                                 \ +    FT_Memory memory = library->memory;                                      \ +                                                                             \ +    if ( FT_ALLOC( clazz, sizeof(*clazz)*3 ) )                               \ +      return error;                                                          \ +    clazz[0].serv_id = serv_id_1;                                            \ +    clazz[0].serv_data = serv_data_1;                                        \ +    clazz[1].serv_id = serv_id_2;                                            \ +    clazz[1].serv_data = serv_data_2;                                        \ +    clazz[2].serv_id = NULL;                                                 \ +    clazz[2].serv_data = NULL;                                               \ +    *output_class = clazz;                                                   \ +    return FT_Err_Ok;                                                        \ +  }  + +#define FT_DEFINE_SERVICEDESCREC3(class_, serv_id_1, serv_data_1,            \ +        serv_id_2, serv_data_2, serv_id_3, serv_data_3)                      \ +  void                                                                       \ +  FT_Destroy_Class_##class_( FT_Library library,                             \ +                             FT_ServiceDescRec* clazz )                      \ +  {                                                                          \ +    FT_Memory memory = library->memory;                                      \ +    if ( clazz )                                                             \ +      FT_FREE( clazz );                                                      \ +  }                                                                          \ +                                                                             \ +  FT_Error                                                                   \ +  FT_Create_Class_##class_( FT_Library library,                              \ +                            FT_ServiceDescRec** output_class)                \ +  {                                                                          \ +    FT_ServiceDescRec*  clazz;                                               \ +    FT_Error          error;                                                 \ +    FT_Memory memory = library->memory;                                      \ +                                                                             \ +    if ( FT_ALLOC( clazz, sizeof(*clazz)*4 ) )                               \ +      return error;                                                          \ +    clazz[0].serv_id = serv_id_1;                                            \ +    clazz[0].serv_data = serv_data_1;                                        \ +    clazz[1].serv_id = serv_id_2;                                            \ +    clazz[1].serv_data = serv_data_2;                                        \ +    clazz[2].serv_id = serv_id_3;                                            \ +    clazz[2].serv_data = serv_data_3;                                        \ +    clazz[3].serv_id = NULL;                                                 \ +    clazz[3].serv_data = NULL;                                               \ +    *output_class = clazz;                                                   \ +    return FT_Err_Ok;                                                        \ +  }  + +#define FT_DEFINE_SERVICEDESCREC4(class_, serv_id_1, serv_data_1,            \ +        serv_id_2, serv_data_2, serv_id_3, serv_data_3,                      \ +        serv_id_4, serv_data_4)                                              \ +  void                                                                       \ +  FT_Destroy_Class_##class_( FT_Library library,                             \ +                             FT_ServiceDescRec* clazz )                      \ +  {                                                                          \ +    FT_Memory memory = library->memory;                                      \ +    if ( clazz )                                                             \ +      FT_FREE( clazz );                                                      \ +  }                                                                          \ +                                                                             \ +  FT_Error                                                                   \ +  FT_Create_Class_##class_( FT_Library library,                              \ +                            FT_ServiceDescRec** output_class)                \ +  {                                                                          \ +    FT_ServiceDescRec*  clazz;                                               \ +    FT_Error          error;                                                 \ +    FT_Memory memory = library->memory;                                      \ +                                                                             \ +    if ( FT_ALLOC( clazz, sizeof(*clazz)*5 ) )                               \ +      return error;                                                          \ +    clazz[0].serv_id = serv_id_1;                                            \ +    clazz[0].serv_data = serv_data_1;                                        \ +    clazz[1].serv_id = serv_id_2;                                            \ +    clazz[1].serv_data = serv_data_2;                                        \ +    clazz[2].serv_id = serv_id_3;                                            \ +    clazz[2].serv_data = serv_data_3;                                        \ +    clazz[3].serv_id = serv_id_4;                                            \ +    clazz[3].serv_data = serv_data_4;                                        \ +    clazz[4].serv_id = NULL;                                                 \ +    clazz[4].serv_data = NULL;                                               \ +    *output_class = clazz;                                                   \ +    return FT_Err_Ok;                                                        \ +  }  + +#define FT_DEFINE_SERVICEDESCREC5(class_, serv_id_1, serv_data_1,            \ +        serv_id_2, serv_data_2, serv_id_3, serv_data_3, serv_id_4,           \ +        serv_data_4, serv_id_5, serv_data_5)                                 \ +  void                                                                       \ +  FT_Destroy_Class_##class_( FT_Library library,                             \ +                             FT_ServiceDescRec* clazz )                      \ +  {                                                                          \ +    FT_Memory memory = library->memory;                                      \ +    if ( clazz )                                                             \ +      FT_FREE( clazz );                                                      \ +  }                                                                          \ +                                                                             \ +  FT_Error                                                                   \ +  FT_Create_Class_##class_( FT_Library library,                              \ +                            FT_ServiceDescRec** output_class)                \ +  {                                                                          \ +    FT_ServiceDescRec*  clazz;                                               \ +    FT_Error          error;                                                 \ +    FT_Memory memory = library->memory;                                      \ +                                                                             \ +    if ( FT_ALLOC( clazz, sizeof(*clazz)*6 ) )                               \ +      return error;                                                          \ +    clazz[0].serv_id = serv_id_1;                                            \ +    clazz[0].serv_data = serv_data_1;                                        \ +    clazz[1].serv_id = serv_id_2;                                            \ +    clazz[1].serv_data = serv_data_2;                                        \ +    clazz[2].serv_id = serv_id_3;                                            \ +    clazz[2].serv_data = serv_data_3;                                        \ +    clazz[3].serv_id = serv_id_4;                                            \ +    clazz[3].serv_data = serv_data_4;                                        \ +    clazz[4].serv_id = serv_id_5;                                            \ +    clazz[4].serv_data = serv_data_5;                                        \ +    clazz[5].serv_id = NULL;                                                 \ +    clazz[5].serv_data = NULL;                                               \ +    *output_class = clazz;                                                   \ +    return FT_Err_Ok;                                                        \ +  }  + +#define FT_DEFINE_SERVICEDESCREC6(class_, serv_id_1, serv_data_1,            \ +        serv_id_2, serv_data_2, serv_id_3, serv_data_3,                      \ +        serv_id_4, serv_data_4, serv_id_5, serv_data_5,                      \ +        serv_id_6, serv_data_6)                                              \ +  void                                                                       \ +  FT_Destroy_Class_##class_( FT_Library library,                             \ +                             FT_ServiceDescRec* clazz )                      \ +  {                                                                          \ +    FT_Memory memory = library->memory;                                      \ +    if ( clazz )                                                             \ +      FT_FREE( clazz );                                                      \ +  }                                                                          \ +                                                                             \ +  FT_Error                                                                   \ +  FT_Create_Class_##class_( FT_Library library,                              \ +                            FT_ServiceDescRec** output_class)                \ +  {                                                                          \ +    FT_ServiceDescRec*  clazz;                                               \ +    FT_Error          error;                                                 \ +    FT_Memory memory = library->memory;                                      \ +                                                                             \ +    if ( FT_ALLOC( clazz, sizeof(*clazz)*7 ) )                               \ +      return error;                                                          \ +    clazz[0].serv_id = serv_id_1;                                            \ +    clazz[0].serv_data = serv_data_1;                                        \ +    clazz[1].serv_id = serv_id_2;                                            \ +    clazz[1].serv_data = serv_data_2;                                        \ +    clazz[2].serv_id = serv_id_3;                                            \ +    clazz[2].serv_data = serv_data_3;                                        \ +    clazz[3].serv_id = serv_id_4;                                            \ +    clazz[3].serv_data = serv_data_4;                                        \ +    clazz[4].serv_id = serv_id_5;                                            \ +    clazz[4].serv_data = serv_data_5;                                        \ +    clazz[5].serv_id = serv_id_6;                                            \ +    clazz[5].serv_data = serv_data_6;                                        \ +    clazz[6].serv_id = NULL;                                                 \ +    clazz[6].serv_data = NULL;                                               \ +    *output_class = clazz;                                                   \ +    return FT_Err_Ok;                                                        \ +  }  +#endif /* FT_CONFIG_OPTION_PIC */     /*     *  Parse a list of FT_ServiceDescRec descriptors and look for @@ -301,6 +593,7 @@ FT_BEGIN_HEADER     */  #define FT_SERVICE_BDF_H                <freetype/internal/services/svbdf.h> +#define FT_SERVICE_CID_H                <freetype/internal/services/svcid.h>  #define FT_SERVICE_GLYPH_DICT_H         <freetype/internal/services/svgldict.h>  #define FT_SERVICE_GX_VALIDATE_H        <freetype/internal/services/svgxval.h>  #define FT_SERVICE_KERNING_H            <freetype/internal/services/svkern.h> diff --git a/src/freetype2/freetype/internal/fttrace.h b/src/freetype2/freetype/internal/fttrace.h index 81916fc..e9b383a 100644 --- a/src/freetype2/freetype/internal/fttrace.h +++ b/src/freetype2/freetype/internal/fttrace.h @@ -4,7 +4,7 @@  /*                                                                         */  /*    Tracing handling (specification only).                               */  /*                                                                         */ -/*  Copyright 2002, 2004, 2005, 2006 by                                    */ +/*  Copyright 2002, 2004, 2005, 2006, 2007 by                              */  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */  /*                                                                         */  /*  This file is part of the FreeType project, and may only be used,       */ @@ -31,16 +31,19 @@ FT_TRACE_DEF( init )      /* initialization          (ftinit.c)   */  FT_TRACE_DEF( objs )      /* base objects            (ftobjs.c)   */  FT_TRACE_DEF( outline )   /* outline management      (ftoutln.c)  */  FT_TRACE_DEF( glyph )     /* glyph management        (ftglyph.c)  */ +FT_TRACE_DEF( gloader )   /* glyph loader            (ftgloadr.c) */  FT_TRACE_DEF( raster )    /* monochrome rasterizer   (ftraster.c) */  FT_TRACE_DEF( smooth )    /* anti-aliasing raster    (ftgrays.c)  */  FT_TRACE_DEF( mm )        /* MM interface            (ftmm.c)     */  FT_TRACE_DEF( raccess )   /* resource fork accessor  (ftrfork.c)  */ +FT_TRACE_DEF( synth )     /* bold/slant synthesizer  (ftsynth.c)  */    /* Cache sub-system */  FT_TRACE_DEF( cache )     /* cache sub-system        (ftcache.c, etc.) */    /* SFNT driver components */ +FT_TRACE_DEF( sfdriver )  /* SFNT font driver        (sfdriver.c) */  FT_TRACE_DEF( sfobjs )    /* SFNT object handler     (sfobjs.c)   */  FT_TRACE_DEF( ttcmap )    /* charmap handler         (ttcmap.c)   */  FT_TRACE_DEF( ttkern )    /* kerning handler         (ttkern.c)   */ @@ -48,6 +51,7 @@ FT_TRACE_DEF( ttload )    /* basic TrueType tables   (ttload.c)   */  FT_TRACE_DEF( ttmtx )     /* metrics-related tables  (ttmtx.c)    */  FT_TRACE_DEF( ttpost )    /* PS table processing     (ttpost.c)   */  FT_TRACE_DEF( ttsbit )    /* TrueType sbit handling  (ttsbit.c)   */ +FT_TRACE_DEF( ttbdf )     /* TrueType embedded BDF   (ttbdf.c)    */    /* TrueType driver components */  FT_TRACE_DEF( ttdriver )  /* TT font driver          (ttdriver.c) */ @@ -58,6 +62,7 @@ FT_TRACE_DEF( ttpload )   /* TT data/program loader  (ttpload.c)  */  FT_TRACE_DEF( ttgxvar )   /* TrueType GX var handler (ttgxvar.c)  */    /* Type 1 driver components */ +FT_TRACE_DEF( t1afm )  FT_TRACE_DEF( t1driver )  FT_TRACE_DEF( t1gload )  FT_TRACE_DEF( t1hint ) @@ -114,6 +119,7 @@ FT_TRACE_DEF( otvgdef )  FT_TRACE_DEF( otvgpos )  FT_TRACE_DEF( otvgsub )  FT_TRACE_DEF( otvjstf ) +FT_TRACE_DEF( otvmath )    /* TrueTypeGX/AAT validation components */  FT_TRACE_DEF( gxvmodule ) diff --git a/src/freetype2/freetype/internal/internal.h b/src/freetype2/freetype/internal/internal.h index 27d5dc5..f500a65 100644 --- a/src/freetype2/freetype/internal/internal.h +++ b/src/freetype2/freetype/internal/internal.h @@ -25,6 +25,7 @@  #define FT_INTERNAL_OBJECTS_H             <freetype/internal/ftobjs.h> +#define FT_INTERNAL_PIC_H                 <freetype/internal/ftpic.h>  #define FT_INTERNAL_STREAM_H              <freetype/internal/ftstream.h>  #define FT_INTERNAL_MEMORY_H              <freetype/internal/ftmemory.h>  #define FT_INTERNAL_DEBUG_H               <freetype/internal/ftdebug.h> diff --git a/src/freetype2/freetype/internal/psaux.h b/src/freetype2/freetype/internal/psaux.h index 4baf7a0..a96e0df 100644 --- a/src/freetype2/freetype/internal/psaux.h +++ b/src/freetype2/freetype/internal/psaux.h @@ -5,7 +5,7 @@  /*    Auxiliary functions and data structures related to PostScript fonts  */  /*    (specification).                                                     */  /*                                                                         */ -/*  Copyright 1996-2001, 2002, 2003, 2004, 2006 by                         */ +/*  Copyright 1996-2001, 2002, 2003, 2004, 2006, 2008, 2009 by             */  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */  /*                                                                         */  /*  This file is part of the FreeType project, and may only be used,       */ @@ -197,6 +197,7 @@ FT_BEGIN_HEADER    {      T1_FIELD_LOCATION_CID_INFO,      T1_FIELD_LOCATION_FONT_DICT, +    T1_FIELD_LOCATION_FONT_EXTRA,      T1_FIELD_LOCATION_FONT_INFO,      T1_FIELD_LOCATION_PRIVATE,      T1_FIELD_LOCATION_BBOX, @@ -227,7 +228,11 @@ FT_BEGIN_HEADER      FT_UInt             array_max;    /* maximal number of elements for */                                        /* array                          */      FT_UInt             count_offset; /* offset of element count for    */ -                                      /* arrays                         */ +                                      /* arrays; must not be zero if in */ +                                      /* use -- in other words, a       */ +                                      /* `num_FOO' element must not     */ +                                      /* start the used structure if we */ +                                      /* parse a `FOO' array            */      FT_UInt             dict;         /* where we expect it             */    } T1_FieldRec; @@ -355,7 +360,7 @@ FT_BEGIN_HEADER      FT_Error      (*to_bytes)( PS_Parser  parser,                   FT_Byte*   bytes, -                 FT_Long    max_bytes, +                 FT_Offset  max_bytes,                   FT_Long*   pnum_bytes,                   FT_Bool    delimiters ); @@ -528,13 +533,6 @@ FT_BEGIN_HEADER    /*                                                                       */    /*    max_contours :: Maximal number of contours in builder outline.     */    /*                                                                       */ -  /*    last         :: The last point position.                           */ -  /*                                                                       */ -  /*    scale_x      :: The horizontal scaling value (FUnits to            */ -  /*                    sub-pixels).                                       */ -  /*                                                                       */ -  /*    scale_y      :: The vertical scaling value (FUnits to sub-pixels). */ -  /*                                                                       */    /*    pos_x        :: The horizontal translation (if composite glyph).   */    /*                                                                       */    /*    pos_y        :: The vertical translation (if composite glyph).     */ @@ -567,11 +565,6 @@ FT_BEGIN_HEADER      FT_Outline*     base;      FT_Outline*     current; -    FT_Vector       last; - -    FT_Fixed        scale_x; -    FT_Fixed        scale_y; -      FT_Pos          pos_x;      FT_Pos          pos_y; @@ -582,7 +575,6 @@ FT_BEGIN_HEADER      T1_ParseState   parse_state;      FT_Bool         load_points;      FT_Bool         no_recurse; -    FT_Bool         shift;      FT_Bool         metrics_only; @@ -697,9 +689,11 @@ FT_BEGIN_HEADER      T1_Decoder_Callback  parse_callback;      T1_Decoder_FuncsRec  funcs; -    FT_Int*              buildchar; +    FT_Long*             buildchar;      FT_UInt              len_buildchar; +    FT_Bool              seac; +    } T1_DecoderRec; @@ -761,7 +755,7 @@ FT_BEGIN_HEADER      FT_Int      (*get_index)( const char*  name, -                  FT_UInt      len, +                  FT_Offset    len,                    void*        user_data );      void*         user_data; diff --git a/src/freetype2/freetype/internal/pshints.h b/src/freetype2/freetype/internal/pshints.h index 48452c0..0c35765 100644 --- a/src/freetype2/freetype/internal/pshints.h +++ b/src/freetype2/freetype/internal/pshints.h @@ -6,7 +6,7 @@  /*    recorders (specification only).  These are used to support native    */  /*    T1/T2 hints in the `type1', `cid', and `cff' font drivers.           */  /*                                                                         */ -/*  Copyright 2001, 2002, 2003, 2005, 2006, 2007 by                        */ +/*  Copyright 2001, 2002, 2003, 2005, 2006, 2007, 2009 by                  */  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */  /*                                                                         */  /*  This file is part of the FreeType project, and may only be used,       */ @@ -157,7 +157,8 @@ FT_BEGIN_HEADER     *     0 for horizontal stems (hstem), 1 for vertical ones (vstem).     *     *   coords :: -   *     Array of 2 integers, used as (position,length) stem descriptor. +   *     Array of 2 coordinates in 16.16 format, used as (position,length) +   *     stem descriptor.     *     * @note:     *   Use vertical coordinates (y) for horizontal stems (dim=0).  Use @@ -175,9 +176,9 @@ FT_BEGIN_HEADER     *     */    typedef void -  (*T1_Hints_SetStemFunc)( T1_Hints  hints, -                           FT_UInt   dimension, -                           FT_Long*  coords ); +  (*T1_Hints_SetStemFunc)( T1_Hints   hints, +                           FT_UInt    dimension, +                           FT_Fixed*  coords );    /************************************************************************* @@ -197,8 +198,8 @@ FT_BEGIN_HEADER     *     0 for horizontal stems, 1 for vertical ones.     *     *   coords :: -   *     An array of 6 integers, holding 3 (position,length) pairs for the -   *     counter-controlled stems. +   *     An array of 6 values in 16.16 format, holding 3 (position,length) +   *     pairs for the counter-controlled stems.     *     * @note:     *   Use vertical coordinates (y) for horizontal stems (dim=0).  Use @@ -209,9 +210,9 @@ FT_BEGIN_HEADER     *     */    typedef void -  (*T1_Hints_SetStem3Func)( T1_Hints  hints, -                            FT_UInt   dimension, -                            FT_Long*  coords ); +  (*T1_Hints_SetStem3Func)( T1_Hints   hints, +                            FT_UInt    dimension, +                            FT_Fixed*  coords );    /************************************************************************* @@ -446,7 +447,7 @@ FT_BEGIN_HEADER     *     The number of stems.     *     *   coords :: -   *     An array of `count' (position,length) pairs. +   *     An array of `count' (position,length) pairs in 16.16 format.     *     * @note:     *   Use vertical coordinates (y) for horizontal stems (dim=0).  Use @@ -678,6 +679,30 @@ FT_BEGIN_HEADER    typedef PSHinter_Interface*  PSHinter_Service; +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_PSHINTER_INTERFACE(class_, get_globals_funcs_,             \ +                                     get_t1_funcs_, get_t2_funcs_)           \ +  static const PSHinter_Interface class_ =                                   \ +  {                                                                          \ +    get_globals_funcs_, get_t1_funcs_, get_t2_funcs_                         \ +  }; + +#else /* FT_CONFIG_OPTION_PIC */  + +#define FT_DEFINE_PSHINTER_INTERFACE(class_, get_globals_funcs_,             \ +                                     get_t1_funcs_, get_t2_funcs_)           \ +  void                                                                       \ +  FT_Init_Class_##class_( FT_Library library,                                \ +                          PSHinter_Interface*  clazz)                        \ +  {                                                                          \ +    FT_UNUSED(library);                                                      \ +    clazz->get_globals_funcs = get_globals_funcs_;                           \ +    clazz->get_t1_funcs = get_t1_funcs_;                                     \ +    clazz->get_t2_funcs = get_t2_funcs_;                                     \ +  }  + +#endif /* FT_CONFIG_OPTION_PIC */   FT_END_HEADER diff --git a/src/freetype2/freetype/internal/services/svbdf.h b/src/freetype2/freetype/internal/services/svbdf.h index 0f7fc61..9264239 100644 --- a/src/freetype2/freetype/internal/services/svbdf.h +++ b/src/freetype2/freetype/internal/services/svbdf.h @@ -45,6 +45,26 @@ FT_BEGIN_HEADER      FT_BDF_GetPropertyFunc   get_property;    }; +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_BDFRec(class_, get_charset_id_, get_property_) \ +  static const FT_Service_BDFRec class_ =                                \ +  {                                                                      \ +    get_charset_id_, get_property_                                       \ +  }; + +#else /* FT_CONFIG_OPTION_PIC */  + +#define FT_DEFINE_SERVICE_BDFRec(class_, get_charset_id_, get_property_) \ +  void                                                                   \ +  FT_Init_Class_##class_( FT_Service_BDFRec*  clazz )                    \ +  {                                                                      \ +    clazz->get_charset_id = get_charset_id_;                             \ +    clazz->get_property = get_property_;                                 \ +  }  + +#endif /* FT_CONFIG_OPTION_PIC */  +    /* */ diff --git a/src/freetype2/freetype/internal/services/svcid.h b/src/freetype2/freetype/internal/services/svcid.h new file mode 100644 index 0000000..9b874b5 --- /dev/null +++ b/src/freetype2/freetype/internal/services/svcid.h @@ -0,0 +1,83 @@ +/***************************************************************************/ +/*                                                                         */ +/*  svcid.h                                                                */ +/*                                                                         */ +/*    The FreeType CID font services (specification).                      */ +/*                                                                         */ +/*  Copyright 2007, 2009 by Derek Clegg, Michael Toftdal.                  */ +/*                                                                         */ +/*  This file is part of the FreeType project, and may only be used,       */ +/*  modified, and distributed under the terms of the FreeType project      */ +/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */ +/*  this file you indicate that you have read the license and              */ +/*  understand and accept it fully.                                        */ +/*                                                                         */ +/***************************************************************************/ + + +#ifndef __SVCID_H__ +#define __SVCID_H__ + +#include FT_INTERNAL_SERVICE_H + + +FT_BEGIN_HEADER + + +#define FT_SERVICE_ID_CID  "CID" + +  typedef FT_Error +  (*FT_CID_GetRegistryOrderingSupplementFunc)( FT_Face       face, +                                               const char*  *registry, +                                               const char*  *ordering, +                                               FT_Int       *supplement ); +  typedef FT_Error +  (*FT_CID_GetIsInternallyCIDKeyedFunc)( FT_Face   face, +                                         FT_Bool  *is_cid ); +  typedef FT_Error +  (*FT_CID_GetCIDFromGlyphIndexFunc)( FT_Face   face, +                                      FT_UInt   glyph_index, +                                      FT_UInt  *cid ); + +  FT_DEFINE_SERVICE( CID ) +  { +    FT_CID_GetRegistryOrderingSupplementFunc  get_ros; +    FT_CID_GetIsInternallyCIDKeyedFunc        get_is_cid; +    FT_CID_GetCIDFromGlyphIndexFunc           get_cid_from_glyph_index; +  }; + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_CIDREC(class_, get_ros_,                           \ +        get_is_cid_, get_cid_from_glyph_index_ )                             \ +  static const FT_Service_CIDRec class_ =                                    \ +  {                                                                          \ +    get_ros_, get_is_cid_, get_cid_from_glyph_index_                         \ +  }; + +#else /* FT_CONFIG_OPTION_PIC */  + +#define FT_DEFINE_SERVICE_CIDREC(class_, get_ros_,                           \ +        get_is_cid_, get_cid_from_glyph_index_ )                             \ +  void                                                                       \ +  FT_Init_Class_##class_( FT_Library library,                                \ +                          FT_Service_CIDRec* clazz)                          \ +  {                                                                          \ +    FT_UNUSED(library);                                                      \ +    clazz->get_ros = get_ros_;                                               \ +    clazz->get_is_cid = get_is_cid_;                                         \ +    clazz->get_cid_from_glyph_index = get_cid_from_glyph_index_;             \ +  }  + +#endif /* FT_CONFIG_OPTION_PIC */  + +  /* */ + + +FT_END_HEADER + + +#endif /* __SVCID_H__ */ + + +/* END */ diff --git a/src/freetype2/freetype/internal/services/svgldict.h b/src/freetype2/freetype/internal/services/svgldict.h index e5e56b2..d66a41d 100644 --- a/src/freetype2/freetype/internal/services/svgldict.h +++ b/src/freetype2/freetype/internal/services/svgldict.h @@ -51,6 +51,28 @@ FT_BEGIN_HEADER      FT_GlyphDict_NameIndexFunc  name_index;  /* optional */    }; +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_GLYPHDICTREC(class_, get_name_, name_index_) \ +  static const FT_Service_GlyphDictRec class_ =                        \ +  {                                                                    \ +    get_name_, name_index_                                             \ +  }; + +#else /* FT_CONFIG_OPTION_PIC */  + +#define FT_DEFINE_SERVICE_GLYPHDICTREC(class_, get_name_, name_index_) \ +  void                                                                 \ +  FT_Init_Class_##class_( FT_Library library,                          \ +                          FT_Service_GlyphDictRec* clazz)              \ +  {                                                                    \ +    FT_UNUSED(library);                                                \ +    clazz->get_name = get_name_;                                       \ +    clazz->name_index = name_index_;                                   \ +  }  + +#endif /* FT_CONFIG_OPTION_PIC */  +    /* */ diff --git a/src/freetype2/freetype/internal/services/svmm.h b/src/freetype2/freetype/internal/services/svmm.h index 8a99ec4..66e1da2 100644 --- a/src/freetype2/freetype/internal/services/svmm.h +++ b/src/freetype2/freetype/internal/services/svmm.h @@ -68,6 +68,31 @@ FT_BEGIN_HEADER      FT_Set_Var_Design_Func  set_var_design;    }; +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_MULTIMASTERSREC(class_, get_mm_, set_mm_design_,   \ +        set_mm_blend_, get_mm_var_, set_var_design_)                         \ +  static const FT_Service_MultiMastersRec class_ =                           \ +  {                                                                          \ +    get_mm_, set_mm_design_, set_mm_blend_, get_mm_var_, set_var_design_     \ +  }; + +#else /* FT_CONFIG_OPTION_PIC */  + +#define FT_DEFINE_SERVICE_MULTIMASTERSREC(class_, get_mm_, set_mm_design_,   \ +        set_mm_blend_, get_mm_var_, set_var_design_)                         \ +  void                                                                       \ +  FT_Init_Class_##class_( FT_Service_MultiMastersRec*  clazz )               \ +  {                                                                          \ +    clazz->get_mm = get_mm_;                                                 \ +    clazz->set_mm_design = set_mm_design_;                                   \ +    clazz->set_mm_blend = set_mm_blend_;                                     \ +    clazz->get_mm_var = get_mm_var_;                                         \ +    clazz->set_var_design = set_var_design_;                                 \ +  }  + +#endif /* FT_CONFIG_OPTION_PIC */  +    /* */ diff --git a/src/freetype2/freetype/internal/services/svpostnm.h b/src/freetype2/freetype/internal/services/svpostnm.h index 282da68..106c54f 100644 --- a/src/freetype2/freetype/internal/services/svpostnm.h +++ b/src/freetype2/freetype/internal/services/svpostnm.h @@ -46,6 +46,27 @@ FT_BEGIN_HEADER      FT_PsName_GetFunc  get_ps_font_name;    }; +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_PSFONTNAMEREC(class_, get_ps_font_name_) \ +  static const FT_Service_PsFontNameRec class_ =                   \ +  {                                                                \ +    get_ps_font_name_                                              \ +  }; + +#else /* FT_CONFIG_OPTION_PIC */  + +#define FT_DEFINE_SERVICE_PSFONTNAMEREC(class_, get_ps_font_name_) \ +  void                                                             \ +  FT_Init_Class_##class_( FT_Library library,                      \ +                          FT_Service_PsFontNameRec* clazz)         \ +  {                                                                \ +    FT_UNUSED(library);                                            \ +    clazz->get_ps_font_name = get_ps_font_name_;                   \ +  }  + +#endif /* FT_CONFIG_OPTION_PIC */  +    /* */ diff --git a/src/freetype2/freetype/internal/services/svpscmap.h b/src/freetype2/freetype/internal/services/svpscmap.h index c4e25ed..961030c 100644 --- a/src/freetype2/freetype/internal/services/svpscmap.h +++ b/src/freetype2/freetype/internal/services/svpscmap.h @@ -98,7 +98,7 @@ FT_BEGIN_HEADER    (*PS_Unicodes_CharIndexFunc)( PS_Unicodes  unicodes,                                  FT_UInt32    unicode ); -  typedef FT_ULong +  typedef FT_UInt32    (*PS_Unicodes_CharNextFunc)( PS_Unicodes  unicodes,                                 FT_UInt32   *unicode ); @@ -117,6 +117,41 @@ FT_BEGIN_HEADER      const unsigned short*      adobe_expert_encoding;    }; + +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_PSCMAPSREC(class_, unicode_value_, unicodes_init_, \ +        unicodes_char_index_, unicodes_char_next_, macintosh_name_,          \ +        adobe_std_strings_, adobe_std_encoding_, adobe_expert_encoding_)     \ +  static const FT_Service_PsCMapsRec class_ =                                \ +  {                                                                          \ +    unicode_value_, unicodes_init_,                                          \ +    unicodes_char_index_, unicodes_char_next_, macintosh_name_,              \ +    adobe_std_strings_, adobe_std_encoding_, adobe_expert_encoding_          \ +  }; + +#else /* FT_CONFIG_OPTION_PIC */  + +#define FT_DEFINE_SERVICE_PSCMAPSREC(class_, unicode_value_, unicodes_init_, \ +        unicodes_char_index_, unicodes_char_next_, macintosh_name_,          \ +        adobe_std_strings_, adobe_std_encoding_, adobe_expert_encoding_)     \ +  void                                                                       \ +  FT_Init_Class_##class_( FT_Library library,                                \ +                          FT_Service_PsCMapsRec* clazz)                      \ +  {                                                                          \ +    FT_UNUSED(library);                                                      \ +    clazz->unicode_value = unicode_value_;                                   \ +    clazz->unicodes_init = unicodes_init_;                                   \ +    clazz->unicodes_char_index = unicodes_char_index_;                       \ +    clazz->unicodes_char_next = unicodes_char_next_;                         \ +    clazz->macintosh_name = macintosh_name_;                                 \ +    clazz->adobe_std_strings = adobe_std_strings_;                           \ +    clazz->adobe_std_encoding = adobe_std_encoding_;                         \ +    clazz->adobe_expert_encoding = adobe_expert_encoding_;                   \ +  }  + +#endif /* FT_CONFIG_OPTION_PIC */  +    /* */ diff --git a/src/freetype2/freetype/internal/services/svpsinfo.h b/src/freetype2/freetype/internal/services/svpsinfo.h index 63f5db9..91ba91e 100644 --- a/src/freetype2/freetype/internal/services/svpsinfo.h +++ b/src/freetype2/freetype/internal/services/svpsinfo.h @@ -4,7 +4,7 @@  /*                                                                         */  /*    The FreeType PostScript info service (specification).                */  /*                                                                         */ -/*  Copyright 2003, 2004 by                                                */ +/*  Copyright 2003, 2004, 2009 by                                          */  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */  /*                                                                         */  /*  This file is part of the FreeType project, and may only be used,       */ @@ -33,6 +33,10 @@ FT_BEGIN_HEADER    (*PS_GetFontInfoFunc)( FT_Face          face,                           PS_FontInfoRec*  afont_info ); +  typedef FT_Error +  (*PS_GetFontExtraFunc)( FT_Face           face, +                          PS_FontExtraRec*  afont_extra ); +    typedef FT_Int    (*PS_HasGlyphNamesFunc)( FT_Face   face ); @@ -44,10 +48,38 @@ FT_BEGIN_HEADER    FT_DEFINE_SERVICE( PsInfo )    {      PS_GetFontInfoFunc     ps_get_font_info; +    PS_GetFontExtraFunc    ps_get_font_extra;      PS_HasGlyphNamesFunc   ps_has_glyph_names;      PS_GetFontPrivateFunc  ps_get_font_private;    }; +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_PSINFOREC(class_, get_font_info_,      \ +        ps_get_font_extra_, has_glyph_names_, get_font_private_) \ +  static const FT_Service_PsInfoRec class_ =                     \ +  {                                                              \ +    get_font_info_, ps_get_font_extra_, has_glyph_names_,        \ +    get_font_private_                                            \ +  }; + +#else /* FT_CONFIG_OPTION_PIC */  + +#define FT_DEFINE_SERVICE_PSINFOREC(class_, get_font_info_,      \ +        ps_get_font_extra_, has_glyph_names_, get_font_private_) \ +  void                                                           \ +  FT_Init_Class_##class_( FT_Library library,                    \ +                          FT_Service_PsInfoRec*  clazz)          \ +  {                                                              \ +    FT_UNUSED(library);                                          \ +    clazz->ps_get_font_info = get_font_info_;                    \ +    clazz->ps_get_font_extra = ps_get_font_extra_;               \ +    clazz->ps_has_glyph_names = has_glyph_names_;                \ +    clazz->ps_get_font_private = get_font_private_;              \ +  }  + +#endif /* FT_CONFIG_OPTION_PIC */  +    /* */ diff --git a/src/freetype2/freetype/internal/services/svsfnt.h b/src/freetype2/freetype/internal/services/svsfnt.h index b4a85d9..30bb162 100644 --- a/src/freetype2/freetype/internal/services/svsfnt.h +++ b/src/freetype2/freetype/internal/services/svsfnt.h @@ -58,6 +58,7 @@ FT_BEGIN_HEADER    (*FT_SFNT_TableInfoFunc)( FT_Face    face,                              FT_UInt    idx,                              FT_ULong  *tag, +                            FT_ULong  *offset,                              FT_ULong  *length ); @@ -68,6 +69,27 @@ FT_BEGIN_HEADER      FT_SFNT_TableInfoFunc  table_info;    }; +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_SFNT_TABLEREC(class_, load_, get_, info_)  \ +  static const FT_Service_SFNT_TableRec class_ =                     \ +  {                                                                  \ +    load_, get_, info_                                               \ +  }; + +#else /* FT_CONFIG_OPTION_PIC */  + +#define FT_DEFINE_SERVICE_SFNT_TABLEREC(class_, load_, get_, info_) \ +  void                                                              \ +  FT_Init_Class_##class_( FT_Service_SFNT_TableRec*  clazz )        \ +  {                                                                 \ +    clazz->load_table = load_;                                      \ +    clazz->get_table = get_;                                        \ +    clazz->table_info = info_;                                      \ +  }  + +#endif /* FT_CONFIG_OPTION_PIC */  +    /* */ diff --git a/src/freetype2/freetype/internal/services/svttcmap.h b/src/freetype2/freetype/internal/services/svttcmap.h index 1e02d15..8af0035 100644 --- a/src/freetype2/freetype/internal/services/svttcmap.h +++ b/src/freetype2/freetype/internal/services/svttcmap.h @@ -1,13 +1,13 @@  /***************************************************************************/  /*                                                                         */ -/*  svsttcmap.h                                                            */ +/*  svttcmap.h                                                             */  /*                                                                         */  /*    The FreeType TrueType/sfnt cmap extra information service.           */  /*                                                                         */  /*  Copyright 2003 by                                                      */  /*  Masatake YAMATO, Redhat K.K.                                           */  /*                                                                         */ -/*  Copyright 2003 by                                                      */ +/*  Copyright 2003, 2008 by                                                */  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */  /*                                                                         */  /*  This file is part of the FreeType project, and may only be used,       */ @@ -49,6 +49,13 @@ FT_BEGIN_HEADER    /*      The language ID used in Mac fonts.  Definitions of values are in */    /*      freetype/ttnameid.h.                                             */    /*                                                                       */ +  /*    format ::                                                          */ +  /*      The cmap format.  OpenType 1.5 defines the formats 0 (byte       */ +  /*      encoding table), 2~(high-byte mapping through table), 4~(segment */ +  /*      mapping to delta values), 6~(trimmed table mapping), 8~(mixed    */ +  /*      16-bit and 32-bit coverage), 10~(trimmed array), 12~(segmented   */ +  /*      coverage), and 14 (Unicode Variation Sequences).                 */ +  /*                                                                       */    typedef struct  TT_CMapInfo_    {      FT_ULong language; @@ -67,6 +74,27 @@ FT_BEGIN_HEADER      TT_CMap_Info_GetFunc  get_cmap_info;    }; +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_TTCMAPSREC(class_, get_cmap_info_)  \ +  static const FT_Service_TTCMapsRec class_ =                 \ +  {                                                           \ +    get_cmap_info_                                            \ +  }; + +#else /* FT_CONFIG_OPTION_PIC */  + +#define FT_DEFINE_SERVICE_TTCMAPSREC(class_, get_cmap_info_) \ +  void                                                       \ +  FT_Init_Class_##class_( FT_Library library,                \ +                          FT_Service_TTCMapsRec*  clazz)     \ +  {                                                          \ +    FT_UNUSED(library);                                      \ +    clazz->get_cmap_info = get_cmap_info_;                   \ +  }  + +#endif /* FT_CONFIG_OPTION_PIC */  +    /* */ diff --git a/src/freetype2/freetype/internal/services/svttglyf.h b/src/freetype2/freetype/internal/services/svttglyf.h index e57d484..ab2dc9a 100644 --- a/src/freetype2/freetype/internal/services/svttglyf.h +++ b/src/freetype2/freetype/internal/services/svttglyf.h @@ -37,6 +37,25 @@ FT_BEGIN_HEADER      TT_Glyf_GetLocationFunc  get_location;    }; +#ifndef FT_CONFIG_OPTION_PIC + +#define FT_DEFINE_SERVICE_TTGLYFREC(class_, get_location_ )   \ +  static const FT_Service_TTGlyfRec class_ =                  \ +  {                                                           \ +    get_location_                                             \ +  }; + +#else /* FT_CONFIG_OPTION_PIC */  + +#define FT_DEFINE_SERVICE_TTGLYFREC(class_, get_location_ )   \ +  void                                                        \ +  FT_Init_Class_##class_( FT_Service_TTGlyfRec*  clazz )      \ +  {                                                           \ +    clazz->get_location = get_location_;                      \ +  }  + +#endif /* FT_CONFIG_OPTION_PIC */  +    /* */ diff --git a/src/freetype2/freetype/internal/sfnt.h b/src/freetype2/freetype/internal/sfnt.h index 7e8f684..6326deb 100644 --- a/src/freetype2/freetype/internal/sfnt.h +++ b/src/freetype2/freetype/internal/sfnt.h @@ -753,6 +753,141 @@ FT_BEGIN_HEADER    /* transitional */    typedef SFNT_Interface*   SFNT_Service; +#ifndef FT_CONFIG_OPTION_PIC + +#ifdef FT_CONFIG_OPTION_OLD_INTERNALS +#define FT_DEFINE_DRIVERS_OLD_INTERNAL(a) \ +  a,  +#else +  #define FT_DEFINE_DRIVERS_OLD_INTERNAL(a) +#endif +#define FT_INTERNAL(a) \ +  a,  + +#define FT_DEFINE_SFNT_INTERFACE(class_,                                     \ +    goto_table_, init_face_, load_face_, done_face_, get_interface_,         \ +    load_any_, load_sfnt_header_, load_directory_, load_head_,               \ +    load_hhea_, load_cmap_, load_maxp_, load_os2_, load_post_,               \ +    load_name_, free_name_, load_hdmx_stub_, free_hdmx_stub_,                \ +    load_kern_, load_gasp_, load_pclt_, load_bhed_,                          \ +    set_sbit_strike_stub_, load_sbits_stub_, find_sbit_image_,               \ +    load_sbit_metrics_, load_sbit_image_, free_sbits_stub_,                  \ +    get_psname_, free_psnames_, load_charmap_stub_, free_charmap_stub_,      \ +    get_kerning_, load_font_dir_, load_hmtx_, load_eblc_, free_eblc_,        \ +    set_sbit_strike_, load_strike_metrics_, get_metrics_ )                   \ +  static const SFNT_Interface class_ =                                       \ +  {                                                                          \ +    FT_INTERNAL(goto_table_) \ +    FT_INTERNAL(init_face_) \ +    FT_INTERNAL(load_face_) \ +    FT_INTERNAL(done_face_) \ +    FT_INTERNAL(get_interface_) \ +    FT_INTERNAL(load_any_) \ +    FT_DEFINE_DRIVERS_OLD_INTERNAL(load_sfnt_header_) \ +    FT_DEFINE_DRIVERS_OLD_INTERNAL(load_directory_) \ +    FT_INTERNAL(load_head_) \ +    FT_INTERNAL(load_hhea_) \ +    FT_INTERNAL(load_cmap_) \ +    FT_INTERNAL(load_maxp_) \ +    FT_INTERNAL(load_os2_) \ +    FT_INTERNAL(load_post_) \ +    FT_INTERNAL(load_name_) \ +    FT_INTERNAL(free_name_) \ +    FT_DEFINE_DRIVERS_OLD_INTERNAL(load_hdmx_stub_) \ +    FT_DEFINE_DRIVERS_OLD_INTERNAL(free_hdmx_stub_) \ +    FT_INTERNAL(load_kern_) \ +    FT_INTERNAL(load_gasp_) \ +    FT_INTERNAL(load_pclt_) \ +    FT_INTERNAL(load_bhed_) \ +    FT_DEFINE_DRIVERS_OLD_INTERNAL(set_sbit_strike_stub_) \ +    FT_DEFINE_DRIVERS_OLD_INTERNAL(load_sbits_stub_) \ +    FT_DEFINE_DRIVERS_OLD_INTERNAL(find_sbit_image_) \ +    FT_DEFINE_DRIVERS_OLD_INTERNAL(load_sbit_metrics_) \ +    FT_INTERNAL(load_sbit_image_) \ +    FT_DEFINE_DRIVERS_OLD_INTERNAL(free_sbits_stub_) \ +    FT_INTERNAL(get_psname_) \ +    FT_INTERNAL(free_psnames_) \ +    FT_DEFINE_DRIVERS_OLD_INTERNAL(load_charmap_stub_) \ +    FT_DEFINE_DRIVERS_OLD_INTERNAL(free_charmap_stub_) \ +    FT_INTERNAL(get_kerning_) \ +    FT_INTERNAL(load_font_dir_) \ +    FT_INTERNAL(load_hmtx_) \ +    FT_INTERNAL(load_eblc_) \ +    FT_INTERNAL(free_eblc_) \ +    FT_INTERNAL(set_sbit_strike_) \ +    FT_INTERNAL(load_strike_metrics_) \ +    FT_INTERNAL(get_metrics_) \ +  }; + +#else /* FT_CONFIG_OPTION_PIC */  + +#ifdef FT_CONFIG_OPTION_OLD_INTERNALS +#define FT_DEFINE_DRIVERS_OLD_INTERNAL(a, a_) \ +  clazz->a = a_; +#else +  #define FT_DEFINE_DRIVERS_OLD_INTERNAL(a, a_) +#endif +#define FT_INTERNAL(a, a_) \ +  clazz->a = a_; + +#define FT_DEFINE_SFNT_INTERFACE(class_,                                     \ +    goto_table_, init_face_, load_face_, done_face_, get_interface_,         \ +    load_any_, load_sfnt_header_, load_directory_, load_head_,               \ +    load_hhea_, load_cmap_, load_maxp_, load_os2_, load_post_,               \ +    load_name_, free_name_, load_hdmx_stub_, free_hdmx_stub_,                \ +    load_kern_, load_gasp_, load_pclt_, load_bhed_,                          \ +    set_sbit_strike_stub_, load_sbits_stub_, find_sbit_image_,               \ +    load_sbit_metrics_, load_sbit_image_, free_sbits_stub_,                  \ +    get_psname_, free_psnames_, load_charmap_stub_, free_charmap_stub_,      \ +    get_kerning_, load_font_dir_, load_hmtx_, load_eblc_, free_eblc_,        \ +    set_sbit_strike_, load_strike_metrics_, get_metrics_ )                   \ +  void                                                                       \ +  FT_Init_Class_##class_( FT_Library library, SFNT_Interface*  clazz )       \ +  {                                                                          \ +    FT_UNUSED(library);                                                      \ +    FT_INTERNAL(goto_table,goto_table_) \ +    FT_INTERNAL(init_face,init_face_) \ +    FT_INTERNAL(load_face,load_face_) \ +    FT_INTERNAL(done_face,done_face_) \ +    FT_INTERNAL(get_interface,get_interface_) \ +    FT_INTERNAL(load_any,load_any_) \ +    FT_DEFINE_DRIVERS_OLD_INTERNAL(load_sfnt_header,load_sfnt_header_) \ +    FT_DEFINE_DRIVERS_OLD_INTERNAL(load_directory,load_directory_) \ +    FT_INTERNAL(load_head,load_head_) \ +    FT_INTERNAL(load_hhea,load_hhea_) \ +    FT_INTERNAL(load_cmap,load_cmap_) \ +    FT_INTERNAL(load_maxp,load_maxp_) \ +    FT_INTERNAL(load_os2,load_os2_) \ +    FT_INTERNAL(load_post,load_post_) \ +    FT_INTERNAL(load_name,load_name_) \ +    FT_INTERNAL(free_name,free_name_) \ +    FT_DEFINE_DRIVERS_OLD_INTERNAL(load_hdmx_stub,load_hdmx_stub_) \ +    FT_DEFINE_DRIVERS_OLD_INTERNAL(free_hdmx_stub,free_hdmx_stub_) \ +    FT_INTERNAL(load_kern,load_kern_) \ +    FT_INTERNAL(load_gasp,load_gasp_) \ +    FT_INTERNAL(load_pclt,load_pclt_) \ +    FT_INTERNAL(load_bhed,load_bhed_) \ +    FT_DEFINE_DRIVERS_OLD_INTERNAL(set_sbit_strike_stub,set_sbit_strike_stub_) \ +    FT_DEFINE_DRIVERS_OLD_INTERNAL(load_sbits_stub,load_sbits_stub_) \ +    FT_DEFINE_DRIVERS_OLD_INTERNAL(find_sbit_image,find_sbit_image_) \ +    FT_DEFINE_DRIVERS_OLD_INTERNAL(load_sbit_metrics,load_sbit_metrics_) \ +    FT_INTERNAL(load_sbit_image,load_sbit_image_) \ +    FT_DEFINE_DRIVERS_OLD_INTERNAL(free_sbits_stub,free_sbits_stub_) \ +    FT_INTERNAL(get_psname,get_psname_) \ +    FT_INTERNAL(free_psnames,free_psnames_) \ +    FT_DEFINE_DRIVERS_OLD_INTERNAL(load_charmap_stub,load_charmap_stub_) \ +    FT_DEFINE_DRIVERS_OLD_INTERNAL(free_charmap_stub,free_charmap_stub_) \ +    FT_INTERNAL(get_kerning,get_kerning_) \ +    FT_INTERNAL(load_font_dir,load_font_dir_) \ +    FT_INTERNAL(load_hmtx,load_hmtx_) \ +    FT_INTERNAL(load_eblc,load_eblc_) \ +    FT_INTERNAL(free_eblc,free_eblc_) \ +    FT_INTERNAL(set_sbit_strike,set_sbit_strike_) \ +    FT_INTERNAL(load_strike_metrics,load_strike_metrics_) \ +    FT_INTERNAL(get_metrics,get_metrics_) \ +  }  + +#endif /* FT_CONFIG_OPTION_PIC */   FT_END_HEADER diff --git a/src/freetype2/freetype/internal/t1types.h b/src/freetype2/freetype/internal/t1types.h index 047c6d5..5f73063 100644 --- a/src/freetype2/freetype/internal/t1types.h +++ b/src/freetype2/freetype/internal/t1types.h @@ -5,7 +5,7 @@  /*    Basic Type1/Type2 type definitions and interface (specification      */  /*    only).                                                               */  /*                                                                         */ -/*  Copyright 1996-2001, 2002, 2003, 2004, 2006 by                         */ +/*  Copyright 1996-2001, 2002, 2003, 2004, 2006, 2008, 2009 by             */  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */  /*                                                                         */  /*  This file is part of the FreeType project, and may only be used,       */ @@ -58,7 +58,9 @@ FT_BEGIN_HEADER    /*                                                                       */    /*    code_first :: The lowest valid character code in the encoding.     */    /*                                                                       */ -  /*    code_last  :: The highest valid character code in the encoding.    */ +  /*    code_last  :: The highest valid character code in the encoding     */ +  /*                  + 1. When equal to code_first there are no valid     */ +  /*                  character codes.                                     */    /*                                                                       */    /*    char_index :: An array of corresponding glyph indices.             */    /*                                                                       */ @@ -87,11 +89,24 @@ FT_BEGIN_HEADER    } T1_EncodingType; +  /* used to hold extra data of PS_FontInfoRec that +   * cannot be stored in the publicly defined structure. +   * +   * Note these can't be blended with multiple-masters. +   */ +  typedef struct  PS_FontExtraRec_ +  { +    FT_UShort  fs_type; + +  } PS_FontExtraRec; + +    typedef struct  T1_FontRec_    { -    PS_FontInfoRec   font_info;         /* font info dictionary */ -    PS_PrivateRec    private_dict;      /* private dictionary   */ -    FT_String*       font_name;         /* top-level dictionary */ +    PS_FontInfoRec   font_info;         /* font info dictionary   */ +    PS_FontExtraRec  font_extra;        /* font info extra fields */ +    PS_PrivateRec    private_dict;      /* private dictionary     */ +    FT_String*       font_name;         /* top-level dictionary   */      T1_EncodingType  encoding_type;      T1_EncodingRec   encoding; @@ -217,7 +232,7 @@ FT_BEGIN_HEADER      /* undocumented, optional: has the same meaning as len_buildchar */      /* for Type 2 fonts; manipulated by othersubrs 19, 24, and 25    */      FT_UInt          len_buildchar; -    FT_Int*          buildchar; +    FT_Long*         buildchar;      /* since version 2.1 - interface to PostScript hinter */      const void*     pshinter; @@ -231,7 +246,10 @@ FT_BEGIN_HEADER      void*            psnames;      void*            psaux;      CID_FaceInfoRec  cid; +    PS_FontExtraRec  font_extra; +#if 0      void*            afm_data; +#endif      CID_Subrs        subrs;      /* since version 2.1 - interface to PostScript hinter */ diff --git a/src/freetype2/freetype/internal/tttypes.h b/src/freetype2/freetype/internal/tttypes.h index dfbb6a1..acbb863 100644 --- a/src/freetype2/freetype/internal/tttypes.h +++ b/src/freetype2/freetype/internal/tttypes.h @@ -5,7 +5,7 @@  /*    Basic SFNT/TrueType type definitions and interface (specification    */  /*    only).                                                               */  /*                                                                         */ -/*  Copyright 1996-2001, 2002, 2004, 2005, 2006, 2007 by                   */ +/*  Copyright 1996-2001, 2002, 2004, 2005, 2006, 2007, 2008 by             */  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */  /*                                                                         */  /*  This file is part of the FreeType project, and may only be used,       */ @@ -586,7 +586,7 @@ FT_BEGIN_HEADER    /*    table_offset  :: The offset of the index table in the `EBLC'       */    /*                     table.  Only used during strike loading.          */    /*                                                                       */ -  typedef struct  TT_SBit_RangeRec +  typedef struct  TT_SBit_RangeRec_    {      FT_UShort           first_glyph;      FT_UShort           last_glyph; @@ -902,7 +902,7 @@ FT_BEGIN_HEADER      FT_Byte*   table;      FT_Byte*   table_end;      FT_Byte*   strings; -    FT_UInt32  strings_size; +    FT_ULong   strings_size;      FT_UInt    num_strikes;      FT_Bool    loaded; @@ -1401,7 +1401,7 @@ FT_BEGIN_HEADER      FT_Byte*              vert_metrics;      FT_ULong              vert_metrics_size; -    FT_UInt               num_locations; +    FT_ULong              num_locations; /* in broken TTF, gid > 0xFFFF */       FT_Byte*              glyph_locations;      FT_Byte*              hdmx_table; diff --git a/src/freetype2/freetype/t1tables.h b/src/freetype2/freetype/t1tables.h index 250629d..5e2a393 100644 --- a/src/freetype2/freetype/t1tables.h +++ b/src/freetype2/freetype/t1tables.h @@ -5,7 +5,7 @@  /*    Basic Type 1/Type 2 tables definitions and interface (specification  */  /*    only).                                                               */  /*                                                                         */ -/*  Copyright 1996-2001, 2002, 2003, 2004, 2006 by                         */ +/*  Copyright 1996-2001, 2002, 2003, 2004, 2006, 2008, 2009 by             */  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */  /*                                                                         */  /*  This file is part of the FreeType project, and may only be used,       */ @@ -43,7 +43,7 @@ FT_BEGIN_HEADER    /*    Type 1 Tables                                                      */    /*                                                                       */    /* <Abstract>                                                            */ -  /*    Type 1 (PostScript) specific font tables.                          */ +  /*    Type~1 (PostScript) specific font tables.                          */    /*                                                                       */    /* <Description>                                                         */    /*    This section contains the definition of Type 1-specific tables,    */ @@ -62,11 +62,11 @@ FT_BEGIN_HEADER    /*    PS_FontInfoRec                                                     */    /*                                                                       */    /* <Description>                                                         */ -  /*    A structure used to model a Type1/Type2 FontInfo dictionary.  Note */ -  /*    that for Multiple Master fonts, each instance has its own          */ +  /*    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 +  typedef struct  PS_FontInfoRec_    {      FT_String*  version;      FT_String*  notice; @@ -78,7 +78,18 @@ FT_BEGIN_HEADER      FT_Short    underline_position;      FT_UShort   underline_thickness; -  } PS_FontInfoRec, *PS_FontInfo; +  } PS_FontInfoRec; + + +  /*************************************************************************/ +  /*                                                                       */ +  /* <Struct>                                                              */ +  /*    PS_FontInfo                                                        */ +  /*                                                                       */ +  /* <Description>                                                         */ +  /*    A handle to a @PS_FontInfoRec structure.                           */ +  /*                                                                       */ +  typedef struct PS_FontInfoRec_*  PS_FontInfo;    /*************************************************************************/ @@ -100,9 +111,9 @@ FT_BEGIN_HEADER    /*    PS_PrivateRec                                                      */    /*                                                                       */    /* <Description>                                                         */ -  /*    A structure used to model a Type1/Type2 private dictionary.  Note  */ -  /*    that for Multiple Master fonts, each instance has its own Private  */ -  /*    dictionary.                                                        */ +  /*    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_    { @@ -142,7 +153,18 @@ FT_BEGIN_HEADER      FT_Short   min_feature[2]; -  } PS_PrivateRec, *PS_Private; +  } PS_PrivateRec; + + +  /*************************************************************************/ +  /*                                                                       */ +  /* <Struct>                                                              */ +  /*    PS_Private                                                         */ +  /*                                                                       */ +  /* <Description>                                                         */ +  /*    A handle to a @PS_PrivateRec structure.                            */ +  /*                                                                       */ +  typedef struct PS_PrivateRec_*  PS_Private;    /*************************************************************************/ @@ -168,7 +190,7 @@ FT_BEGIN_HEADER    /*    given blend dictionary (font info or private).  Used to support    */    /*    Multiple Masters fonts.                                            */    /*                                                                       */ -  typedef enum +  typedef enum  T1_Blend_Flags_    {      /*# required fields in a FontInfo blend dictionary */      T1_BLEND_UNDERLINE_POSITION = 0, @@ -272,6 +294,14 @@ FT_BEGIN_HEADER    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_    {      PS_PrivateRec  private_dict; @@ -290,7 +320,20 @@ FT_BEGIN_HEADER      FT_ULong       subrmap_offset;      FT_Int         sd_bytes; -  } CID_FaceDictRec, *CID_FaceDict; +  } CID_FaceDictRec; + + +  /*************************************************************************/ +  /*                                                                       */ +  /* <Struct>                                                              */ +  /*    CID_FaceDict                                                       */ +  /*                                                                       */ +  /* <Description>                                                         */ +  /*    A handle to a @CID_FaceDictRec structure.                          */ +  /*                                                                       */ +  typedef struct CID_FaceDictRec_*  CID_FaceDict; + +  /* */    /* backwards-compatible definition */ @@ -332,7 +375,18 @@ FT_BEGIN_HEADER      FT_ULong        data_offset; -  } CID_FaceInfoRec, *CID_FaceInfo; +  } CID_FaceInfoRec; + + +  /*************************************************************************/ +  /*                                                                       */ +  /* <Struct>                                                              */ +  /*    CID_FaceInfo                                                       */ +  /*                                                                       */ +  /* <Description>                                                         */ +  /*    A handle to a @CID_FaceInfoRec structure.                          */ +  /*                                                                       */ +  typedef struct CID_FaceInfoRec_*  CID_FaceInfo;    /*************************************************************************/ @@ -347,99 +401,99 @@ FT_BEGIN_HEADER    /*                                                                       */    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. -  */ +  /************************************************************************ +   * +   * @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. -  */ +  /************************************************************************ +   * +   * @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_FontInfoRec  *afont_info ); - - - /************************************************************************ -  * -  * @function: -  *    FT_Get_PS_Font_Private -  * -  * @description: -  *    Retrieve the @PS_PrivateRec structure corresponding to a given -  *    Postscript font. -  * -  * @input: -  *    face :: -  *       Postscript face handle. -  * -  * @output: -  *    afont_private :: -  *       Output private dictionary structure pointer. -  * -  * @return: -  *    FreeType error code.  0 means success. -  * -  * @note: -  *    The string pointers within the font info structure are owned by -  *    the face and don't need to be freed by the caller. -  * -  *    If the font's format is not Postscript-based, this function will -  *    return the `FT_Err_Invalid_Argument' error code. -  */ +  FT_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_PrivateRec  *afont_private ); - - /* */ +  FT_Get_PS_Font_Private( FT_Face     face, +                          PS_Private  afont_private ); +  /* */  FT_END_HEADER diff --git a/src/freetype2/freetype/ttnameid.h b/src/freetype2/freetype/ttnameid.h index b9acbda..cbeac78 100644 --- a/src/freetype2/freetype/ttnameid.h +++ b/src/freetype2/freetype/ttnameid.h @@ -4,7 +4,7 @@  /*                                                                         */  /*    TrueType name ID definitions (specification only).                   */  /*                                                                         */ -/*  Copyright 1996-2002, 2003, 2004, 2006, 2007 by                         */ +/*  Copyright 1996-2002, 2003, 2004, 2006, 2007, 2008 by                   */  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */  /*                                                                         */  /*  This file is part of the FreeType project, and may only be used,       */ @@ -28,6 +28,13 @@ FT_BEGIN_HEADER    /*************************************************************************/    /*                                                                       */ +  /* <Section>                                                             */ +  /*    truetype_tables                                                    */ +  /*                                                                       */ + + +  /*************************************************************************/ +  /*                                                                       */    /* Possible values for the `platform' identifier code in the name        */    /* records of the TTF `name' table.                                      */    /*                                                                       */ @@ -108,13 +115,18 @@ FT_BEGIN_HEADER     *     *   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 */ -#define TT_APPLE_ID_ISO_10646    2 /* deprecated */ -#define TT_APPLE_ID_UNICODE_2_0  3 /* or later */ -#define TT_APPLE_ID_UNICODE_32   4 /* 2.0 or later, full repertoire */ +#define TT_APPLE_ID_DEFAULT           0 /* Unicode 1.0 */ +#define TT_APPLE_ID_UNICODE_1_1       1 /* specify Hangul at U+34xx */ +#define TT_APPLE_ID_ISO_10646         2 /* deprecated */ +#define TT_APPLE_ID_UNICODE_2_0       3 /* or later */ +#define TT_APPLE_ID_UNICODE_32        4 /* 2.0 or later, full repertoire */ +#define TT_APPLE_ID_VARIANT_SELECTOR  5 /* variation selector data */    /*********************************************************************** @@ -290,6 +302,8 @@ FT_BEGIN_HEADER     *     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 @@ -821,16 +835,18 @@ FT_BEGIN_HEADER    /* This is new in OpenType 1.3 */  #define TT_NAME_ID_CID_FINDFONT_NAME    20 +  /* 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 02-Jul-2000.                                                  */ +  /* Updated 08-Nov-2008.                                                  */    /*                                                                       */ -  /* General Scripts Area */ -    /* Bit  0   Basic Latin */  #define TT_UCR_BASIC_LATIN                     (1L <<  0) /* U+0020-U+007E */    /* Bit  1   C1 Controls and Latin-1 Supplement */ @@ -839,27 +855,44 @@ FT_BEGIN_HEADER  #define TT_UCR_LATIN_EXTENDED_A                (1L <<  2) /* U+0100-U+017F */    /* Bit  3   Latin Extended-B */  #define TT_UCR_LATIN_EXTENDED_B                (1L <<  3) /* U+0180-U+024F */ -  /* Bit  4   IPA Extensions */ +  /* 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    */  #define TT_UCR_SPACING_MODIFIER                (1L <<  5) /* U+02B0-U+02FF */ -  /* Bit  6   Combining Diacritical Marks */ +                                                          /* 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 */  #define TT_UCR_GREEK                           (1L <<  7) /* U+0370-U+03FF */ -  /* Bit  8 is reserved (was: Greek Symbols and Coptic) */ -  /* Bit  9   Cyrillic               + */ -  /*          Cyrillic Supplementary   */ +  /* Bit  8   Coptic */ +#define TT_UCR_COPTIC                          (1L <<  8) /* U+2C80-U+2CFF */ +  /* 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 */  #define TT_UCR_ARMENIAN                        (1L << 10) /* U+0530-U+058F */    /* Bit 11   Hebrew */  #define TT_UCR_HEBREW                          (1L << 11) /* U+0590-U+05FF */ -  /* Bit 12 is reserved (was: Hebrew Extended) */ -  /* Bit 13   Arabic */ +  /* Bit 12   Vai */ +#define TT_UCR_VAI                             (1L << 12) /* U+A500-U+A63F */ +  /* Bit 13   Arabic            */ +  /*          Arabic Supplement */  #define TT_UCR_ARABIC                          (1L << 13) /* U+0600-U+06FF */ -  /* Bit 14 is reserved (was: Arabic Extended) */ +                                                          /* U+0750-U+077F */ +  /* Bit 14   NKo */ +#define TT_UCR_NKO                             (1L << 14) /* U+07C0-U+07FF */    /* Bit 15   Devanagari */  #define TT_UCR_DEVANAGARI                      (1L << 15) /* U+0900-U+097F */    /* Bit 16   Bengali */ @@ -882,20 +915,26 @@ FT_BEGIN_HEADER  #define TT_UCR_THAI                            (1L << 24) /* U+0E00-U+0E7F */    /* Bit 25   Lao */  #define TT_UCR_LAO                             (1L << 25) /* U+0E80-U+0EFF */ -  /* Bit 26   Georgian */ +  /* Bit 26   Georgian            */ +  /*          Georgian Supplement */  #define TT_UCR_GEORGIAN                        (1L << 26) /* U+10A0-U+10FF */ -  /* Bit 27 is reserved (was Georgian Extended) */ +                                                          /* U+2D00-U+2D2F */ +  /* Bit 27   Balinese */ +#define TT_UCR_BALINESE                        (1L << 27) /* U+1B00-U+1B7F */    /* 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          */  #define TT_UCR_LATIN_EXTENDED_ADDITIONAL       (1L << 29) /* U+1E00-U+1EFF */ +                                                          /* U+2C60-U+2C7F */ +                                                          /* U+A720-U+A7FF */    /* Bit 30   Greek Extended */  #define TT_UCR_GREEK_EXTENDED                  (1L << 30) /* U+1F00-U+1FFF */ - -  /* Symbols Area */ - -  /* Bit 31   General 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 */  #define TT_UCR_SUPERSCRIPTS_SUBSCRIPTS         (1L <<  0) /* U+2070-U+209F */    /* Bit 33   Currency Symbols */ @@ -906,16 +945,18 @@ FT_BEGIN_HEADER  #define TT_UCR_LETTERLIKE_SYMBOLS              (1L <<  3) /* U+2100-U+214F */    /* Bit 36   Number Forms */  #define TT_UCR_NUMBER_FORMS                    (1L <<  4) /* U+2150-U+218F */ -  /* Bit 37   Arrows                + */ -  /*          Supplemental Arrows-A + */ -  /*          Supplemental Arrows-B   */ +  /* 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 */ -  /* Bit 38   Mathematical Operators               + */ -  /*          Supplemental Mathematical Operators  + */ -  /*          Miscellaneous Mathematical Symbols-A + */ -  /*          Miscellaneous Mathematical Symbols-B   */ +                                                          /* 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 */ @@ -938,60 +979,53 @@ FT_BEGIN_HEADER  #define TT_UCR_MISCELLANEOUS_SYMBOLS           (1L << 14) /* U+2600-U+26FF */    /* Bit 47   Dingbats */  #define TT_UCR_DINGBATS                        (1L << 15) /* U+2700-U+27BF */ - -  /* CJK Phonetics and Symbols Area */ -    /* Bit 48   CJK Symbols and Punctuation */  #define TT_UCR_CJK_SYMBOLS                     (1L << 16) /* U+3000-U+303F */    /* 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   */ +  /* Bit 51   Bopomofo          */ +  /*          Bopomofo Extended */  #define TT_UCR_BOPOMOFO                        (1L << 19) /* U+3100-U+312F */                                                            /* U+31A0-U+31BF */    /* Bit 52   Hangul Compatibility Jamo */  #define TT_UCR_HANGUL_COMPATIBILITY_JAMO       (1L << 20) /* U+3130-U+318F */ -  /* Bit 53   Kanbun */ -#define TT_UCR_CJK_MISC                        (1L << 21) /* U+3190-U+319F */ -#define TT_UCR_KANBUN  TT_UCR_CJK_MISC +  /* 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 */  #define TT_UCR_ENCLOSED_CJK_LETTERS_MONTHS     (1L << 22) /* U+3200-U+32FF */    /* Bit 55   CJK Compatibility */  #define TT_UCR_CJK_COMPATIBILITY               (1L << 23) /* U+3300-U+33FF */ - -  /* Hangul Syllables Area */ - -  /* Bit 56   Hangul */ +  /* Bit 56   Hangul Syllables */  #define TT_UCR_HANGUL                          (1L << 24) /* U+AC00-U+D7A3 */ - -  /* Surrogates Area */ - -  /* Bit 57   High Surrogates             + */ -  /*          High Private Use Surrogates + */ -  /*          Low Surrogates                */ +  /* 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 */ -  /* 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 58 is reserved for Unicode SubRanges */ - -  /* CJK Ideographs Area */ - -  /* Bit 59   CJK Unified Ideographs             + */ -  /*          CJK Radicals Supplement            + */ -  /*          Kangxi Radicals                    + */ -  /*          Ideographic Description Characters + */ -  /*          CJK Unified Ideographs Extension A   */ -  /*          CJK Unified Ideographs Extension A + */ -  /*          CJK Unified Ideographs Extension B + */ -  /*          Kanbun                               */ +#define TT_UCR_NON_PLANE_0  TT_UCR_SURROGATES +  /* 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                             */  #define TT_UCR_CJK_UNIFIED_IDEOGRAPHS          (1L << 27) /* U+4E00-U+9FFF */                                                            /* U+2E80-U+2EFF */                                                            /* U+2F00-U+2FDF */ @@ -999,17 +1033,13 @@ FT_BEGIN_HEADER                                                            /* U+3400-U+4DB5 */                                                            /*U+20000-U+2A6DF*/                                                            /* U+3190-U+319F */ - -  /* Private Use Area */ -    /* Bit 60   Private Use */  #define TT_UCR_PRIVATE_USE                     (1L << 28) /* U+E000-U+F8FF */ - -  /* Compatibility Area and Specials */ - -  /* Bit 61   CJK Compatibility Ideographs            + */ -  /*          CJK Compatibility Ideographs Supplement   */ -#define TT_UCR_CJK_COMPATIBILITY_IDEOGRAPHS    (1L << 29) /* U+F900-U+FAFF */ +  /* 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 */  #define TT_UCR_ALPHABETIC_PRESENTATION_FORMS   (1L << 30) /* U+FB00-U+FB4F */ @@ -1017,8 +1047,10 @@ FT_BEGIN_HEADER  #define TT_UCR_ARABIC_PRESENTATIONS_A          (1L << 31) /* U+FB50-U+FDFF */    /* Bit 64   Combining Half Marks */  #define TT_UCR_COMBINING_HALF_MARKS            (1L <<  0) /* U+FE20-U+FE2F */ -  /* Bit 65   CJK Compatibility Forms */ -#define TT_UCR_CJK_COMPATIBILITY_FORMS         (1L <<  1) /* U+FE30-U+FE4F */ +  /* 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 */  #define TT_UCR_SMALL_FORM_VARIANTS             (1L <<  2) /* U+FE50-U+FE6F */    /* Bit 67   Arabic Presentation Forms-B */ @@ -1037,8 +1069,12 @@ FT_BEGIN_HEADER  #define TT_UCR_SINHALA                         (1L <<  9) /* U+0D80-U+0DFF */    /* Bit 74   Myanmar */  #define TT_UCR_MYANMAR                         (1L << 10) /* U+1000-U+109F */ -  /* Bit 75   Ethiopic */ +  /* 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 */  #define TT_UCR_CHEROKEE                        (1L << 12) /* U+13A0-U+13FF */    /* Bit 77   Unified Canadian Aboriginal Syllabics */ @@ -1047,20 +1083,22 @@ FT_BEGIN_HEADER  #define TT_UCR_OGHAM                           (1L << 14) /* U+1680-U+169F */    /* Bit 79   Runic */  #define TT_UCR_RUNIC                           (1L << 15) /* U+16A0-U+16FF */ -  /* Bit 80   Khmer */ +  /* Bit 80   Khmer         */ +  /*          Khmer Symbols */  #define TT_UCR_KHMER                           (1L << 16) /* U+1780-U+17FF */ +                                                          /* U+19E0-U+19FF */    /* Bit 81   Mongolian */  #define TT_UCR_MONGOLIAN                       (1L << 17) /* U+1800-U+18AF */    /* 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   */ +  /* Bit 84   Tagalog  */ +  /*          Hanunoo  */ +  /*          Buhid    */ +  /*          Tagbanwa */  #define TT_UCR_PHILIPPINE                      (1L << 20) /* U+1700-U+171F */                                                            /* U+1720-U+173F */                                                            /* U+1740-U+175F */ @@ -1071,20 +1109,97 @@ FT_BEGIN_HEADER  #define TT_UCR_GOTHIC                          (1L << 22) /*U+10330-U+1034F*/    /* Bit 87   Deseret */  #define TT_UCR_DESERET                         (1L << 23) /*U+10400-U+1044F*/ -  /* Bit 88   Byzantine Musical Symbols + */ -  /*          Musical Symbols             */ +  /* 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 */  #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 */ +  /* 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 */  #define TT_UCR_TAGS                            (1L << 28) /*U+E0000-U+E007F*/ +  /* Bit 93   Limbu */ +#define TT_UCR_LIMBU                           (1L << 29) /* U+1900-U+194F */ +  /* Bit 94   Tai Le */ +#define TT_UCR_TAI_LE                          (1L << 30) /* U+1950-U+197F */ +  /* Bit 95   New Tai Lue */ +#define TT_UCR_NEW_TAI_LUE                     (1L << 31) /* U+1980-U+19DF */ +  /* Bit 96   Buginese */ +#define TT_UCR_BUGINESE                        (1L <<  0) /* U+1A00-U+1A1F */ +  /* Bit 97   Glagolitic */ +#define TT_UCR_GLAGOLITIC                      (1L <<  1) /* U+2C00-U+2C5F */ +  /* Bit 98   Tifinagh */ +#define TT_UCR_TIFINAGH                        (1L <<  2) /* U+2D30-U+2D7F */ +  /* Bit 99   Yijing Hexagram Symbols */ +#define TT_UCR_YIJING                          (1L <<  3) /* U+4DC0-U+4DFF */ +  /* 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     */ +#define TT_UCR_LINEAR_B                        (1L <<  5) /*U+10000-U+1007F*/ +                                                          /*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 */ +#define TT_UCR_UGARITIC                        (1L <<  7) /*U+10380-U+1039F*/ +  /* Bit 104  Old Persian */ +#define TT_UCR_OLD_PERSIAN                     (1L <<  8) /*U+103A0-U+103DF*/ +  /* Bit 105  Shavian */ +#define TT_UCR_SHAVIAN                         (1L <<  9) /*U+10450-U+1047F*/ +  /* Bit 106  Osmanya */ +#define TT_UCR_OSMANYA                         (1L << 10) /*U+10480-U+104AF*/ +  /* Bit 107  Cypriot Syllabary */ +#define TT_UCR_CYPRIOT_SYLLABARY               (1L << 11) /*U+10800-U+1083F*/ +  /* Bit 108  Kharoshthi */ +#define TT_UCR_KHAROSHTHI                      (1L << 12) /*U+10A00-U+10A5F*/ +  /* 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 */ +#define TT_UCR_CUNEIFORM                       (1L << 14) /*U+12000-U+123FF*/ +                                                          /*U+12400-U+1247F*/ +  /* Bit 111  Counting Rod Numerals */ +#define TT_UCR_COUNTING_ROD_NUMERALS           (1L << 15) /*U+1D360-U+1D37F*/ +  /* Bit 112  Sundanese */ +#define TT_UCR_SUNDANESE                       (1L << 16) /* U+1B80-U+1BBF */ +  /* Bit 113  Lepcha */ +#define TT_UCR_LEPCHA                          (1L << 17) /* U+1C00-U+1C4F */ +  /* Bit 114  Ol Chiki */ +#define TT_UCR_OL_CHIKI                        (1L << 18) /* U+1C50-U+1C7F */ +  /* Bit 115  Saurashtra */ +#define TT_UCR_SAURASHTRA                      (1L << 19) /* U+A880-U+A8DF */ +  /* Bit 116  Kayah Li */ +#define TT_UCR_KAYAH_LI                        (1L << 20) /* U+A900-U+A92F */ +  /* Bit 117  Rejang */ +#define TT_UCR_REJANG                          (1L << 21) /* U+A930-U+A95F */ +  /* Bit 118  Cham */ +#define TT_UCR_CHAM                            (1L << 22) /* U+AA00-U+AA5F */ +  /* Bit 119  Ancient Symbols */ +#define TT_UCR_ANCIENT_SYMBOLS                 (1L << 23) /*U+10190-U+101CF*/ +  /* Bit 120  Phaistos Disc */ +#define TT_UCR_PHAISTOS_DISC                   (1L << 24) /*U+101D0-U+101FF*/ +  /* 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 */ +#define TT_UCR_GAME_TILES                      (1L << 26) /*U+1F030-U+1F09F*/ +                                                          /*U+1F000-U+1F02F*/ +  /* Bit 123-127 Reserved for process-internal usage */    /*************************************************************************/ @@ -1103,7 +1218,7 @@ FT_BEGIN_HEADER    /*                                                                       */    /* Here some alias #defines in order to be clearer.                      */    /*                                                                       */ -  /* These are not always #defined to stay within the 31 character limit   */ +  /* 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  */ diff --git a/src/freetype2/freetype/tttables.h b/src/freetype2/freetype/tttables.h index 43eca2e..c12b172 100644 --- a/src/freetype2/freetype/tttables.h +++ b/src/freetype2/freetype/tttables.h @@ -5,7 +5,7 @@  /*    Basic SFNT/TrueType tables definitions and interface                 */  /*    (specification only).                                                */  /*                                                                         */ -/*  Copyright 1996-2001, 2002, 2003, 2004, 2005 by                         */ +/*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 2008, 2009 by             */  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */  /*                                                                         */  /*  This file is part of the FreeType project, and may only be used,       */ @@ -156,9 +156,9 @@ FT_BEGIN_HEADER    /*    caret_Slope_Run        :: The run coefficient of the cursor's      */    /*                              slope.                                   */    /*                                                                       */ -  /*    Reserved               :: 10 reserved bytes.                       */ +  /*    Reserved               :: 8~reserved bytes.                        */    /*                                                                       */ -  /*    metric_Data_Format     :: Always 0.                                */ +  /*    metric_Data_Format     :: Always~0.                                */    /*                                                                       */    /*    number_Of_HMetrics     :: Number of HMetrics entries in the `hmtx' */    /*                              table -- this value can be smaller than  */ @@ -281,9 +281,9 @@ FT_BEGIN_HEADER    /*                               This value is `reserved' in vmtx        */    /*                               version 1.0.                            */    /*                                                                       */ -  /*    Reserved                :: 8 reserved bytes.                       */ +  /*    Reserved                :: 8~reserved bytes.                       */    /*                                                                       */ -  /*    metric_Data_Format      :: Always 0.                               */ +  /*    metric_Data_Format      :: Always~0.                               */    /*                                                                       */    /*    number_Of_HMetrics      :: Number of VMetrics entries in the       */    /*                               `vmtx' table -- this value can be       */ @@ -406,9 +406,9 @@ FT_BEGIN_HEADER    /*    TT_Postscript                                                      */    /*                                                                       */    /* <Description>                                                         */ -  /*    A structure used to model a TrueType Postscript table.  All fields */ +  /*    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    */ +  /*    reference the PostScript glyph names, which can be nevertheless    */    /*    accessed with the `ttpost' module.                                 */    /*                                                                       */    typedef struct  TT_Postscript_ @@ -555,7 +555,7 @@ FT_BEGIN_HEADER    /*    An enumeration used to specify the index of an SFNT table.         */    /*    Used in the @FT_Get_Sfnt_Table API function.                       */    /*                                                                       */ -  typedef enum +  typedef enum  FT_Sfnt_Tag_    {      ft_sfnt_head = 0,      ft_sfnt_maxp = 1, @@ -578,7 +578,7 @@ FT_BEGIN_HEADER    /*    FT_Get_Sfnt_Table                                                  */    /*                                                                       */    /* <Description>                                                         */ -  /*    Returns a pointer to a given SFNT table within a face.             */ +  /*    Return a pointer to a given SFNT table within a face.              */    /*                                                                       */    /* <Input>                                                               */    /*    face :: A handle to the source.                                    */ @@ -586,7 +586,7 @@ FT_BEGIN_HEADER    /*    tag  :: The index of the SFNT table.                               */    /*                                                                       */    /* <Return>                                                              */ -  /*    A type-less pointer to the table.  This will be 0 in case of       */ +  /*    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.                                                     */    /*                                                                       */ @@ -608,14 +608,14 @@ FT_BEGIN_HEADER    *   FT_Load_Sfnt_Table    *    * @description: -  *   Loads any font table into client memory. +  *   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 +  *     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. @@ -633,18 +633,18 @@ FT_BEGIN_HEADER    *     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 +  *     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. +  *   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: +  *   function with `*length' set to~0, as in the following example:    *    *     {    *       FT_ULong  length = 0; @@ -674,7 +674,7 @@ FT_BEGIN_HEADER    *   FT_Sfnt_Table_Info    *    * @description: -  *   Returns information on an SFNT table. +  *   Return information on an SFNT table.    *    * @input:    *   face :: @@ -692,10 +692,10 @@ FT_BEGIN_HEADER    *     The length of the SFNT table.    *    * @return: -  *   FreeType error code.  0 means success. +  *   FreeType error code.  0~means success.    *    * @note: -  *   SFNT tables with length zero are treated as missing by Windows. +  *   SFNT tables with length zero are treated as missing.    *    */    FT_EXPORT( FT_Error ) @@ -720,7 +720,7 @@ FT_BEGIN_HEADER    /*                                                                       */    /* <Return>                                                              */    /*    The language ID of `charmap'.  If `charmap' doesn't belong to a    */ -  /*    TrueType/sfnt face, just return 0 as the default value.            */ +  /*    TrueType/sfnt face, just return~0 as the default value.            */    /*                                                                       */    FT_EXPORT( FT_ULong )    FT_Get_CMap_Language_ID( FT_CharMap  charmap ); diff --git a/src/freetype2/freetype/tttags.h b/src/freetype2/freetype/tttags.h index e10244c..307ce4b 100644 --- a/src/freetype2/freetype/tttags.h +++ b/src/freetype2/freetype/tttags.h @@ -4,7 +4,7 @@  /*                                                                         */  /*    Tags for TrueType and OpenType tables (specification only).          */  /*                                                                         */ -/*  Copyright 1996-2001, 2004, 2005 by                                     */ +/*  Copyright 1996-2001, 2004, 2005, 2007, 2008 by                         */  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */  /*                                                                         */  /*  This file is part of the FreeType project, and may only be used,       */ @@ -41,6 +41,7 @@ FT_BEGIN_HEADER  #define TTAG_bloc  FT_MAKE_TAG( 'b', 'l', 'o', 'c' )  #define TTAG_bsln  FT_MAKE_TAG( 'b', 's', 'l', 'n' )  #define TTAG_CFF   FT_MAKE_TAG( 'C', 'F', 'F', ' ' ) +#define TTAG_CID   FT_MAKE_TAG( 'C', 'I', 'D', ' ' )  #define TTAG_cmap  FT_MAKE_TAG( 'c', 'm', 'a', 'p' )  #define TTAG_cvar  FT_MAKE_TAG( 'c', 'v', 'a', 'r' )  #define TTAG_cvt   FT_MAKE_TAG( 'c', 'v', 't', ' ' ) @@ -49,6 +50,7 @@ FT_BEGIN_HEADER  #define TTAG_EBLC  FT_MAKE_TAG( 'E', 'B', 'L', 'C' )  #define TTAG_EBSC  FT_MAKE_TAG( 'E', 'B', 'S', 'C' )  #define TTAG_feat  FT_MAKE_TAG( 'f', 'e', 'a', 't' ) +#define TTAG_FOND  FT_MAKE_TAG( 'F', 'O', 'N', 'D' )  #define TTAG_fpgm  FT_MAKE_TAG( 'f', 'p', 'g', 'm' )  #define TTAG_fvar  FT_MAKE_TAG( 'f', 'v', 'a', 'r' )  #define TTAG_gasp  FT_MAKE_TAG( 'g', 'a', 's', 'p' ) @@ -67,6 +69,8 @@ FT_BEGIN_HEADER  #define TTAG_lcar  FT_MAKE_TAG( 'l', 'c', 'a', 'r' )  #define TTAG_loca  FT_MAKE_TAG( 'l', 'o', 'c', 'a' )  #define TTAG_LTSH  FT_MAKE_TAG( 'L', 'T', 'S', 'H' ) +#define TTAG_LWFN  FT_MAKE_TAG( 'L', 'W', 'F', 'N' ) +#define TTAG_MATH  FT_MAKE_TAG( 'M', 'A', 'T', 'H' )  #define TTAG_maxp  FT_MAKE_TAG( 'm', 'a', 'x', 'p' )  #define TTAG_META  FT_MAKE_TAG( 'M', 'E', 'T', 'A' )  #define TTAG_MMFX  FT_MAKE_TAG( 'M', 'M', 'F', 'X' ) @@ -78,14 +82,18 @@ FT_BEGIN_HEADER  #define TTAG_OS2   FT_MAKE_TAG( 'O', 'S', '/', '2' )  #define TTAG_OTTO  FT_MAKE_TAG( 'O', 'T', 'T', 'O' )  #define TTAG_PCLT  FT_MAKE_TAG( 'P', 'C', 'L', 'T' ) +#define TTAG_POST  FT_MAKE_TAG( 'P', 'O', 'S', 'T' )  #define TTAG_post  FT_MAKE_TAG( 'p', 'o', 's', 't' )  #define TTAG_prep  FT_MAKE_TAG( 'p', 'r', 'e', 'p' )  #define TTAG_prop  FT_MAKE_TAG( 'p', 'r', 'o', 'p' ) +#define TTAG_sfnt  FT_MAKE_TAG( 's', 'f', 'n', 't' )  #define TTAG_SING  FT_MAKE_TAG( 'S', 'I', 'N', 'G' )  #define TTAG_trak  FT_MAKE_TAG( 't', 'r', 'a', 'k' )  #define TTAG_true  FT_MAKE_TAG( 't', 'r', 'u', 'e' )  #define TTAG_ttc   FT_MAKE_TAG( 't', 't', 'c', ' ' )  #define TTAG_ttcf  FT_MAKE_TAG( 't', 't', 'c', 'f' ) +#define TTAG_TYP1  FT_MAKE_TAG( 'T', 'Y', 'P', '1' ) +#define TTAG_typ1  FT_MAKE_TAG( 't', 'y', 'p', '1' )  #define TTAG_VDMX  FT_MAKE_TAG( 'V', 'D', 'M', 'X' )  #define TTAG_vhea  FT_MAKE_TAG( 'v', 'h', 'e', 'a' )  #define TTAG_vmtx  FT_MAKE_TAG( 'v', 'm', 't', 'x' )  | 
