]> git.saurik.com Git - wxWidgets.git/blob - src/freetype/freetype/config/ftoption.h
regenerated all makefiles from filelist.txt
[wxWidgets.git] / src / freetype / freetype / config / ftoption.h
1 /***************************************************************************/
2 /* */
3 /* ftoption.h */
4 /* */
5 /* User-selectable configuration macros (specification only). */
6 /* */
7 /* Copyright 1996-2000 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 FTOPTION_H
20 #define FTOPTION_H
21
22
23 /*************************************************************************/
24 /* */
25 /* USER-SELECTABLE CONFIGURATION MACROS */
26 /* */
27 /* These macros can be toggled by developers to enable or disable */
28 /* certain aspects of FreeType. This is a default file, where all major */
29 /* options are enabled. */
30 /* */
31 /* Note that if some modifications are required for your build, we */
32 /* advise you to put a modified copy of this file in your build */
33 /* directory, rather than modifying it in-place. */
34 /* */
35 /* The build directory is normally `freetype/builds/<system>' and */
36 /* contains build or system-specific files that are included in */
37 /* priority when building the library. */
38 /* */
39 /*************************************************************************/
40
41
42 /*************************************************************************/
43 /*************************************************************************/
44 /**** ****/
45 /**** G E N E R A L F R E E T Y P E 2 C O N F I G U R A T I O N ****/
46 /**** ****/
47 /*************************************************************************/
48 /*************************************************************************/
49
50
51 /*************************************************************************/
52 /* */
53 /* Convenience functions support */
54 /* */
55 /* Some functions of the FreeType 2 API are provided as a convenience */
56 /* for client applications and developers. However, they are not */
57 /* required to build and run the library itself. */
58 /* */
59 /* By defining this configuration macro, you'll disable the */
60 /* compilation of these functions at build time. This can be useful */
61 /* to reduce the library's code size when you don't need any of */
62 /* these functions. */
63 /* */
64 /* All convenience functions are declared as such in their */
65 /* documentation. */
66 /* */
67 #undef FT_CONFIG_OPTION_NO_CONVENIENCE_FUNCS
68
69
70 /*************************************************************************/
71 /* */
72 /* Alternate Glyph Image Format support */
73 /* */
74 /* By default, the glyph images returned by the FreeType glyph loader */
75 /* can either be a pixmap or a vectorial outline defined through */
76 /* Bezier control points. When defining the following configuration */
77 /* macro, some font drivers will be able to register alternate */
78 /* glyph image formats. */
79 /* */
80 /* Unset this macro if you are sure that you will never use a font */
81 /* driver with an alternate glyph format; this will reduce the size of */
82 /* the base layer code. */
83 /* */
84 /* Note that a few Type 1 fonts, as well as Windows `vector' fonts */
85 /* use a vector `plotter' format that isn't supported when this */
86 /* macro is undefined. */
87 /* */
88 #define FT_CONFIG_OPTION_ALTERNATE_GLYPH_FORMATS
89
90
91 /*************************************************************************/
92 /* */
93 /* Glyph Postscript Names handling */
94 /* */
95 /* By default, FreeType 2 is compiled with the `PSNames' module. This */
96 /* This module is in charge of converting a glyph name string into a */
97 /* Unicode value, or return a Macintosh standard glyph name for the */
98 /* use with the TrueType `post' table. */
99 /* */
100 /* Undefine this macro if you do not want `PSNames' compiled in your */
101 /* build of FreeType. This has the following effects: */
102 /* */
103 /* - The TrueType driver will provide its own set of glyph names, */
104 /* if you build it to support postscript names in the TrueType */
105 /* `post' table. */
106 /* */
107 /* - The Type 1 driver will not be able to synthetize a Unicode */
108 /* charmap out of the glyphs found in the fonts. */
109 /* */
110 /* You would normally undefine this configuration macro when building */
111 /* a version of FreeType that doesn't contain a Type 1 or CFF driver. */
112 /* */
113 #define FT_CONFIG_OPTION_POSTSCRIPT_NAMES
114
115
116 /*************************************************************************/
117 /* */
118 /* Postscript Names to Unicode Values support */
119 /* */
120 /* By default, FreeType 2 is built with the `PSNames' module compiled */
121 /* in. Among other things, the module is used to convert a glyph name */
122 /* into a Unicode value. This is especially useful in order to */
123 /* synthetize on the fly a Unicode charmap from the CFF/Type 1 driver */
124 /* through a big table named the `Adobe Glyph List' (AGL). */
125 /* */
126 /* Undefine this macro if you do not want the Adobe Glyph List */
127 /* compiled in your `PSNames' module. The Type 1 driver will not be */
128 /* able to synthetize a Unicode charmap out of the glyphs found in the */
129 /* fonts. */
130 /* */
131 #define FT_CONFIG_OPTION_ADOBE_GLYPH_LIST
132
133
134 /*************************************************************************/
135 /* */
136 /* Many compilers provide the non-ANSI `long long' 64-bit type. You can */
137 /* activate it by defining the FTCALC_USE_LONG_LONG macro. Note that */
138 /* this will produce many -ansi warnings during library compilation, and */
139 /* that in many cases the generated code will not be smaller or faster! */
140 /* */
141 #undef FTCALC_USE_LONG_LONG
142
143
144 /*************************************************************************/
145 /* */
146 /* DLL export compilation */
147 /* */
148 /* When compiling FreeType as a DLL, some systems/compilers need a */
149 /* special keyword in front OR after the return type of function */
150 /* declarations. */
151 /* */
152 /* Two macros are used within the FreeType source code to define */
153 /* exported library functions: FT_EXPORT_DEF and FT_EXPORT_FUNC. */
154 /* */
155 /* FT_EXPORT_DEF( return_type ) */
156 /* */
157 /* is used in a function declaration, as in */
158 /* */
159 /* FT_EXPORT_DEF( FT_Error ) */
160 /* FT_Init_FreeType( FT_Library* alibrary ); */
161 /* */
162 /* */
163 /* FT_EXPORT_FUNC( return_type ) */
164 /* */
165 /* is used in a function definition, as in */
166 /* */
167 /* FT_EXPORT_FUNC( FT_Error ) */
168 /* FT_Init_FreeType( FT_Library* alibrary ) */
169 /* { */
170 /* ... some code ... */
171 /* return FT_Err_Ok; */
172 /* } */
173 /* */
174 /* You can provide your own implementation of FT_EXPORT_DEF and */
175 /* FT_EXPORT_FUNC here if you want. If you leave them undefined, they */
176 /* will be later automatically defined as `extern return_type' to */
177 /* allow normal compilation. */
178 /* */
179 #undef FT_EXPORT_DEF
180 #undef FT_EXPORT_FUNC
181
182
183 /*************************************************************************/
184 /* */
185 /* Debug level */
186 /* */
187 /* FreeType can be compiled in debug or trace mode. In debug mode, */
188 /* errors are reported through the `ftdebug' component. In trace */
189 /* mode, additional messages are sent to the standard output during */
190 /* execution. */
191 /* */
192 /* Define FT_DEBUG_LEVEL_ERROR to build the library in debug mode. */
193 /* Define FT_DEBUG_LEVEL_TRACE to build it in trace mode. */
194 /* */
195 /* Don't define any of these macros to compile in `release' mode! */
196 /* */
197 #define FT_DEBUG_LEVEL_ERROR
198 #define FT_DEBUG_LEVEL_TRACE
199
200
201 /*************************************************************************/
202 /* */
203 /* Computation Algorithms */
204 /* */
205 /* Used for debugging, this configuration macro should disappear */
206 /* soon. */
207 /* */
208 #define FT_CONFIG_OPTION_OLD_CALCS
209
210
211 /*************************************************************************/
212 /* */
213 /* The size in bytes of the render pool used by the scan-line converter */
214 /* to do all of its work. */
215 /* */
216 /* This must be greater than 4kByte. */
217 /* */
218 #define FT_RENDER_POOL_SIZE 16384
219
220
221 /*************************************************************************/
222 /* */
223 /* FT_MAX_MODULES */
224 /* */
225 /* The maximum number of modules that can be registered in a single */
226 /* FreeType library object. 16 is the default. */
227 /* */
228 #define FT_MAX_MODULES 16
229
230
231 /*************************************************************************/
232 /* */
233 /* FT_MAX_EXTENSIONS */
234 /* */
235 /* The maximum number of extensions that can be registered in a single */
236 /* font driver. 8 is the default. */
237 /* */
238 /* If you don't know what this means, you certainly do not need to */
239 /* change this value. */
240 /* */
241 #define FT_MAX_EXTENSIONS 8
242
243
244 /*************************************************************************/
245 /*************************************************************************/
246 /**** ****/
247 /**** S F N T D R I V E R C O N F I G U R A T I O N ****/
248 /**** ****/
249 /*************************************************************************/
250 /*************************************************************************/
251
252
253 /*************************************************************************/
254 /* */
255 /* Define TT_CONFIG_OPTION_EMBEDDED_BITMAPS if you want to support */
256 /* embedded bitmaps in all formats using the SFNT module (namely */
257 /* TrueType & OpenType). */
258 /* */
259 #define TT_CONFIG_OPTION_EMBEDDED_BITMAPS
260
261
262 /*************************************************************************/
263 /* */
264 /* Define TT_CONFIG_OPTION_POSTSCRIPT_NAMES if you want to be able to */
265 /* load and enumerate the glyph Postscript names in a TrueType or */
266 /* OpenType file. */
267 /* */
268 /* Note that when you do not compile the `PSNames' module by undefining */
269 /* the above FT_CONFIG_OPTION_POSTSCRIPT_NAMES, the `sfnt' module will */
270 /* contain additional code used to read the PS Names table from a font. */
271 /* */
272 /* (By default, the module uses `PSNames' to extract glyph names.) */
273 /* */
274 #define TT_CONFIG_OPTION_POSTSCRIPT_NAMES
275
276
277 /*************************************************************************/
278 /* */
279 /* Define TT_CONFIG_OPTION_SFNT_NAMES if your applications need to */
280 /* access the internal name table in a SFNT-based format like TrueType */
281 /* or OpenType. The name table contains various strings used to */
282 /* describe the font, like family name, copyright, version, etc. It */
283 /* does not contain any glyph name though. */
284 /* */
285 /* Accessing SFNT names is done through the functions declared in */
286 /* `freetype/ftnames.h'. */
287 /* */
288 #define TT_CONFIG_OPTION_SFNT_NAMES
289
290
291 /*************************************************************************/
292 /*************************************************************************/
293 /**** ****/
294 /**** T R U E T Y P E D R I V E R C O N F I G U R A T I O N ****/
295 /**** ****/
296 /*************************************************************************/
297 /*************************************************************************/
298
299 /*************************************************************************/
300 /* */
301 /* Define TT_CONFIG_OPTION_BYTECODE_INTERPRETER if you want to compile */
302 /* a bytecode interpreter in the TrueType driver. Note that there are */
303 /* important patent issues related to the use of the interpreter. */
304 /* */
305 /* By undefining this, you will only compile the code necessary to load */
306 /* TrueType glyphs without hinting. */
307 /* */
308 #undef TT_CONFIG_OPTION_BYTECODE_INTERPRETER
309
310
311 /*************************************************************************/
312 /* */
313 /* Define TT_CONFIG_OPTION_INTERPRETER_SWITCH to compile the TrueType */
314 /* bytecode interpreter with a huge switch statement, rather than a call */
315 /* table. This results in smaller and faster code for a number of */
316 /* architectures. */
317 /* */
318 /* Note however that on some compiler/processor combinations, undefining */
319 /* this macro will generate faster, though larger, code. */
320 /* */
321 #define TT_CONFIG_OPTION_INTERPRETER_SWITCH
322
323
324 /*************************************************************************/
325 /*************************************************************************/
326 /**** ****/
327 /**** T Y P E 1 D R I V E R C O N F I G U R A T I O N ****/
328 /**** ****/
329 /*************************************************************************/
330 /*************************************************************************/
331
332
333 /*************************************************************************/
334 /* */
335 /* T1_MAX_STACK_DEPTH is the maximal depth of the token stack used by */
336 /* the Type 1 parser (see t1load.c). A minimum of 16 is required. */
337 /* */
338 #define T1_MAX_STACK_DEPTH 16
339
340
341 /*************************************************************************/
342 /* */
343 /* T1_MAX_DICT_DEPTH is the maximal depth of nest dictionaries and */
344 /* arrays in the Type 1 stream (see t1load.c). A minimum of 4 is */
345 /* required. */
346 /* */
347 #define T1_MAX_DICT_DEPTH 5
348
349
350 /*************************************************************************/
351 /* */
352 /* T1_MAX_SUBRS_CALLS details the maximum number of nested sub-routine */
353 /* calls during glyph loading. */
354 /* */
355 #define T1_MAX_SUBRS_CALLS 8
356
357
358 /*************************************************************************/
359 /* */
360 /* T1_MAX_CHARSTRING_OPERANDS is the charstring stack's capacity. */
361 /* */
362 #define T1_MAX_CHARSTRINGS_OPERANDS 32
363
364
365 /*************************************************************************/
366 /* */
367 /* Define T1_CONFIG_OPTION_DISABLE_HINTER if you want to generate a */
368 /* driver with no hinter. This can be useful to debug the parser. */
369 /* */
370 #undef T1_CONFIG_OPTION_DISABLE_HINTER
371
372
373 /*************************************************************************/
374 /* */
375 /* Define this configuration macro if you want to prevent the */
376 /* compilation of `t1afm', which is in charge of reading Type 1 AFM */
377 /* files into an existing face. Note that if set, the T1 driver will be */
378 /* unable to produce kerning distances. */
379 /* */
380 #undef T1_CONFIG_OPTION_NO_AFM
381
382
383 /*************************************************************************/
384 /* */
385 /* Define this configuration macro if you want to prevent the */
386 /* compilation of the Multiple Masters font support in the Type 1 */
387 /* driver. */
388 /* */
389 #undef T1_CONFIG_OPTION_NO_MM_SUPPORT
390
391
392 #endif /* FTOPTION_H */
393
394
395 /* END */