Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. /***************************************************************************/
  2. /*                                                                         */
  3. /*  ftcffdrv.h                                                             */
  4. /*                                                                         */
  5. /*    FreeType API for controlling the CFF driver (specification only).    */
  6. /*                                                                         */
  7. /*  Copyright 2013 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 __FTCFFDRV_H__
  20. #define __FTCFFDRV_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. FT_BEGIN_HEADER
  33.  
  34.  
  35.   /**************************************************************************
  36.    *
  37.    * @section:
  38.    *   cff_driver
  39.    *
  40.    * @title:
  41.    *   The CFF driver
  42.    *
  43.    * @abstract:
  44.    *   Controlling the CFF driver module.
  45.    *
  46.    * @description:
  47.    *   While FreeType's CFF driver doesn't expose API functions by itself,
  48.    *   it is possible to control its behaviour with @FT_Property_Set and
  49.    *   @FT_Property_Get.  The following lists the available properties
  50.    *   together with the necessary macros and structures.
  51.    *
  52.    *   The CFF driver's module name is `cff'.
  53.    *
  54.    */
  55.  
  56.  
  57.   /**************************************************************************
  58.    *
  59.    * @property:
  60.    *   hinting-engine
  61.    *
  62.    * @description:
  63.    *   Thanks to Adobe, which contributed a new hinting (and parsing)
  64.    *   engine, an application can select between `freetype' and `adobe' if
  65.    *   compiled with CFF_CONFIG_OPTION_OLD_ENGINE.  If this configuration
  66.    *   macro isn't defined, `hinting-engine' does nothing.
  67.    *
  68.    *   The default engine is `freetype' if CFF_CONFIG_OPTION_OLD_ENGINE is
  69.    *   defined, and `adobe' otherwise.
  70.    *
  71.    *   The following example code demonstrates how to select Adobe's hinting
  72.    *   engine (omitting the error handling).
  73.    *
  74.    *   {
  75.    *     FT_Library  library;
  76.    *     FT_Face     face;
  77.    *     FT_UInt     hinting_engine = FT_CFF_HINTING_ADOBE;
  78.    *
  79.    *
  80.    *     FT_Init_FreeType( &library );
  81.    *
  82.    *     FT_Property_Set( library, "cff",
  83.    *                               "hinting-engine", &hinting_engine );
  84.    *   }
  85.    *
  86.    * @note:
  87.    *   This property can be used with @FT_Property_Get also.
  88.    *
  89.    */
  90.  
  91.  
  92.   /**************************************************************************
  93.    *
  94.    * @enum:
  95.    *   FT_CFF_HINTING_XXX
  96.    *
  97.    * @description:
  98.    *   A list of constants used for the @hinting-engine property to select
  99.    *   the hinting engine for CFF fonts.
  100.    *
  101.    * @values:
  102.    *   FT_CFF_HINTING_FREETYPE ::
  103.    *     Use the old FreeType hinting engine.
  104.    *
  105.    *   FT_CFF_HINTING_ADOBE ::
  106.    *     Use the hinting engine contributed by Adobe.
  107.    *
  108.    */
  109. #define FT_CFF_HINTING_FREETYPE  0
  110. #define FT_CFF_HINTING_ADOBE     1
  111.  
  112.  
  113.   /**************************************************************************
  114.    *
  115.    * @property:
  116.    *   no-stem-darkening
  117.    *
  118.    * @description:
  119.    *   By default, the Adobe CFF engine darkens stems at smaller sizes,
  120.    *   regardless of hinting, to enhance contrast.  Setting this property,
  121.    *   stem darkening gets switched off.
  122.    *
  123.    *   Note that stem darkening is never applied if @FT_LOAD_NO_SCALE is set.
  124.    *
  125.    *   {
  126.    *     FT_Library  library;
  127.    *     FT_Face     face;
  128.    *     FT_Bool     no_stem_darkening = TRUE;
  129.    *
  130.    *
  131.    *     FT_Init_FreeType( &library );
  132.    *
  133.    *     FT_Property_Set( library, "cff",
  134.    *                               "no-stem-darkening", &no_stem_darkening );
  135.    *   }
  136.    *
  137.    * @note:
  138.    *   This property can be used with @FT_Property_Get also.
  139.    *
  140.    */
  141.  
  142.  
  143.  /* */
  144.  
  145. FT_END_HEADER
  146.  
  147.  
  148. #endif /* __FTCFFDRV_H__ */
  149.  
  150.  
  151. /* END */
  152.