1/***************************************************************************/ 2/* */ 3/* ftgasp.h */ 4/* */ 5/* Access of TrueType's `gasp' table (specification). */ 6/* */ 7/* Copyright 2007, 2008, 2011 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 _FT_GASP_H_ 20#define _FT_GASP_H_ 21 22#include <ft2build.h> 23#include FT_FREETYPE_H 24 25#ifdef FREETYPE_H 26#error "freetype.h of FreeType 1 has been loaded!" 27#error "Please fix the directory search order for header files" 28#error "so that freetype.h of FreeType 2 is found first." 29#endif 30 31 32 /*************************************************************************** 33 * 34 * @section: 35 * gasp_table 36 * 37 * @title: 38 * Gasp Table 39 * 40 * @abstract: 41 * Retrieving TrueType `gasp' table entries. 42 * 43 * @description: 44 * The function @FT_Get_Gasp can be used to query a TrueType or OpenType 45 * font for specific entries in its `gasp' table, if any. This is 46 * mainly useful when implementing native TrueType hinting with the 47 * bytecode interpreter to duplicate the Windows text rendering results. 48 */ 49 50 /************************************************************************* 51 * 52 * @enum: 53 * FT_GASP_XXX 54 * 55 * @description: 56 * A list of values and/or bit-flags returned by the @FT_Get_Gasp 57 * function. 58 * 59 * @values: 60 * FT_GASP_NO_TABLE :: 61 * This special value means that there is no GASP table in this face. 62 * It is up to the client to decide what to do. 63 * 64 * FT_GASP_DO_GRIDFIT :: 65 * Grid-fitting and hinting should be performed at the specified ppem. 66 * This *really* means TrueType bytecode interpretation. If this bit 67 * is not set, no hinting gets applied. 68 * 69 * FT_GASP_DO_GRAY :: 70 * Anti-aliased rendering should be performed at the specified ppem. 71 * If not set, do monochrome rendering. 72 * 73 * FT_GASP_SYMMETRIC_SMOOTHING :: 74 * If set, smoothing along multiple axes must be used with ClearType. 75 * 76 * FT_GASP_SYMMETRIC_GRIDFIT :: 77 * Grid-fitting must be used with ClearType's symmetric smoothing. 78 * 79 * @note: 80 * The bit-flags `FT_GASP_DO_GRIDFIT' and `FT_GASP_DO_GRAY' are to be 81 * used for standard font rasterization only. Independently of that, 82 * `FT_GASP_SYMMETRIC_SMOOTHING' and `FT_GASP_SYMMETRIC_GRIDFIT' are to 83 * be used if ClearType is enabled (and `FT_GASP_DO_GRIDFIT' and 84 * `FT_GASP_DO_GRAY' are consequently ignored). 85 * 86 * `ClearType' is Microsoft's implementation of LCD rendering, partly 87 * protected by patents. 88 * 89 * @since: 90 * 2.3.0 91 */ 92#define FT_GASP_NO_TABLE -1 93#define FT_GASP_DO_GRIDFIT 0x01 94#define FT_GASP_DO_GRAY 0x02 95#define FT_GASP_SYMMETRIC_SMOOTHING 0x08 96#define FT_GASP_SYMMETRIC_GRIDFIT 0x10 97 98 99 /************************************************************************* 100 * 101 * @func: 102 * FT_Get_Gasp 103 * 104 * @description: 105 * Read the `gasp' table from a TrueType or OpenType font file and 106 * return the entry corresponding to a given character pixel size. 107 * 108 * @input: 109 * face :: The source face handle. 110 * ppem :: The vertical character pixel size. 111 * 112 * @return: 113 * Bit flags (see @FT_GASP_XXX), or @FT_GASP_NO_TABLE if there is no 114 * `gasp' table in the face. 115 * 116 * @since: 117 * 2.3.0 118 */ 119 FT_EXPORT( FT_Int ) 120 FT_Get_Gasp( FT_Face face, 121 FT_UInt ppem ); 122 123/* */ 124 125#endif /* _FT_GASP_H_ */ 126 127 128/* END */ 129