1/***************************************************************************/ 2/* */ 3/* ttsubpix.h */ 4/* */ 5/* TrueType Subpixel Hinting. */ 6/* */ 7/* Copyright 2010-2017 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 27FT_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 106FT_END_HEADER 107 108#endif /* TTSUBPIX_H_ */ 109 110 111/* END */ 112