|
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 */ |