misc/libfreetype/include/freetype/ftgasp.h
changeset 9372 915436ff64ab
parent 9371 f3840de881bd
child 9373 b769a8e38cbd
equal deleted inserted replaced
9371:f3840de881bd 9372:915436ff64ab
     1 /***************************************************************************/
       
     2 /*                                                                         */
       
     3 /*  ftgasp.h                                                               */
       
     4 /*                                                                         */
       
     5 /*    Access of TrueType's `gasp' table (specification).                   */
       
     6 /*                                                                         */
       
     7 /*  Copyright 2007, 2008, 2011 by                                          */
       
     8 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
       
     9 /*                                                                         */
       
    10 /*  This file is part of the FreeType project, and may only be used,       */
       
    11 /*  modified, and distributed under the terms of the FreeType project      */
       
    12 /*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
       
    13 /*  this file you indicate that you have read the license and              */
       
    14 /*  understand and accept it fully.                                        */
       
    15 /*                                                                         */
       
    16 /***************************************************************************/
       
    17 
       
    18 
       
    19 #ifndef _FT_GASP_H_
       
    20 #define _FT_GASP_H_
       
    21 
       
    22 #include <ft2build.h>
       
    23 #include FT_FREETYPE_H
       
    24 
       
    25 #ifdef FREETYPE_H
       
    26 #error "freetype.h of FreeType 1 has been loaded!"
       
    27 #error "Please fix the directory search order for header files"
       
    28 #error "so that freetype.h of FreeType 2 is found first."
       
    29 #endif
       
    30 
       
    31 
       
    32   /***************************************************************************
       
    33    *
       
    34    * @section:
       
    35    *   gasp_table
       
    36    *
       
    37    * @title:
       
    38    *   Gasp Table
       
    39    *
       
    40    * @abstract:
       
    41    *   Retrieving TrueType `gasp' table entries.
       
    42    *
       
    43    * @description:
       
    44    *   The function @FT_Get_Gasp can be used to query a TrueType or OpenType
       
    45    *   font for specific entries in its `gasp' table, if any.  This is
       
    46    *   mainly useful when implementing native TrueType hinting with the
       
    47    *   bytecode interpreter to duplicate the Windows text rendering results.
       
    48    */
       
    49 
       
    50   /*************************************************************************
       
    51    *
       
    52    * @enum:
       
    53    *   FT_GASP_XXX
       
    54    *
       
    55    * @description:
       
    56    *   A list of values and/or bit-flags returned by the @FT_Get_Gasp
       
    57    *   function.
       
    58    *
       
    59    * @values:
       
    60    *   FT_GASP_NO_TABLE ::
       
    61    *     This special value means that there is no GASP table in this face.
       
    62    *     It is up to the client to decide what to do.
       
    63    *
       
    64    *   FT_GASP_DO_GRIDFIT ::
       
    65    *     Grid-fitting and hinting should be performed at the specified ppem. 
       
    66    *     This *really* means TrueType bytecode interpretation.  If this bit
       
    67    *     is not set, no hinting gets applied.
       
    68    *
       
    69    *   FT_GASP_DO_GRAY ::
       
    70    *     Anti-aliased rendering should be performed at the specified ppem. 
       
    71    *     If not set, do monochrome rendering.
       
    72    *
       
    73    *   FT_GASP_SYMMETRIC_SMOOTHING ::
       
    74    *     If set, smoothing along multiple axes must be used with ClearType.
       
    75    *
       
    76    *   FT_GASP_SYMMETRIC_GRIDFIT ::
       
    77    *     Grid-fitting must be used with ClearType's symmetric smoothing.
       
    78    *
       
    79    * @note:
       
    80    *   The bit-flags `FT_GASP_DO_GRIDFIT' and `FT_GASP_DO_GRAY' are to be
       
    81    *   used for standard font rasterization only.  Independently of that,
       
    82    *   `FT_GASP_SYMMETRIC_SMOOTHING' and `FT_GASP_SYMMETRIC_GRIDFIT' are to
       
    83    *   be used if ClearType is enabled (and `FT_GASP_DO_GRIDFIT' and
       
    84    *   `FT_GASP_DO_GRAY' are consequently ignored).
       
    85    *
       
    86    *   `ClearType' is Microsoft's implementation of LCD rendering, partly
       
    87    *   protected by patents.
       
    88    *
       
    89    * @since:
       
    90    *   2.3.0
       
    91    */
       
    92 #define FT_GASP_NO_TABLE               -1
       
    93 #define FT_GASP_DO_GRIDFIT           0x01
       
    94 #define FT_GASP_DO_GRAY              0x02
       
    95 #define FT_GASP_SYMMETRIC_SMOOTHING  0x08
       
    96 #define FT_GASP_SYMMETRIC_GRIDFIT    0x10
       
    97 
       
    98 
       
    99   /*************************************************************************
       
   100    *
       
   101    * @func:
       
   102    *   FT_Get_Gasp
       
   103    *
       
   104    * @description:
       
   105    *   Read the `gasp' table from a TrueType or OpenType font file and
       
   106    *   return the entry corresponding to a given character pixel size.
       
   107    *
       
   108    * @input:
       
   109    *   face :: The source face handle.
       
   110    *   ppem :: The vertical character pixel size.
       
   111    *
       
   112    * @return:
       
   113    *   Bit flags (see @FT_GASP_XXX), or @FT_GASP_NO_TABLE if there is no
       
   114    *   `gasp' table in the face.
       
   115    *
       
   116    * @since:
       
   117    *   2.3.0
       
   118    */
       
   119   FT_EXPORT( FT_Int )
       
   120   FT_Get_Gasp( FT_Face  face,
       
   121                FT_UInt  ppem );
       
   122 
       
   123 /* */
       
   124 
       
   125 #endif /* _FT_GASP_H_ */
       
   126 
       
   127 
       
   128 /* END */