Home | History | Annotate | Download | only in truetype
      1 /***************************************************************************/
      2 /*                                                                         */
      3 /*  ttsubpix.h                                                             */
      4 /*                                                                         */
      5 /*    TrueType Subpixel Hinting.                                           */
      6 /*                                                                         */
      7 /*  Copyright 2010-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 __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_CONFIG_OPTION_SUBPIXEL_HINTING
     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                   0x0000001
     54 #define SPH_TWEAK_ALWAYS_DO_DELTAP                0x0000002
     55 #define SPH_TWEAK_ALWAYS_SKIP_DELTAP              0x0000004
     56 #define SPH_TWEAK_COURIER_NEW_2_HACK              0x0000008
     57 #define SPH_TWEAK_DEEMBOLDEN                      0x0000010
     58 #define SPH_TWEAK_DO_SHPIX                        0x0000020
     59 #define SPH_TWEAK_EMBOLDEN                        0x0000040
     60 #define SPH_TWEAK_MIAP_HACK                       0x0000080
     61 #define SPH_TWEAK_NORMAL_ROUND                    0x0000100
     62 #define SPH_TWEAK_NO_ALIGNRP_AFTER_IUP            0x0000200
     63 #define SPH_TWEAK_NO_CALL_AFTER_IUP               0x0000400
     64 #define SPH_TWEAK_NO_DELTAP_AFTER_IUP             0x0000800
     65 #define SPH_TWEAK_PIXEL_HINTING                   0x0001000
     66 #define SPH_TWEAK_RASTERIZER_35                   0x0002000
     67 #define SPH_TWEAK_ROUND_NONPIXEL_Y_MOVES          0x0004000
     68 #define SPH_TWEAK_SKIP_IUP                        0x0008000
     69 #define SPH_TWEAK_SKIP_NONPIXEL_Y_MOVES           0x0010000
     70 #define SPH_TWEAK_SKIP_OFFPIXEL_Y_MOVES           0x0020000
     71 #define SPH_TWEAK_TIMES_NEW_ROMAN_HACK            0x0040000
     72 #define SPH_TWEAK_SKIP_NONPIXEL_Y_MOVES_DELTAP    0x0080000
     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_CONFIG_OPTION_SUBPIXEL_HINTING */
    104 
    105 
    106 FT_END_HEADER
    107 
    108 #endif /* __TTSUBPIX_H__ */
    109 
    110 /* END */
    111