ftoption.h revision aacb8e1368a883fcbc9fe64fd0e460cef9c9b20c
15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/***************************************************************************/ 25d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/* */ 35d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/* ftoption.h */ 45d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/* */ 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/* User-selectable configuration macros (specification only). */ 65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/* */ 75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, */ 85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/* 2010 by */ 95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/* David Turner, Robert Wilhelm, and Werner Lemberg. */ 105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/* */ 115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/* This file is part of the FreeType project, and may only be used, */ 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/* modified, and distributed under the terms of the FreeType project */ 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ 145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/* this file you indicate that you have read the license and */ 155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/* understand and accept it fully. */ 165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/* */ 175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/***************************************************************************/ 185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#ifndef __FTOPTION_H__ 215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#define __FTOPTION_H__ 225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include <ft2build.h> 255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)FT_BEGIN_HEADER 285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) /*************************************************************************/ 305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) /* */ 315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) /* USER-SELECTABLE CONFIGURATION MACROS */ 325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) /* */ 335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) /* This file contains the default configuration macro definitions for */ 345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) /* a standard build of the FreeType library. There are three ways to */ 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) /* use this file to build project-specific versions of the library: */ 365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) /* */ 375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* - You can modify this file by hand, but this is not recommended in */ 385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* cases where you would like to build several versions of the */ 395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* library from a single source directory. */ 405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* */ 415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* - You can put a copy of this file in your build directory, more */ 425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* precisely in `$BUILD/freetype/config/ftoption.h', where `$BUILD' */ 435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* is the name of a directory that is included _before_ the FreeType */ 445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* include path during compilation. */ 455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* */ 465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* The default FreeType Makefiles and Jamfiles use the build */ 475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* directory `builds/<system>' by default, but you can easily change */ 485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* that for your own projects. */ 495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* */ 505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* - Copy the file <ft2build.h> to `$BUILD/ft2build.h' and modify it */ 515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* slightly to pre-define the macro FT_CONFIG_OPTIONS_H used to */ 525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* locate this file during the build. For example, */ 535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* */ 545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* #define FT_CONFIG_OPTIONS_H <myftoptions.h> */ 555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* #include <freetype/config/ftheader.h> */ 565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* */ 575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* will use `$BUILD/myftoptions.h' instead of this file for macro */ 585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* definitions. */ 595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* */ 605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* Note also that you can similarly pre-define the macro */ 615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* FT_CONFIG_MODULES_H used to locate the file listing of the modules */ 625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* that are statically linked to the library at compile time. By */ 635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* default, this file is <freetype/config/ftmodule.h>. */ 645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) /* */ 655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* We highly recommend using the third method whenever possible. */ 665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* */ 675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /*************************************************************************/ 685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /*************************************************************************/ 715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /*************************************************************************/ 725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /**** ****/ 735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /**** 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 ****/ 745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /**** ****/ 755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /*************************************************************************/ 765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /*************************************************************************/ 775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /*************************************************************************/ 805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) /* */ 815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) /* Uncomment the line below if you want to activate sub-pixel rendering */ 825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) /* (a.k.a. LCD rendering, or ClearType) in this build of the library. */ 835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) /* */ 845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) /* Note that this feature is covered by several Microsoft patents */ 855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) /* and should not be activated in any default build of the library. */ 865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) /* */ 875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) /* This macro has no impact on the FreeType API, only on its */ 885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* _implementation_. For example, using FT_RENDER_MODE_LCD when calling */ 895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* FT_Render_Glyph still generates a bitmap that is 3 times wider than */ 905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* the original size in case this macro isn't defined; however, each */ 915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* triplet of subpixels has R=G=B. */ 925d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* */ 935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* This is done to allow FreeType clients to run unmodified, forcing */ 945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* them to display normal gray-level anti-aliased glyphs. */ 955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* */ 965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/* #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING */ 975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 995d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /*************************************************************************/ 1005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* */ 1015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* Many compilers provide a non-ANSI 64-bit data type that can be used */ 1025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* by FreeType to speed up some computations. However, this will create */ 1035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* some problems when compiling the library in strict ANSI mode. */ 1045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* */ 1055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* For this reason, the use of 64-bit integers is normally disabled when */ 1065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* the __STDC__ macro is defined. You can however disable this by */ 1075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* defining the macro FT_CONFIG_OPTION_FORCE_INT64 here. */ 1085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* */ 1095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* For most compilers, this will only create compilation warnings when */ 1105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* building the library. */ 1115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* */ 1125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* ObNote: The compiler-specific 64-bit integers are detected in the */ 1135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* file `ftconfig.h' either statically or through the */ 1145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* `configure' script on supported platforms. */ 1155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* */ 1165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#undef FT_CONFIG_OPTION_FORCE_INT64 1175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /*************************************************************************/ 1205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* */ 1215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* If this macro is defined, do not try to use an assembler version of */ 1225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* performance-critical functions (e.g. FT_MulFix). You should only do */ 1235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* that to verify that the assembler function works properly, or to */ 1245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* execute benchmark tests of the various implementations. */ 1255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/* #define FT_CONFIG_OPTION_NO_ASSEMBLER */ 1265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /*************************************************************************/ 1295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* */ 1305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* If this macro is defined, try to use an inlined assembler version of */ 1315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* the `FT_MulFix' function, which is a `hotspot' when loading and */ 1325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* hinting glyphs, and which should be executed as fast as possible. */ 1335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* */ 1345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* Note that if your compiler or CPU is not supported, this will default */ 1355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* to the standard and portable implementation found in `ftcalc.c'. */ 1365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /* */ 1375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#define FT_CONFIG_OPTION_INLINE_MULFIX 1385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 140 /*************************************************************************/ 141 /* */ 142 /* LZW-compressed file support. */ 143 /* */ 144 /* FreeType now handles font files that have been compressed with the */ 145 /* `compress' program. This is mostly used to parse many of the PCF */ 146 /* files that come with various X11 distributions. The implementation */ 147 /* uses NetBSD's `zopen' to partially uncompress the file on the fly */ 148 /* (see src/lzw/ftgzip.c). */ 149 /* */ 150 /* Define this macro if you want to enable this `feature'. */ 151 /* */ 152#define FT_CONFIG_OPTION_USE_LZW 153 154 155 /*************************************************************************/ 156 /* */ 157 /* Gzip-compressed file support. */ 158 /* */ 159 /* FreeType now handles font files that have been compressed with the */ 160 /* `gzip' program. This is mostly used to parse many of the PCF files */ 161 /* that come with XFree86. The implementation uses `zlib' to */ 162 /* partially uncompress the file on the fly (see src/gzip/ftgzip.c). */ 163 /* */ 164 /* Define this macro if you want to enable this `feature'. See also */ 165 /* the macro FT_CONFIG_OPTION_SYSTEM_ZLIB below. */ 166 /* */ 167#define FT_CONFIG_OPTION_USE_ZLIB 168 169 170 /*************************************************************************/ 171 /* */ 172 /* ZLib library selection */ 173 /* */ 174 /* This macro is only used when FT_CONFIG_OPTION_USE_ZLIB is defined. */ 175 /* It allows FreeType's `ftgzip' component to link to the system's */ 176 /* installation of the ZLib library. This is useful on systems like */ 177 /* Unix or VMS where it generally is already available. */ 178 /* */ 179 /* If you let it undefined, the component will use its own copy */ 180 /* of the zlib sources instead. These have been modified to be */ 181 /* included directly within the component and *not* export external */ 182 /* function names. This allows you to link any program with FreeType */ 183 /* _and_ ZLib without linking conflicts. */ 184 /* */ 185 /* Do not #undef this macro here since the build system might define */ 186 /* it for certain configurations only. */ 187 /* */ 188/* #define FT_CONFIG_OPTION_SYSTEM_ZLIB */ 189 190 191 /*************************************************************************/ 192 /* */ 193 /* DLL export compilation */ 194 /* */ 195 /* When compiling FreeType as a DLL, some systems/compilers need a */ 196 /* special keyword in front OR after the return type of function */ 197 /* declarations. */ 198 /* */ 199 /* Two macros are used within the FreeType source code to define */ 200 /* exported library functions: FT_EXPORT and FT_EXPORT_DEF. */ 201 /* */ 202 /* FT_EXPORT( return_type ) */ 203 /* */ 204 /* is used in a function declaration, as in */ 205 /* */ 206 /* FT_EXPORT( FT_Error ) */ 207 /* FT_Init_FreeType( FT_Library* alibrary ); */ 208 /* */ 209 /* */ 210 /* FT_EXPORT_DEF( return_type ) */ 211 /* */ 212 /* is used in a function definition, as in */ 213 /* */ 214 /* FT_EXPORT_DEF( FT_Error ) */ 215 /* FT_Init_FreeType( FT_Library* alibrary ) */ 216 /* { */ 217 /* ... some code ... */ 218 /* return FT_Err_Ok; */ 219 /* } */ 220 /* */ 221 /* You can provide your own implementation of FT_EXPORT and */ 222 /* FT_EXPORT_DEF here if you want. If you leave them undefined, they */ 223 /* will be later automatically defined as `extern return_type' to */ 224 /* allow normal compilation. */ 225 /* */ 226 /* Do not #undef these macros here since the build system might define */ 227 /* them for certain configurations only. */ 228 /* */ 229/* #define FT_EXPORT(x) extern x */ 230/* #define FT_EXPORT_DEF(x) x */ 231 232 233 /*************************************************************************/ 234 /* */ 235 /* Glyph Postscript Names handling */ 236 /* */ 237 /* By default, FreeType 2 is compiled with the `psnames' module. This */ 238 /* module is in charge of converting a glyph name string into a */ 239 /* Unicode value, or return a Macintosh standard glyph name for the */ 240 /* use with the TrueType `post' table. */ 241 /* */ 242 /* Undefine this macro if you do not want `psnames' compiled in your */ 243 /* build of FreeType. This has the following effects: */ 244 /* */ 245 /* - The TrueType driver will provide its own set of glyph names, */ 246 /* if you build it to support postscript names in the TrueType */ 247 /* `post' table. */ 248 /* */ 249 /* - The Type 1 driver will not be able to synthesize a Unicode */ 250 /* charmap out of the glyphs found in the fonts. */ 251 /* */ 252 /* You would normally undefine this configuration macro when building */ 253 /* a version of FreeType that doesn't contain a Type 1 or CFF driver. */ 254 /* */ 255#define FT_CONFIG_OPTION_POSTSCRIPT_NAMES 256 257 258 /*************************************************************************/ 259 /* */ 260 /* Postscript Names to Unicode Values support */ 261 /* */ 262 /* By default, FreeType 2 is built with the `PSNames' module compiled */ 263 /* in. Among other things, the module is used to convert a glyph name */ 264 /* into a Unicode value. This is especially useful in order to */ 265 /* synthesize on the fly a Unicode charmap from the CFF/Type 1 driver */ 266 /* through a big table named the `Adobe Glyph List' (AGL). */ 267 /* */ 268 /* Undefine this macro if you do not want the Adobe Glyph List */ 269 /* compiled in your `PSNames' module. The Type 1 driver will not be */ 270 /* able to synthesize a Unicode charmap out of the glyphs found in the */ 271 /* fonts. */ 272 /* */ 273#define FT_CONFIG_OPTION_ADOBE_GLYPH_LIST 274 275 276 /*************************************************************************/ 277 /* */ 278 /* Support for Mac fonts */ 279 /* */ 280 /* Define this macro if you want support for outline fonts in Mac */ 281 /* format (mac dfont, mac resource, macbinary containing a mac */ 282 /* resource) on non-Mac platforms. */ 283 /* */ 284 /* Note that the `FOND' resource isn't checked. */ 285 /* */ 286#define FT_CONFIG_OPTION_MAC_FONTS 287 288 289 /*************************************************************************/ 290 /* */ 291 /* Guessing methods to access embedded resource forks */ 292 /* */ 293 /* Enable extra Mac fonts support on non-Mac platforms (e.g. */ 294 /* GNU/Linux). */ 295 /* */ 296 /* Resource forks which include fonts data are stored sometimes in */ 297 /* locations which users or developers don't expected. In some cases, */ 298 /* resource forks start with some offset from the head of a file. In */ 299 /* other cases, the actual resource fork is stored in file different */ 300 /* from what the user specifies. If this option is activated, */ 301 /* FreeType tries to guess whether such offsets or different file */ 302 /* names must be used. */ 303 /* */ 304 /* Note that normal, direct access of resource forks is controlled via */ 305 /* the FT_CONFIG_OPTION_MAC_FONTS option. */ 306 /* */ 307#ifdef FT_CONFIG_OPTION_MAC_FONTS 308#define FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK 309#endif 310 311 312 /*************************************************************************/ 313 /* */ 314 /* Allow the use of FT_Incremental_Interface to load typefaces that */ 315 /* contain no glyph data, but supply it via a callback function. */ 316 /* This is required by clients supporting document formats which */ 317 /* supply font data incrementally as the document is parsed, such */ 318 /* as the Ghostscript interpreter for the PostScript language. */ 319 /* */ 320/* #define FT_CONFIG_OPTION_INCREMENTAL */ 321 322 323 /*************************************************************************/ 324 /* */ 325 /* The size in bytes of the render pool used by the scan-line converter */ 326 /* to do all of its work. */ 327 /* */ 328 /* This must be greater than 4KByte if you use FreeType to rasterize */ 329 /* glyphs; otherwise, you may set it to zero to avoid unnecessary */ 330 /* allocation of the render pool. */ 331 /* */ 332#define FT_RENDER_POOL_SIZE 16384L 333 334 335 /*************************************************************************/ 336 /* */ 337 /* FT_MAX_MODULES */ 338 /* */ 339 /* The maximum number of modules that can be registered in a single */ 340 /* FreeType library object. 32 is the default. */ 341 /* */ 342#define FT_MAX_MODULES 32 343 344 345 /*************************************************************************/ 346 /* */ 347 /* Debug level */ 348 /* */ 349 /* FreeType can be compiled in debug or trace mode. In debug mode, */ 350 /* errors are reported through the `ftdebug' component. In trace */ 351 /* mode, additional messages are sent to the standard output during */ 352 /* execution. */ 353 /* */ 354 /* Define FT_DEBUG_LEVEL_ERROR to build the library in debug mode. */ 355 /* Define FT_DEBUG_LEVEL_TRACE to build it in trace mode. */ 356 /* */ 357 /* Don't define any of these macros to compile in `release' mode! */ 358 /* */ 359 /* Do not #undef these macros here since the build system might define */ 360 /* them for certain configurations only. */ 361 /* */ 362/* #define FT_DEBUG_LEVEL_ERROR */ 363/* #define FT_DEBUG_LEVEL_TRACE */ 364 365 366 /*************************************************************************/ 367 /* */ 368 /* Memory Debugging */ 369 /* */ 370 /* FreeType now comes with an integrated memory debugger that is */ 371 /* capable of detecting simple errors like memory leaks or double */ 372 /* deletes. To compile it within your build of the library, you */ 373 /* should define FT_DEBUG_MEMORY here. */ 374 /* */ 375 /* Note that the memory debugger is only activated at runtime when */ 376 /* when the _environment_ variable `FT2_DEBUG_MEMORY' is defined also! */ 377 /* */ 378 /* Do not #undef this macro here since the build system might define */ 379 /* it for certain configurations only. */ 380 /* */ 381/* #define FT_DEBUG_MEMORY */ 382 383 384 /*************************************************************************/ 385 /* */ 386 /* Module errors */ 387 /* */ 388 /* If this macro is set (which is _not_ the default), the higher byte */ 389 /* of an error code gives the module in which the error has occurred, */ 390 /* while the lower byte is the real error code. */ 391 /* */ 392 /* Setting this macro makes sense for debugging purposes only, since */ 393 /* it would break source compatibility of certain programs that use */ 394 /* FreeType 2. */ 395 /* */ 396 /* More details can be found in the files ftmoderr.h and fterrors.h. */ 397 /* */ 398#undef FT_CONFIG_OPTION_USE_MODULE_ERRORS 399 400 401 /*************************************************************************/ 402 /* */ 403 /* Position Independent Code */ 404 /* */ 405 /* If this macro is set (which is _not_ the default), FreeType2 will */ 406 /* avoid creating constants that require address fixups. Instead the */ 407 /* constants will be moved into a struct and additional intialization */ 408 /* code will be used. */ 409 /* */ 410 /* Setting this macro is needed for systems that prohibit address */ 411 /* fixups, such as BREW. */ 412 /* */ 413/* #define FT_CONFIG_OPTION_PIC */ 414 415 416 /*************************************************************************/ 417 /*************************************************************************/ 418 /**** ****/ 419 /**** S F N T D R I V E R C O N F I G U R A T I O N ****/ 420 /**** ****/ 421 /*************************************************************************/ 422 /*************************************************************************/ 423 424 425 /*************************************************************************/ 426 /* */ 427 /* Define TT_CONFIG_OPTION_EMBEDDED_BITMAPS if you want to support */ 428 /* embedded bitmaps in all formats using the SFNT module (namely */ 429 /* TrueType & OpenType). */ 430 /* */ 431#define TT_CONFIG_OPTION_EMBEDDED_BITMAPS 432 433 434 /*************************************************************************/ 435 /* */ 436 /* Define TT_CONFIG_OPTION_POSTSCRIPT_NAMES if you want to be able to */ 437 /* load and enumerate the glyph Postscript names in a TrueType or */ 438 /* OpenType file. */ 439 /* */ 440 /* Note that when you do not compile the `PSNames' module by undefining */ 441 /* the above FT_CONFIG_OPTION_POSTSCRIPT_NAMES, the `sfnt' module will */ 442 /* contain additional code used to read the PS Names table from a font. */ 443 /* */ 444 /* (By default, the module uses `PSNames' to extract glyph names.) */ 445 /* */ 446#define TT_CONFIG_OPTION_POSTSCRIPT_NAMES 447 448 449 /*************************************************************************/ 450 /* */ 451 /* Define TT_CONFIG_OPTION_SFNT_NAMES if your applications need to */ 452 /* access the internal name table in a SFNT-based format like TrueType */ 453 /* or OpenType. The name table contains various strings used to */ 454 /* describe the font, like family name, copyright, version, etc. It */ 455 /* does not contain any glyph name though. */ 456 /* */ 457 /* Accessing SFNT names is done through the functions declared in */ 458 /* `freetype/ftsnames.h'. */ 459 /* */ 460#define TT_CONFIG_OPTION_SFNT_NAMES 461 462 463 /*************************************************************************/ 464 /* */ 465 /* TrueType CMap support */ 466 /* */ 467 /* Here you can fine-tune which TrueType CMap table format shall be */ 468 /* supported. */ 469#define TT_CONFIG_CMAP_FORMAT_0 470#define TT_CONFIG_CMAP_FORMAT_2 471#define TT_CONFIG_CMAP_FORMAT_4 472#define TT_CONFIG_CMAP_FORMAT_6 473#define TT_CONFIG_CMAP_FORMAT_8 474#define TT_CONFIG_CMAP_FORMAT_10 475#define TT_CONFIG_CMAP_FORMAT_12 476#define TT_CONFIG_CMAP_FORMAT_13 477#define TT_CONFIG_CMAP_FORMAT_14 478 479 480 /*************************************************************************/ 481 /*************************************************************************/ 482 /**** ****/ 483 /**** 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 ****/ 484 /**** ****/ 485 /*************************************************************************/ 486 /*************************************************************************/ 487 488 /*************************************************************************/ 489 /* */ 490 /* Define TT_CONFIG_OPTION_BYTECODE_INTERPRETER if you want to compile */ 491 /* a bytecode interpreter in the TrueType driver. */ 492 /* */ 493 /* By undefining this, you will only compile the code necessary to load */ 494 /* TrueType glyphs without hinting. */ 495 /* */ 496 /* Do not #undef this macro here, since the build system might */ 497 /* define it for certain configurations only. */ 498 /* */ 499/* #define TT_CONFIG_OPTION_BYTECODE_INTERPRETER */ 500 501 502 /*************************************************************************/ 503 /* */ 504 /* If you define TT_CONFIG_OPTION_UNPATENTED_HINTING, a special version */ 505 /* of the TrueType bytecode interpreter is used that doesn't implement */ 506 /* any of the patented opcodes and algorithms. The patents related to */ 507 /* TrueType hinting have expired worldwide since May 2010; this option */ 508 /* is now deprecated. */ 509 /* */ 510 /* Note that the TT_CONFIG_OPTION_UNPATENTED_HINTING macro is *ignored* */ 511 /* if you define TT_CONFIG_OPTION_BYTECODE_INTERPRETER; in other words, */ 512 /* either define TT_CONFIG_OPTION_BYTECODE_INTERPRETER or */ 513 /* TT_CONFIG_OPTION_UNPATENTED_HINTING but not both at the same time. */ 514 /* */ 515 /* This macro is only useful for a small number of font files (mostly */ 516 /* for Asian scripts) that require bytecode interpretation to properly */ 517 /* load glyphs. For all other fonts, this produces unpleasant results, */ 518 /* thus the unpatented interpreter is never used to load glyphs from */ 519 /* TrueType fonts unless one of the following two options is used. */ 520 /* */ 521 /* - The unpatented interpreter is explicitly activated by the user */ 522 /* through the FT_PARAM_TAG_UNPATENTED_HINTING parameter tag */ 523 /* when opening the FT_Face. */ 524 /* */ 525 /* - FreeType detects that the FT_Face corresponds to one of the */ 526 /* `trick' fonts (e.g., `Mingliu') it knows about. The font engine */ 527 /* contains a hard-coded list of font names and other matching */ 528 /* parameters (see function `tt_face_init' in file */ 529 /* `src/truetype/ttobjs.c'). */ 530 /* */ 531 /* Here a sample code snippet for using FT_PARAM_TAG_UNPATENTED_HINTING. */ 532 /* */ 533 /* { */ 534 /* FT_Parameter parameter; */ 535 /* FT_Open_Args open_args; */ 536 /* */ 537 /* */ 538 /* parameter.tag = FT_PARAM_TAG_UNPATENTED_HINTING; */ 539 /* */ 540 /* open_args.flags = FT_OPEN_PATHNAME | FT_OPEN_PARAMS; */ 541 /* open_args.pathname = my_font_pathname; */ 542 /* open_args.num_params = 1; */ 543 /* open_args.params = ¶meter; */ 544 /* */ 545 /* error = FT_Open_Face( library, &open_args, index, &face ); */ 546 /* ... */ 547 /* } */ 548 /* */ 549#define TT_CONFIG_OPTION_UNPATENTED_HINTING 550 551 552 /*************************************************************************/ 553 /* */ 554 /* Define TT_CONFIG_OPTION_INTERPRETER_SWITCH to compile the TrueType */ 555 /* bytecode interpreter with a huge switch statement, rather than a call */ 556 /* table. This results in smaller and faster code for a number of */ 557 /* architectures. */ 558 /* */ 559 /* Note however that on some compiler/processor combinations, undefining */ 560 /* this macro will generate faster, though larger, code. */ 561 /* */ 562#define TT_CONFIG_OPTION_INTERPRETER_SWITCH 563 564 565 /*************************************************************************/ 566 /* */ 567 /* Define TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED to compile the */ 568 /* TrueType glyph loader to use Apple's definition of how to handle */ 569 /* component offsets in composite glyphs. */ 570 /* */ 571 /* Apple and MS disagree on the default behavior of component offsets */ 572 /* in composites. Apple says that they should be scaled by the scaling */ 573 /* factors in the transformation matrix (roughly, it's more complex) */ 574 /* while MS says they should not. OpenType defines two bits in the */ 575 /* composite flags array which can be used to disambiguate, but old */ 576 /* fonts will not have them. */ 577 /* */ 578 /* http://partners.adobe.com/asn/developer/opentype/glyf.html */ 579 /* http://fonts.apple.com/TTRefMan/RM06/Chap6glyf.html */ 580 /* */ 581#undef TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED 582 583 584 /*************************************************************************/ 585 /* */ 586 /* Define TT_CONFIG_OPTION_GX_VAR_SUPPORT if you want to include */ 587 /* support for Apple's distortable font technology (fvar, gvar, cvar, */ 588 /* and avar tables). This has many similarities to Type 1 Multiple */ 589 /* Masters support. */ 590 /* */ 591#define TT_CONFIG_OPTION_GX_VAR_SUPPORT 592 593 594 /*************************************************************************/ 595 /* */ 596 /* Define TT_CONFIG_OPTION_BDF if you want to include support for */ 597 /* an embedded `BDF ' table within SFNT-based bitmap formats. */ 598 /* */ 599#define TT_CONFIG_OPTION_BDF 600 601 602 /*************************************************************************/ 603 /*************************************************************************/ 604 /**** ****/ 605 /**** T Y P E 1 D R I V E R C O N F I G U R A T I O N ****/ 606 /**** ****/ 607 /*************************************************************************/ 608 /*************************************************************************/ 609 610 611 /*************************************************************************/ 612 /* */ 613 /* T1_MAX_DICT_DEPTH is the maximal depth of nest dictionaries and */ 614 /* arrays in the Type 1 stream (see t1load.c). A minimum of 4 is */ 615 /* required. */ 616 /* */ 617#define T1_MAX_DICT_DEPTH 5 618 619 620 /*************************************************************************/ 621 /* */ 622 /* T1_MAX_SUBRS_CALLS details the maximum number of nested sub-routine */ 623 /* calls during glyph loading. */ 624 /* */ 625#define T1_MAX_SUBRS_CALLS 16 626 627 628 /*************************************************************************/ 629 /* */ 630 /* T1_MAX_CHARSTRING_OPERANDS is the charstring stack's capacity. A */ 631 /* minimum of 16 is required. */ 632 /* */ 633 /* The Chinese font MingTiEG-Medium (CNS 11643 character set) needs 256. */ 634 /* */ 635#define T1_MAX_CHARSTRINGS_OPERANDS 256 636 637 638 /*************************************************************************/ 639 /* */ 640 /* Define this configuration macro if you want to prevent the */ 641 /* compilation of `t1afm', which is in charge of reading Type 1 AFM */ 642 /* files into an existing face. Note that if set, the T1 driver will be */ 643 /* unable to produce kerning distances. */ 644 /* */ 645#undef T1_CONFIG_OPTION_NO_AFM 646 647 648 /*************************************************************************/ 649 /* */ 650 /* Define this configuration macro if you want to prevent the */ 651 /* compilation of the Multiple Masters font support in the Type 1 */ 652 /* driver. */ 653 /* */ 654#undef T1_CONFIG_OPTION_NO_MM_SUPPORT 655 656 657 /*************************************************************************/ 658 /*************************************************************************/ 659 /**** ****/ 660 /**** A U T O F I T M O D U L E C O N F I G U R A T I O N ****/ 661 /**** ****/ 662 /*************************************************************************/ 663 /*************************************************************************/ 664 665 666 /*************************************************************************/ 667 /* */ 668 /* Compile autofit module with CJK (Chinese, Japanese, Korean) script */ 669 /* support. */ 670 /* */ 671#define AF_CONFIG_OPTION_CJK 672 673 /*************************************************************************/ 674 /* */ 675 /* Compile autofit module with Indic script support. */ 676 /* */ 677#define AF_CONFIG_OPTION_INDIC 678 679 /* */ 680 681 682 /* 683 * Define this variable if you want to keep the layout of internal 684 * structures that was used prior to FreeType 2.2. This also compiles in 685 * a few obsolete functions to avoid linking problems on typical Unix 686 * distributions. 687 * 688 * For embedded systems or building a new distribution from scratch, it 689 * is recommended to disable the macro since it reduces the library's code 690 * size and activates a few memory-saving optimizations as well. 691 */ 692#define FT_CONFIG_OPTION_OLD_INTERNALS 693 694 695 /* 696 * To detect legacy cache-lookup call from a rogue client (<= 2.1.7), 697 * we restrict the number of charmaps in a font. The current API of 698 * FTC_CMapCache_Lookup() takes cmap_index & charcode, but old API 699 * takes charcode only. To determine the passed value is for cmap_index 700 * or charcode, the possible cmap_index is restricted not to exceed 701 * the minimum possible charcode by a rogue client. It is also very 702 * unlikely that a rogue client is interested in Unicode values 0 to 15. 703 * 704 * NOTE: The original threshold was 4 deduced from popular number of 705 * cmap subtables in UCS-4 TrueType fonts, but now it is not 706 * irregular for OpenType fonts to have more than 4 subtables, 707 * because variation selector subtables are available for Apple 708 * and Microsoft platforms. 709 */ 710 711#ifdef FT_CONFIG_OPTION_OLD_INTERNALS 712#define FT_MAX_CHARMAP_CACHEABLE 15 713#endif 714 715 716 /* 717 * This macro is defined if either unpatented or native TrueType 718 * hinting is requested by the definitions above. 719 */ 720#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER 721#define TT_USE_BYTECODE_INTERPRETER 722#undef TT_CONFIG_OPTION_UNPATENTED_HINTING 723#elif defined TT_CONFIG_OPTION_UNPATENTED_HINTING 724#define TT_USE_BYTECODE_INTERPRETER 725#endif 726 727FT_END_HEADER 728 729 730#endif /* __FTOPTION_H__ */ 731 732 733/* END */ 734