Home | History | Annotate | Download | only in include
      1 /***************************************************************************/
      2 /*                                                                         */
      3 /*  ftgasp.h                                                               */
      4 /*                                                                         */
      5 /*    Access of TrueType's `gasp' table (specification).                   */
      6 /*                                                                         */
      7 /*  Copyright 2007-2015 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 
    126 #endif /* _FT_GASP_H_ */
    127 
    128 
    129 /* END */
    130