Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  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 */
  129.