1 /****************************************************************************
   2  *
   3  * ttsubpix.h
   4  *
   5  *   TrueType Subpixel Hinting.
   6  *
   7  * Copyright (C) 2010-2019 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 TTSUBPIX_H_
  20 #define TTSUBPIX_H_
  21 
  22 #include <ft2build.h>
  23 #include "ttobjs.h"
  24 #include "ttinterp.h"
  25 
  26 
  27 FT_BEGIN_HEADER
  28 
  29 
  30 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
  31 
  32   /**************************************************************************
  33    *
  34    * ID flags to identify special functions at FDEF and runtime.
  35    *
  36    */
  37 #define SPH_FDEF_INLINE_DELTA_1       0x0000001
  38 #define SPH_FDEF_INLINE_DELTA_2       0x0000002
  39 #define SPH_FDEF_DIAGONAL_STROKE      0x0000004
  40 #define SPH_FDEF_VACUFORM_ROUND_1     0x0000008
  41 #define SPH_FDEF_TTFAUTOHINT_1        0x0000010
  42 #define SPH_FDEF_SPACING_1            0x0000020
  43 #define SPH_FDEF_SPACING_2            0x0000040
  44 #define SPH_FDEF_TYPEMAN_STROKES      0x0000080
  45 #define SPH_FDEF_TYPEMAN_DIAGENDCTRL  0x0000100
  46 
  47 
  48   /**************************************************************************
  49    *
  50    * Tweak flags that are set for each glyph by the below rules.
  51    *
  52    */
  53 #define SPH_TWEAK_ALLOW_X_DMOVE                   0x0000001UL
  54 #define SPH_TWEAK_ALWAYS_DO_DELTAP                0x0000002UL
  55 #define SPH_TWEAK_ALWAYS_SKIP_DELTAP              0x0000004UL
  56 #define SPH_TWEAK_COURIER_NEW_2_HACK              0x0000008UL
  57 #define SPH_TWEAK_DEEMBOLDEN                      0x0000010UL
  58 #define SPH_TWEAK_DO_SHPIX                        0x0000020UL
  59 #define SPH_TWEAK_EMBOLDEN                        0x0000040UL
  60 #define SPH_TWEAK_MIAP_HACK                       0x0000080UL
  61 #define SPH_TWEAK_NORMAL_ROUND                    0x0000100UL
  62 #define SPH_TWEAK_NO_ALIGNRP_AFTER_IUP            0x0000200UL
  63 #define SPH_TWEAK_NO_CALL_AFTER_IUP               0x0000400UL
  64 #define SPH_TWEAK_NO_DELTAP_AFTER_IUP             0x0000800UL
  65 #define SPH_TWEAK_PIXEL_HINTING                   0x0001000UL
  66 #define SPH_TWEAK_RASTERIZER_35                   0x0002000UL
  67 #define SPH_TWEAK_ROUND_NONPIXEL_Y_MOVES          0x0004000UL
  68 #define SPH_TWEAK_SKIP_IUP                        0x0008000UL
  69 #define SPH_TWEAK_SKIP_NONPIXEL_Y_MOVES           0x0010000UL
  70 #define SPH_TWEAK_SKIP_OFFPIXEL_Y_MOVES           0x0020000UL
  71 #define SPH_TWEAK_TIMES_NEW_ROMAN_HACK            0x0040000UL
  72 #define SPH_TWEAK_SKIP_NONPIXEL_Y_MOVES_DELTAP    0x0080000UL
  73 
  74 
  75   FT_LOCAL( FT_Bool )
  76   sph_test_tweak( TT_Face               face,
  77                   const FT_String*      family,
  78                   FT_UInt               ppem,
  79                   const FT_String*      style,
  80                   FT_UInt               glyph_index,
  81                   const SPH_TweakRule*  rule,
  82                   FT_UInt               num_rules );
  83 
  84   FT_LOCAL( FT_UInt )
  85   sph_test_tweak_x_scaling( TT_Face           face,
  86                             const FT_String*  family,
  87                             FT_UInt           ppem,
  88                             const FT_String*  style,
  89                             FT_UInt           glyph_index );
  90 
  91   FT_LOCAL( void )
  92   sph_set_tweaks( TT_Loader  loader,
  93                   FT_UInt    glyph_index );
  94 
  95 
  96   /* These macros are defined absent a method for setting them */
  97 #define SPH_OPTION_BITMAP_WIDTHS           FALSE
  98 #define SPH_OPTION_SET_SUBPIXEL            TRUE
  99 #define SPH_OPTION_SET_GRAYSCALE           FALSE
 100 #define SPH_OPTION_SET_COMPATIBLE_WIDTHS   FALSE
 101 #define SPH_OPTION_SET_RASTERIZER_VERSION  38
 102 
 103 #endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */
 104 
 105 
 106 FT_END_HEADER
 107 
 108 #endif /* TTSUBPIX_H_ */
 109 
 110 
 111 /* END */