1 /***************************************************************************/ 2 /* */ 3 /* ftoption.h */ 4 /* */ 5 /* User-selectable configuration macros (specification only). */ 6 /* */ 7 /* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, */ 8 /* 2010 by */ 9 /* David Turner, Robert Wilhelm, and Werner Lemberg. */ 10 /* */ 11 /* This file is part of the FreeType project, and may only be used, */ 12 /* modified, and distributed under the terms of the FreeType project */ 13 /* license, LICENSE.TXT. By continuing to use, modify, or distribute */ 14 /* this file you indicate that you have read the license and */ 15 /* understand and accept it fully. */ 16 /* */ 17 /***************************************************************************/ 18 19 20 #ifndef __FTOPTION_H__ 21 #define __FTOPTION_H__ 22 23 24 #include <ft2build.h> 25 26 27 FT_BEGIN_HEADER 28 29 /*************************************************************************/ 30 /* */ 31 /* USER-SELECTABLE CONFIGURATION MACROS */ 32 /* */ 33 /* This file contains the default configuration macro definitions for */ 34 /* a standard build of the FreeType library. There are three ways to */ 35 /* use this file to build project-specific versions of the library: */ 36 /* */ 37 /* - You can modify this file by hand, but this is not recommended in */ 38 /* cases where you would like to build several versions of the */ 39 /* library from a single source directory. */ 40 /* */ 41 /* - You can put a copy of this file in your build directory, more */ 42 /* precisely in `$BUILD/freetype/config/ftoption.h', where `$BUILD' */ 43 /* is the name of a directory that is included _before_ the FreeType */ 44 /* include path during compilation. */ 45 /* */ 46 /* The default FreeType Makefiles and Jamfiles use the build */ 47 /* directory `builds/<system>' by default, but you can easily change */ 48 /* that for your own projects. */ 49 /* */ 50 /* - Copy the file <ft2build.h> to `$BUILD/ft2build.h' and modify it */ 51 /* slightly to pre-define the macro FT_CONFIG_OPTIONS_H used to */ 52 /* locate this file during the build. For example, */ 53 /* */ 54 /* #define FT_CONFIG_OPTIONS_H <myftoptions.h> */ 55 /* #include <freetype/config/ftheader.h> */ 56 /* */ 57 /* will use `$BUILD/myftoptions.h' instead of this file for macro */ 58 /* definitions. */ 59 /* */ 60 /* Note also that you can similarly pre-define the macro */ 61 /* FT_CONFIG_MODULES_H used to locate the file listing of the modules */ 62 /* that are statically linked to the library at compile time. By */ 63 /* default, this file is <freetype/config/ftmodule.h>. */ 64 /* */ 65 /* We highly recommend using the third method whenever possible. */ 66 /* */ 67 /*************************************************************************/ 68 69 70 /*************************************************************************/ 71 /*************************************************************************/ 72 /**** ****/ 73 /**** 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 ****/ 74 /**** ****/ 75 /*************************************************************************/ 76 /*************************************************************************/ 77 78 79 /*************************************************************************/ 80 /* */ 81 /* Uncomment the line below if you want to activate sub-pixel rendering */ 82 /* (a.k.a. LCD rendering, or ClearType) in this build of the library. */ 83 /* */ 84 /* Note that this feature is covered by several Microsoft patents */ 85 /* and should not be activated in any default build of the library. */ 86 /* */ 87 /* This macro has no impact on the FreeType API, only on its */ 88 /* _implementation_. For example, using FT_RENDER_MODE_LCD when calling */ 89 /* FT_Render_Glyph still generates a bitmap that is 3 times wider than */ 90 /* the original size in case this macro isn't defined; however, each */ 91 /* triplet of subpixels has R=G=B. */ 92 /* */ 93 /* This is done to allow FreeType clients to run unmodified, forcing */ 94 /* them to display normal gray-level anti-aliased glyphs. */ 95 /* */ 96 /* #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING */ 97 98 99 /*************************************************************************/ 100 /* */ 101 /* Many compilers provide a non-ANSI 64-bit data type that can be used */ 102 /* by FreeType to speed up some computations. However, this will create */ 103 /* some problems when compiling the library in strict ANSI mode. */ 104 /* */ 105 /* For this reason, the use of 64-bit integers is normally disabled when */ 106 /* the __STDC__ macro is defined. You can however disable this by */ 107 /* defining the macro FT_CONFIG_OPTION_FORCE_INT64 here. */ 108 /* */ 109 /* For most compilers, this will only create compilation warnings when */ 110 /* building the library. */ 111 /* */ 112 /* ObNote: The compiler-specific 64-bit integers are detected in the */ 113 /* file `ftconfig.h' either statically or through the */ 114 /* `configure' script on supported platforms. */ 115 /* */ 116 #undef FT_CONFIG_OPTION_FORCE_INT64 117 118 119 /*************************************************************************/ 120 /* */ 121 /* If this macro is defined, do not try to use an assembler version of */ 122 /* performance-critical functions (e.g. FT_MulFix). You should only do */ 123 /* that to verify that the assembler function works properly, or to */ 124 /* execute benchmark tests of the various implementations. */ 125 /* #define FT_CONFIG_OPTION_NO_ASSEMBLER */ 126 127 128 /*************************************************************************/ 129 /* */ 130 /* If this macro is defined, try to use an inlined assembler version of */ 131 /* the `FT_MulFix' function, which is a `hotspot' when loading and */ 132 /* hinting glyphs, and which should be executed as fast as possible. */ 133 /* */ 134 /* Note that if your compiler or CPU is not supported, this will default */ 135 /* to the standard and portable implementation found in `ftcalc.c'. */ 136 /* */ 137 #define FT_CONFIG_OPTION_INLINE_MULFIX 138 139 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 727 FT_END_HEADER 728 729 730 #endif /* __FTOPTION_H__ */ 731 732 733 /* END */ 734