1727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease/***************************************************************************/ 2727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease/* */ 3727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease/* ttsubpix.h */ 4727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease/* */ 5727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease/* TrueType Subpixel Hinting. */ 6727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease/* */ 7727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease/* Copyright 2010-2013 by */ 8727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease/* David Turner, Robert Wilhelm, and Werner Lemberg. */ 9727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease/* */ 10727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease/* This file is part of the FreeType project, and may only be used, */ 11727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease/* modified, and distributed under the terms of the FreeType project */ 12727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ 13727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease/* this file you indicate that you have read the license and */ 14727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease/* understand and accept it fully. */ 15727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease/* */ 16727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease/***************************************************************************/ 17727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 18727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 19727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#ifndef __TTSUBPIX_H__ 20727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define __TTSUBPIX_H__ 21727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 22727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#include <ft2build.h> 23727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#include "ttobjs.h" 24727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#include "ttinterp.h" 25727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 26727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 27727dee178a392d20eb050d0c446f2fcc29058fa1Victoria LeaseFT_BEGIN_HEADER 28727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 29727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 30727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING 31727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 32727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /*************************************************************************/ 33727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* */ 34727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* ID flags to identify special functions at FDEF and runtime. */ 35727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* */ 36727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* */ 37727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define SPH_FDEF_INLINE_DELTA_1 0x0000001 38727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define SPH_FDEF_INLINE_DELTA_2 0x0000002 39727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define SPH_FDEF_DIAGONAL_STROKE 0x0000004 40727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define SPH_FDEF_VACUFORM_ROUND_1 0x0000008 41727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define SPH_FDEF_TTFAUTOHINT_1 0x0000010 42727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define SPH_FDEF_SPACING_1 0x0000020 43727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define SPH_FDEF_SPACING_2 0x0000040 44727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define SPH_FDEF_TYPEMAN_STROKES 0x0000080 45727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define SPH_FDEF_TYPEMAN_DIAGENDCTRL 0x0000100 46727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 47727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 48727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /*************************************************************************/ 49727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* */ 50727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* Tweak flags that are set for each glyph by the below rules. */ 51727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* */ 52727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* */ 53727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define SPH_TWEAK_ALLOW_X_DMOVE 0x0000001 54727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define SPH_TWEAK_ALWAYS_DO_DELTAP 0x0000002 55727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define SPH_TWEAK_ALWAYS_SKIP_DELTAP 0x0000004 56727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define SPH_TWEAK_COURIER_NEW_2_HACK 0x0000008 57727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define SPH_TWEAK_DEEMBOLDEN 0x0000010 58727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define SPH_TWEAK_DO_SHPIX 0x0000020 59727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define SPH_TWEAK_EMBOLDEN 0x0000040 60727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define SPH_TWEAK_MIAP_HACK 0x0000080 61727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define SPH_TWEAK_NORMAL_ROUND 0x0000100 62727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define SPH_TWEAK_NO_ALIGNRP_AFTER_IUP 0x0000200 63727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define SPH_TWEAK_NO_CALL_AFTER_IUP 0x0000400 64727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define SPH_TWEAK_NO_DELTAP_AFTER_IUP 0x0000800 65727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define SPH_TWEAK_PIXEL_HINTING 0x0001000 66727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define SPH_TWEAK_RASTERIZER_35 0x0002000 67727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define SPH_TWEAK_ROUND_NONPIXEL_Y_MOVES 0x0004000 68727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define SPH_TWEAK_SKIP_IUP 0x0008000 69727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define SPH_TWEAK_SKIP_NONPIXEL_Y_MOVES 0x0010000 70727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define SPH_TWEAK_SKIP_OFFPIXEL_Y_MOVES 0x0020000 71727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define SPH_TWEAK_TIMES_NEW_ROMAN_HACK 0x0040000 72727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define SPH_TWEAK_SKIP_NONPIXEL_Y_MOVES_DELTAP 0x0080000 73727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 74727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 75727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease FT_LOCAL( FT_Bool ) 76727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease sph_test_tweak( TT_Face face, 77727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease const FT_String* family, 78727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease FT_UInt ppem, 79727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease const FT_String* style, 80727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease FT_UInt glyph_index, 81727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease const SPH_TweakRule* rule, 82727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease FT_UInt num_rules ); 83727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 84727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease FT_LOCAL( FT_UInt ) 85727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease sph_test_tweak_x_scaling( TT_Face face, 86727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease const FT_String* family, 87727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease FT_UInt ppem, 88727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease const FT_String* style, 89727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease FT_UInt glyph_index ); 90727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 91727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease FT_LOCAL( void ) 92727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease sph_set_tweaks( TT_Loader loader, 93727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease FT_UInt glyph_index ); 94727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 95727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 96727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* These macros are defined absent a method for setting them */ 97727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define SPH_OPTION_BITMAP_WIDTHS FALSE 98727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define SPH_OPTION_SET_SUBPIXEL TRUE 99727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define SPH_OPTION_SET_GRAYSCALE FALSE 100727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define SPH_OPTION_SET_COMPATIBLE_WIDTHS FALSE 101727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define SPH_OPTION_SET_RASTERIZER_VERSION 38 102727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 103727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ 104727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 105727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 106727dee178a392d20eb050d0c446f2fcc29058fa1Victoria LeaseFT_END_HEADER 107727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 108727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#endif /* __TTSUBPIX_H__ */ 109727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 110727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease/* END */ 111