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