|
|
|
@ -38,16 +38,16 @@ FT_BEGIN_HEADER |
|
|
|
|
* from a single source directory. |
|
|
|
|
* |
|
|
|
|
* - You can put a copy of this file in your build directory, more |
|
|
|
|
* precisely in '$BUILD/freetype/config/ftoption.h', where '$BUILD' is |
|
|
|
|
* precisely in `$BUILD/freetype/config/ftoption.h`, where `$BUILD` is |
|
|
|
|
* the name of a directory that is included _before_ the FreeType include |
|
|
|
|
* path during compilation. |
|
|
|
|
* |
|
|
|
|
* The default FreeType Makefiles and Jamfiles use the build directory |
|
|
|
|
* 'builds/<system>' by default, but you can easily change that for your |
|
|
|
|
* `builds/<system>` by default, but you can easily change that for your |
|
|
|
|
* own projects. |
|
|
|
|
* |
|
|
|
|
* - Copy the file <ft2build.h> to '$BUILD/ft2build.h' and modify it |
|
|
|
|
* slightly to pre-define the macro FT_CONFIG_OPTIONS_H used to locate |
|
|
|
|
* - Copy the file <ft2build.h> to `$BUILD/ft2build.h` and modify it |
|
|
|
|
* slightly to pre-define the macro `FT_CONFIG_OPTIONS_H` used to locate |
|
|
|
|
* this file during the build. For example, |
|
|
|
|
* |
|
|
|
|
* ``` |
|
|
|
@ -55,13 +55,13 @@ FT_BEGIN_HEADER |
|
|
|
|
* #include <freetype/config/ftheader.h> |
|
|
|
|
* ``` |
|
|
|
|
* |
|
|
|
|
* will use '$BUILD/myftoptions.h' instead of this file for macro |
|
|
|
|
* will use `$BUILD/myftoptions.h` instead of this file for macro |
|
|
|
|
* definitions. |
|
|
|
|
* |
|
|
|
|
* Note also that you can similarly pre-define the macro |
|
|
|
|
* FT_CONFIG_MODULES_H used to locate the file listing of the modules |
|
|
|
|
* `FT_CONFIG_MODULES_H` used to locate the file listing of the modules |
|
|
|
|
* that are statically linked to the library at compile time. By |
|
|
|
|
* default, this file is <freetype/config/ftmodule.h>. |
|
|
|
|
* default, this file is `<freetype/config/ftmodule.h>`. |
|
|
|
|
* |
|
|
|
|
* We highly recommend using the third method whenever possible. |
|
|
|
|
* |
|
|
|
@ -80,18 +80,18 @@ FT_BEGIN_HEADER |
|
|
|
|
/*#************************************************************************
|
|
|
|
|
* |
|
|
|
|
* If you enable this configuration option, FreeType recognizes an |
|
|
|
|
* environment variable called `FREETYPE_PROPERTIES', which can be used to |
|
|
|
|
* environment variable called `FREETYPE_PROPERTIES`, which can be used to |
|
|
|
|
* control the various font drivers and modules. The controllable |
|
|
|
|
* properties are listed in the section @properties. |
|
|
|
|
* |
|
|
|
|
* You have to undefine this configuration option on platforms that lack |
|
|
|
|
* the concept of environment variables (and thus don't have the `getenv' |
|
|
|
|
* the concept of environment variables (and thus don't have the `getenv` |
|
|
|
|
* function), for example Windows CE. |
|
|
|
|
* |
|
|
|
|
* `FREETYPE_PROPERTIES' has the following syntax form (broken here into |
|
|
|
|
* `FREETYPE_PROPERTIES` has the following syntax form (broken here into |
|
|
|
|
* multiple lines for better readability). |
|
|
|
|
* |
|
|
|
|
* { |
|
|
|
|
* ``` |
|
|
|
|
* <optional whitespace> |
|
|
|
|
* <module-name1> ':' |
|
|
|
|
* <property-name1> '=' <property-value1> |
|
|
|
@ -99,15 +99,15 @@ FT_BEGIN_HEADER |
|
|
|
|
* <module-name2> ':' |
|
|
|
|
* <property-name2> '=' <property-value2> |
|
|
|
|
* ... |
|
|
|
|
* } |
|
|
|
|
* ``` |
|
|
|
|
* |
|
|
|
|
* Example: |
|
|
|
|
* |
|
|
|
|
* { |
|
|
|
|
* ``` |
|
|
|
|
* FREETYPE_PROPERTIES=truetype:interpreter-version=35 \
|
|
|
|
|
* cff:no-stem-darkening=1 \
|
|
|
|
|
* autofitter:warping=1 |
|
|
|
|
* } |
|
|
|
|
* ``` |
|
|
|
|
* |
|
|
|
|
*/ |
|
|
|
|
#define FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES |
|
|
|
@ -136,14 +136,14 @@ FT_BEGIN_HEADER |
|
|
|
|
* problems when compiling the library in strict ANSI mode. |
|
|
|
|
* |
|
|
|
|
* For this reason, the use of 64-bit integers is normally disabled when |
|
|
|
|
* the __STDC__ macro is defined. You can however disable this by defining |
|
|
|
|
* the macro FT_CONFIG_OPTION_FORCE_INT64 here. |
|
|
|
|
* the `__STDC__` macro is defined. You can however disable this by |
|
|
|
|
* defining the macro `FT_CONFIG_OPTION_FORCE_INT64` here. |
|
|
|
|
* |
|
|
|
|
* For most compilers, this will only create compilation warnings when |
|
|
|
|
* building the library. |
|
|
|
|
* |
|
|
|
|
* ObNote: The compiler-specific 64-bit integers are detected in the |
|
|
|
|
* file `ftconfig.h` either statically or through the 'configure' |
|
|
|
|
* file `ftconfig.h` either statically or through the `configure` |
|
|
|
|
* script on supported platforms. |
|
|
|
|
*/ |
|
|
|
|
#undef FT_CONFIG_OPTION_FORCE_INT64 |
|
|
|
@ -152,7 +152,7 @@ FT_BEGIN_HEADER |
|
|
|
|
/**************************************************************************
|
|
|
|
|
* |
|
|
|
|
* If this macro is defined, do not try to use an assembler version of |
|
|
|
|
* performance-critical functions (e.g. FT_MulFix). You should only do |
|
|
|
|
* performance-critical functions (e.g., @FT_MulFix). You should only do |
|
|
|
|
* that to verify that the assembler function works properly, or to execute |
|
|
|
|
* benchmark tests of the various implementations. |
|
|
|
|
*/ |
|
|
|
@ -162,7 +162,7 @@ FT_BEGIN_HEADER |
|
|
|
|
/**************************************************************************
|
|
|
|
|
* |
|
|
|
|
* If this macro is defined, try to use an inlined assembler version of the |
|
|
|
|
* `FT_MulFix` function, which is a 'hotspot' when loading and hinting |
|
|
|
|
* @FT_MulFix function, which is a 'hotspot' when loading and hinting |
|
|
|
|
* glyphs, and which should be executed as fast as possible. |
|
|
|
|
* |
|
|
|
|
* Note that if your compiler or CPU is not supported, this will default to |
|
|
|
@ -176,10 +176,10 @@ FT_BEGIN_HEADER |
|
|
|
|
* LZW-compressed file support. |
|
|
|
|
* |
|
|
|
|
* FreeType now handles font files that have been compressed with the |
|
|
|
|
* 'compress' program. This is mostly used to parse many of the PCF |
|
|
|
|
* `compress` program. This is mostly used to parse many of the PCF |
|
|
|
|
* files that come with various X11 distributions. The implementation |
|
|
|
|
* uses NetBSD's 'zopen' to partially uncompress the file on the fly (see |
|
|
|
|
* src/lzw/ftgzip.c). |
|
|
|
|
* uses NetBSD's `zopen` to partially uncompress the file on the fly (see |
|
|
|
|
* `src/lzw/ftgzip.c`). |
|
|
|
|
* |
|
|
|
|
* Define this macro if you want to enable this 'feature'. |
|
|
|
|
*/ |
|
|
|
@ -191,12 +191,12 @@ FT_BEGIN_HEADER |
|
|
|
|
* Gzip-compressed file support. |
|
|
|
|
* |
|
|
|
|
* FreeType now handles font files that have been compressed with the |
|
|
|
|
* 'gzip' program. This is mostly used to parse many of the PCF files |
|
|
|
|
* `gzip` program. This is mostly used to parse many of the PCF files |
|
|
|
|
* that come with XFree86. The implementation uses 'zlib' to partially |
|
|
|
|
* uncompress the file on the fly (see src/gzip/ftgzip.c). |
|
|
|
|
* uncompress the file on the fly (see `src/gzip/ftgzip.c`). |
|
|
|
|
* |
|
|
|
|
* Define this macro if you want to enable this 'feature'. See also the |
|
|
|
|
* macro FT_CONFIG_OPTION_SYSTEM_ZLIB below. |
|
|
|
|
* macro `FT_CONFIG_OPTION_SYSTEM_ZLIB` below. |
|
|
|
|
*/ |
|
|
|
|
#define FT_CONFIG_OPTION_USE_ZLIB |
|
|
|
|
|
|
|
|
@ -205,10 +205,10 @@ FT_BEGIN_HEADER |
|
|
|
|
* |
|
|
|
|
* ZLib library selection |
|
|
|
|
* |
|
|
|
|
* This macro is only used when FT_CONFIG_OPTION_USE_ZLIB is defined. It |
|
|
|
|
* allows FreeType's 'ftgzip' component to link to the system's |
|
|
|
|
* installation of the ZLib library. This is useful on systems like Unix |
|
|
|
|
* or VMS where it generally is already available. |
|
|
|
|
* This macro is only used when `FT_CONFIG_OPTION_USE_ZLIB` is defined. |
|
|
|
|
* It allows FreeType's 'ftgzip' component to link to the system's |
|
|
|
|
* installation of the ZLib library. This is useful on systems like |
|
|
|
|
* Unix or VMS where it generally is already available. |
|
|
|
|
* |
|
|
|
|
* If you let it undefined, the component will use its own copy of the |
|
|
|
|
* zlib sources instead. These have been modified to be included |
|
|
|
@ -216,10 +216,10 @@ FT_BEGIN_HEADER |
|
|
|
|
* names. This allows you to link any program with FreeType _and_ ZLib |
|
|
|
|
* without linking conflicts. |
|
|
|
|
* |
|
|
|
|
* Do not #undef this macro here since the build system might define it |
|
|
|
|
* for certain configurations only. |
|
|
|
|
* Do not `#undef` this macro here since the build system might define |
|
|
|
|
* it for certain configurations only. |
|
|
|
|
* |
|
|
|
|
* If you use a build system like cmake or the 'configure' script, |
|
|
|
|
* If you use a build system like cmake or the `configure` script, |
|
|
|
|
* options set by those programs have precedence, overwriting the value |
|
|
|
|
* here with the configured one. |
|
|
|
|
*/ |
|
|
|
@ -231,15 +231,15 @@ FT_BEGIN_HEADER |
|
|
|
|
* Bzip2-compressed file support. |
|
|
|
|
* |
|
|
|
|
* FreeType now handles font files that have been compressed with the |
|
|
|
|
* 'bzip2' program. This is mostly used to parse many of the PCF files |
|
|
|
|
* that come with XFree86. The implementation uses 'libbz2' to partially |
|
|
|
|
* uncompress the file on the fly (see src/bzip2/ftbzip2.c). Contrary to |
|
|
|
|
* gzip, bzip2 currently is not included and need to use the system |
|
|
|
|
* `bzip2` program. This is mostly used to parse many of the PCF files |
|
|
|
|
* that come with XFree86. The implementation uses `libbz2` to partially |
|
|
|
|
* uncompress the file on the fly (see `src/bzip2/ftbzip2.c`). Contrary |
|
|
|
|
* to gzip, bzip2 currently is not included and need to use the system |
|
|
|
|
* available bzip2 implementation. |
|
|
|
|
* |
|
|
|
|
* Define this macro if you want to enable this 'feature'. |
|
|
|
|
* |
|
|
|
|
* If you use a build system like cmake or the 'configure' script, |
|
|
|
|
* If you use a build system like cmake or the `configure` script, |
|
|
|
|
* options set by those programs have precedence, overwriting the value |
|
|
|
|
* here with the configured one. |
|
|
|
|
*/ |
|
|
|
@ -248,8 +248,8 @@ FT_BEGIN_HEADER |
|
|
|
|
|
|
|
|
|
/**************************************************************************
|
|
|
|
|
* |
|
|
|
|
* Define to disable the use of file stream functions and types, FILE, |
|
|
|
|
* fopen() etc. Enables the use of smaller system libraries on embedded |
|
|
|
|
* Define to disable the use of file stream functions and types, `FILE`, |
|
|
|
|
* `fopen`, etc. Enables the use of smaller system libraries on embedded |
|
|
|
|
* systems that have multiple system libraries, some with or without file |
|
|
|
|
* stream support, in the cases where file stream support is not necessary |
|
|
|
|
* such as memory loading of font files. |
|
|
|
@ -268,7 +268,7 @@ FT_BEGIN_HEADER |
|
|
|
|
* |
|
|
|
|
* Define this macro if you want to enable this 'feature'. |
|
|
|
|
* |
|
|
|
|
* If you use a build system like cmake or the 'configure' script, |
|
|
|
|
* If you use a build system like cmake or the `configure` script, |
|
|
|
|
* options set by those programs have precedence, overwriting the value |
|
|
|
|
* here with the configured one. |
|
|
|
|
*/ |
|
|
|
@ -285,7 +285,7 @@ FT_BEGIN_HEADER |
|
|
|
|
* |
|
|
|
|
* Define this macro if you want to enable this 'feature'. |
|
|
|
|
* |
|
|
|
|
* If you use a build system like cmake or the 'configure' script, |
|
|
|
|
* If you use a build system like cmake or the `configure` script, |
|
|
|
|
* options set by those programs have precedence, overwriting the value |
|
|
|
|
* here with the configured one. |
|
|
|
|
*/ |
|
|
|
@ -299,20 +299,20 @@ FT_BEGIN_HEADER |
|
|
|
|
* By default, FreeType 2 is compiled with the 'psnames' module. This |
|
|
|
|
* module is in charge of converting a glyph name string into a Unicode |
|
|
|
|
* value, or return a Macintosh standard glyph name for the use with the |
|
|
|
|
* TrueType 'post' table. |
|
|
|
|
* TrueType `post` table. |
|
|
|
|
* |
|
|
|
|
* Undefine this macro if you do not want 'psnames' compiled in your |
|
|
|
|
* build of FreeType. This has the following effects: |
|
|
|
|
* |
|
|
|
|
* - The TrueType driver will provide its own set of glyph names, |
|
|
|
|
* if you build it to support postscript names in the TrueType 'post' |
|
|
|
|
* table, but will not synthesize a missing Unicode charmap. |
|
|
|
|
* - The TrueType driver will provide its own set of glyph names, if you |
|
|
|
|
* build it to support postscript names in the TrueType `post` table, |
|
|
|
|
* but will not synthesize a missing Unicode charmap. |
|
|
|
|
* |
|
|
|
|
* - The Type 1 driver will not be able to synthesize a Unicode |
|
|
|
|
* charmap out of the glyphs found in the fonts. |
|
|
|
|
* - The Type~1 driver will not be able to synthesize a Unicode charmap |
|
|
|
|
* out of the glyphs found in the fonts. |
|
|
|
|
* |
|
|
|
|
* You would normally undefine this configuration macro when building a |
|
|
|
|
* version of FreeType that doesn't contain a Type 1 or CFF driver. |
|
|
|
|
* version of FreeType that doesn't contain a Type~1 or CFF driver. |
|
|
|
|
*/ |
|
|
|
|
#define FT_CONFIG_OPTION_POSTSCRIPT_NAMES |
|
|
|
|
|
|
|
|
@ -321,14 +321,14 @@ FT_BEGIN_HEADER |
|
|
|
|
* |
|
|
|
|
* Postscript Names to Unicode Values support |
|
|
|
|
* |
|
|
|
|
* By default, FreeType 2 is built with the 'psnames' module compiled in. |
|
|
|
|
* By default, FreeType~2 is built with the 'psnames' module compiled in. |
|
|
|
|
* Among other things, the module is used to convert a glyph name into a |
|
|
|
|
* Unicode value. This is especially useful in order to synthesize on |
|
|
|
|
* the fly a Unicode charmap from the CFF/Type 1 driver through a big |
|
|
|
|
* the fly a Unicode charmap from the CFF/Type~1 driver through a big |
|
|
|
|
* table named the 'Adobe Glyph List' (AGL). |
|
|
|
|
* |
|
|
|
|
* Undefine this macro if you do not want the Adobe Glyph List compiled |
|
|
|
|
* in your 'psnames' module. The Type 1 driver will not be able to |
|
|
|
|
* in your 'psnames' module. The Type~1 driver will not be able to |
|
|
|
|
* synthesize a Unicode charmap out of the glyphs found in the fonts. |
|
|
|
|
*/ |
|
|
|
|
#define FT_CONFIG_OPTION_ADOBE_GLYPH_LIST |
|
|
|
@ -342,7 +342,7 @@ FT_BEGIN_HEADER |
|
|
|
|
* (mac dfont, mac resource, macbinary containing a mac resource) on |
|
|
|
|
* non-Mac platforms. |
|
|
|
|
* |
|
|
|
|
* Note that the 'FOND' resource isn't checked. |
|
|
|
|
* Note that the `FOND` resource isn't checked. |
|
|
|
|
*/ |
|
|
|
|
#define FT_CONFIG_OPTION_MAC_FONTS |
|
|
|
|
|
|
|
|
@ -361,7 +361,7 @@ FT_BEGIN_HEADER |
|
|
|
|
* to guess whether such offsets or different file names must be used. |
|
|
|
|
* |
|
|
|
|
* Note that normal, direct access of resource forks is controlled via |
|
|
|
|
* the FT_CONFIG_OPTION_MAC_FONTS option. |
|
|
|
|
* the `FT_CONFIG_OPTION_MAC_FONTS` option. |
|
|
|
|
*/ |
|
|
|
|
#ifdef FT_CONFIG_OPTION_MAC_FONTS |
|
|
|
|
#define FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK |
|
|
|
@ -370,9 +370,9 @@ FT_BEGIN_HEADER |
|
|
|
|
|
|
|
|
|
/**************************************************************************
|
|
|
|
|
* |
|
|
|
|
* Allow the use of FT_Incremental_Interface to load typefaces that contain |
|
|
|
|
* no glyph data, but supply it via a callback function. This is required |
|
|
|
|
* by clients supporting document formats which supply font data |
|
|
|
|
* Allow the use of `FT_Incremental_Interface` to load typefaces that |
|
|
|
|
* contain no glyph data, but supply it via a callback function. This is |
|
|
|
|
* required by clients supporting document formats which supply font data |
|
|
|
|
* incrementally as the document is parsed, such as the Ghostscript |
|
|
|
|
* interpreter for the PostScript language. |
|
|
|
|
*/ |
|
|
|
@ -392,7 +392,7 @@ FT_BEGIN_HEADER |
|
|
|
|
* FT_MAX_MODULES |
|
|
|
|
* |
|
|
|
|
* The maximum number of modules that can be registered in a single |
|
|
|
|
* FreeType library object. 32 is the default. |
|
|
|
|
* FreeType library object. 32~is the default. |
|
|
|
|
*/ |
|
|
|
|
#define FT_MAX_MODULES 32 |
|
|
|
|
|
|
|
|
@ -405,12 +405,12 @@ FT_BEGIN_HEADER |
|
|
|
|
* errors are reported through the 'ftdebug' component. In trace mode, |
|
|
|
|
* additional messages are sent to the standard output during execution. |
|
|
|
|
* |
|
|
|
|
* Define FT_DEBUG_LEVEL_ERROR to build the library in debug mode. |
|
|
|
|
* Define FT_DEBUG_LEVEL_TRACE to build it in trace mode. |
|
|
|
|
* Define `FT_DEBUG_LEVEL_ERROR` to build the library in debug mode. |
|
|
|
|
* Define `FT_DEBUG_LEVEL_TRACE` to build it in trace mode. |
|
|
|
|
* |
|
|
|
|
* Don't define any of these macros to compile in 'release' mode! |
|
|
|
|
* |
|
|
|
|
* Do not #undef these macros here since the build system might define |
|
|
|
|
* Do not `#undef` these macros here since the build system might define |
|
|
|
|
* them for certain configurations only. |
|
|
|
|
*/ |
|
|
|
|
/* #define FT_DEBUG_LEVEL_ERROR */ |
|
|
|
@ -421,7 +421,7 @@ FT_BEGIN_HEADER |
|
|
|
|
* |
|
|
|
|
* Autofitter debugging |
|
|
|
|
* |
|
|
|
|
* If FT_DEBUG_AUTOFIT is defined, FreeType provides some means to |
|
|
|
|
* If `FT_DEBUG_AUTOFIT` is defined, FreeType provides some means to |
|
|
|
|
* control the autofitter behaviour for debugging purposes with global |
|
|
|
|
* boolean variables (consequently, you should **never** enable this |
|
|
|
|
* while compiling in 'release' mode): |
|
|
|
@ -433,7 +433,7 @@ FT_BEGIN_HEADER |
|
|
|
|
* ``` |
|
|
|
|
* |
|
|
|
|
* Additionally, the following functions provide dumps of various |
|
|
|
|
* internal autofit structures to stdout (using 'printf'): |
|
|
|
|
* internal autofit structures to stdout (using `printf`): |
|
|
|
|
* |
|
|
|
|
* ``` |
|
|
|
|
* af_glyph_hints_dump_points |
|
|
|
@ -449,10 +449,10 @@ FT_BEGIN_HEADER |
|
|
|
|
* _af_debug_hints |
|
|
|
|
* ``` |
|
|
|
|
* |
|
|
|
|
* Please have a look at the 'ftgrid' demo program to see how those |
|
|
|
|
* Please have a look at the `ftgrid` demo program to see how those |
|
|
|
|
* variables and macros should be used. |
|
|
|
|
* |
|
|
|
|
* Do not #undef these macros here since the build system might define |
|
|
|
|
* Do not `#undef` these macros here since the build system might define |
|
|
|
|
* them for certain configurations only. |
|
|
|
|
*/ |
|
|
|
|
/* #define FT_DEBUG_AUTOFIT */ |
|
|
|
@ -465,12 +465,12 @@ FT_BEGIN_HEADER |
|
|
|
|
* FreeType now comes with an integrated memory debugger that is capable |
|
|
|
|
* of detecting simple errors like memory leaks or double deletes. To |
|
|
|
|
* compile it within your build of the library, you should define |
|
|
|
|
* FT_DEBUG_MEMORY here. |
|
|
|
|
* `FT_DEBUG_MEMORY` here. |
|
|
|
|
* |
|
|
|
|
* Note that the memory debugger is only activated at runtime when when |
|
|
|
|
* the _environment_ variable `FT2_DEBUG_MEMORY` is defined also! |
|
|
|
|
* |
|
|
|
|
* Do not #undef this macro here since the build system might define it |
|
|
|
|
* Do not `#undef` this macro here since the build system might define it |
|
|
|
|
* for certain configurations only. |
|
|
|
|
*/ |
|
|
|
|
/* #define FT_DEBUG_MEMORY */ |
|
|
|
@ -485,10 +485,10 @@ FT_BEGIN_HEADER |
|
|
|
|
* the lower byte is the real error code. |
|
|
|
|
* |
|
|
|
|
* Setting this macro makes sense for debugging purposes only, since it |
|
|
|
|
* would break source compatibility of certain programs that use FreeType |
|
|
|
|
* 2. |
|
|
|
|
* would break source compatibility of certain programs that use |
|
|
|
|
* FreeType~2. |
|
|
|
|
* |
|
|
|
|
* More details can be found in the files ftmoderr.h and fterrors.h. |
|
|
|
|
* More details can be found in the files `ftmoderr.h` and `fterrors.h`. |
|
|
|
|
*/ |
|
|
|
|
#undef FT_CONFIG_OPTION_USE_MODULE_ERRORS |
|
|
|
|
|
|
|
|
@ -497,11 +497,11 @@ FT_BEGIN_HEADER |
|
|
|
|
* |
|
|
|
|
* Error Strings |
|
|
|
|
* |
|
|
|
|
* If this macro is set, `FT_Error_String' will return meaningful |
|
|
|
|
* If this macro is set, `FT_Error_String` will return meaningful |
|
|
|
|
* descriptions. This is not enabled by default to reduce the overall |
|
|
|
|
* size of FreeType. |
|
|
|
|
* |
|
|
|
|
* More details can be found in the file fterrors.h. |
|
|
|
|
* More details can be found in the file `fterrors.h`. |
|
|
|
|
*/ |
|
|
|
|
/* #define FT_CONFIG_OPTION_ERROR_STRINGS */ |
|
|
|
|
|
|
|
|
@ -517,30 +517,31 @@ FT_BEGIN_HEADER |
|
|
|
|
|
|
|
|
|
/**************************************************************************
|
|
|
|
|
* |
|
|
|
|
* Define TT_CONFIG_OPTION_EMBEDDED_BITMAPS if you want to support embedded |
|
|
|
|
* bitmaps in all formats using the SFNT module (namely TrueType & |
|
|
|
|
* OpenType). |
|
|
|
|
* Define `TT_CONFIG_OPTION_EMBEDDED_BITMAPS` if you want to support |
|
|
|
|
* embedded bitmaps in all formats using the 'sfnt' module (namely |
|
|
|
|
* TrueType~& OpenType). |
|
|
|
|
*/ |
|
|
|
|
#define TT_CONFIG_OPTION_EMBEDDED_BITMAPS |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**************************************************************************
|
|
|
|
|
* |
|
|
|
|
* Define TT_CONFIG_OPTION_COLOR_LAYERS if you want to support coloured |
|
|
|
|
* outlines (from the COLR/CPAL tables) in all formats using the SFNT |
|
|
|
|
* module (namely TrueType & OpenType). |
|
|
|
|
* Define `TT_CONFIG_OPTION_COLOR_LAYERS` if you want to support coloured |
|
|
|
|
* outlines (from the `COLR`/`CPAL` tables) in all formats using the 'sfnt' |
|
|
|
|
* module (namely TrueType~& OpenType). |
|
|
|
|
*/ |
|
|
|
|
#define TT_CONFIG_OPTION_COLOR_LAYERS |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**************************************************************************
|
|
|
|
|
* |
|
|
|
|
* Define TT_CONFIG_OPTION_POSTSCRIPT_NAMES if you want to be able to load |
|
|
|
|
* and enumerate the glyph Postscript names in a TrueType or OpenType file. |
|
|
|
|
* Define `TT_CONFIG_OPTION_POSTSCRIPT_NAMES` if you want to be able to |
|
|
|
|
* load and enumerate the glyph Postscript names in a TrueType or OpenType |
|
|
|
|
* file. |
|
|
|
|
* |
|
|
|
|
* Note that when you do not compile the 'psnames' module by undefining the |
|
|
|
|
* above FT_CONFIG_OPTION_POSTSCRIPT_NAMES, the 'sfnt' module will contain |
|
|
|
|
* additional code used to read the PS Names table from a font. |
|
|
|
|
* above `FT_CONFIG_OPTION_POSTSCRIPT_NAMES`, the 'sfnt' module will |
|
|
|
|
* contain additional code used to read the PS Names table from a font. |
|
|
|
|
* |
|
|
|
|
* (By default, the module uses 'psnames' to extract glyph names.) |
|
|
|
|
*/ |
|
|
|
@ -549,7 +550,7 @@ FT_BEGIN_HEADER |
|
|
|
|
|
|
|
|
|
/**************************************************************************
|
|
|
|
|
* |
|
|
|
|
* Define TT_CONFIG_OPTION_SFNT_NAMES if your applications need to access |
|
|
|
|
* Define `TT_CONFIG_OPTION_SFNT_NAMES` if your applications need to access |
|
|
|
|
* the internal name table in a SFNT-based format like TrueType or |
|
|
|
|
* OpenType. The name table contains various strings used to describe the |
|
|
|
|
* font, like family name, copyright, version, etc. It does not contain |
|
|
|
@ -589,23 +590,24 @@ FT_BEGIN_HEADER |
|
|
|
|
|
|
|
|
|
/**************************************************************************
|
|
|
|
|
* |
|
|
|
|
* Define TT_CONFIG_OPTION_BYTECODE_INTERPRETER if you want to compile a |
|
|
|
|
* Define `TT_CONFIG_OPTION_BYTECODE_INTERPRETER` if you want to compile a |
|
|
|
|
* bytecode interpreter in the TrueType driver. |
|
|
|
|
* |
|
|
|
|
* By undefining this, you will only compile the code necessary to load |
|
|
|
|
* TrueType glyphs without hinting. |
|
|
|
|
* |
|
|
|
|
* Do not #undef this macro here, since the build system might define it |
|
|
|
|
* for certain configurations only. |
|
|
|
|
* Do not `#undef` this macro here, since the build system might define it |
|
|
|
|
* for certain configurations only. |
|
|
|
|
*/ |
|
|
|
|
#define TT_CONFIG_OPTION_BYTECODE_INTERPRETER |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**************************************************************************
|
|
|
|
|
* |
|
|
|
|
* Define TT_CONFIG_OPTION_SUBPIXEL_HINTING if you want to compile subpixel |
|
|
|
|
* hinting support into the TrueType driver. This modifies the TrueType |
|
|
|
|
* hinting mechanism when anything but FT_RENDER_MODE_MONO is requested. |
|
|
|
|
* Define `TT_CONFIG_OPTION_SUBPIXEL_HINTING` if you want to compile |
|
|
|
|
* subpixel hinting support into the TrueType driver. This modifies the |
|
|
|
|
* TrueType hinting mechanism when anything but `FT_RENDER_MODE_MONO` is |
|
|
|
|
* requested. |
|
|
|
|
* |
|
|
|
|
* In particular, it modifies the bytecode interpreter to interpret (or |
|
|
|
|
* not) instructions in a certain way so that all TrueType fonts look like |
|
|
|
@ -630,8 +632,8 @@ FT_BEGIN_HEADER |
|
|
|
|
* The new default mode for the TrueType driver. The Infinality code |
|
|
|
|
* base was stripped to the bare minimum and all configurability removed |
|
|
|
|
* in the name of speed and simplicity. The configurability was mainly |
|
|
|
|
* aimed at legacy fonts like Arial, Times New Roman, or Courier. Legacy |
|
|
|
|
* fonts are fonts that modify vertical stems to achieve clean |
|
|
|
|
* aimed at legacy fonts like 'Arial', 'Times New Roman', or 'Courier'. |
|
|
|
|
* Legacy fonts are fonts that modify vertical stems to achieve clean |
|
|
|
|
* black-and-white bitmaps. The new mode focuses on applying a minimal |
|
|
|
|
* set of rules to all fonts indiscriminately so that modern and web |
|
|
|
|
* fonts render well while legacy fonts render okay. |
|
|
|
@ -649,7 +651,7 @@ FT_BEGIN_HEADER |
|
|
|
|
* define one or both subpixel hinting options, you can switch between |
|
|
|
|
* between v35 and the ones you define (using `FT_Property_Set`). |
|
|
|
|
* |
|
|
|
|
* This option requires TT_CONFIG_OPTION_BYTECODE_INTERPRETER to be |
|
|
|
|
* This option requires `TT_CONFIG_OPTION_BYTECODE_INTERPRETER` to be |
|
|
|
|
* defined. |
|
|
|
|
* |
|
|
|
|
* [1] |
|
|
|
@ -662,9 +664,9 @@ FT_BEGIN_HEADER |
|
|
|
|
|
|
|
|
|
/**************************************************************************
|
|
|
|
|
* |
|
|
|
|
* Define TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED to compile the TrueType |
|
|
|
|
* glyph loader to use Apple's definition of how to handle component |
|
|
|
|
* offsets in composite glyphs. |
|
|
|
|
* Define `TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED` to compile the |
|
|
|
|
* TrueType glyph loader to use Apple's definition of how to handle |
|
|
|
|
* component offsets in composite glyphs. |
|
|
|
|
* |
|
|
|
|
* Apple and MS disagree on the default behavior of component offsets in |
|
|
|
|
* composites. Apple says that they should be scaled by the scaling |
|
|
|
@ -681,32 +683,33 @@ FT_BEGIN_HEADER |
|
|
|
|
|
|
|
|
|
/**************************************************************************
|
|
|
|
|
* |
|
|
|
|
* Define TT_CONFIG_OPTION_GX_VAR_SUPPORT if you want to include support |
|
|
|
|
* for Apple's distortable font technology (fvar, gvar, cvar, and avar |
|
|
|
|
* tables). This has many similarities to Type 1 Multiple Masters support. |
|
|
|
|
* Define `TT_CONFIG_OPTION_GX_VAR_SUPPORT` if you want to include support |
|
|
|
|
* for Apple's distortable font technology (`fvar`, `gvar`, `cvar`, and |
|
|
|
|
* `avar` tables). Tagged 'Font Variations', this is now part of OpenType |
|
|
|
|
* also. This has many similarities to Type~1 Multiple Masters support. |
|
|
|
|
*/ |
|
|
|
|
#define TT_CONFIG_OPTION_GX_VAR_SUPPORT |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**************************************************************************
|
|
|
|
|
* |
|
|
|
|
* Define TT_CONFIG_OPTION_BDF if you want to include support for an |
|
|
|
|
* embedded 'BDF ' table within SFNT-based bitmap formats. |
|
|
|
|
* Define `TT_CONFIG_OPTION_BDF` if you want to include support for an |
|
|
|
|
* embedded `BDF ` table within SFNT-based bitmap formats. |
|
|
|
|
*/ |
|
|
|
|
#define TT_CONFIG_OPTION_BDF |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**************************************************************************
|
|
|
|
|
* |
|
|
|
|
* Option TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES controls the maximum number |
|
|
|
|
* of bytecode instructions executed for a single run of the bytecode |
|
|
|
|
* interpreter, needed to prevent infinite loops. You don't want to change |
|
|
|
|
* this except for very special situations (e.g., making a library fuzzer |
|
|
|
|
* spend less time to handle broken fonts). |
|
|
|
|
* Option `TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES` controls the maximum |
|
|
|
|
* number of bytecode instructions executed for a single run of the |
|
|
|
|
* bytecode interpreter, needed to prevent infinite loops. You don't want |
|
|
|
|
* to change this except for very special situations (e.g., making a |
|
|
|
|
* library fuzzer spend less time to handle broken fonts). |
|
|
|
|
* |
|
|
|
|
* It is not expected that this value is ever modified by a configuring |
|
|
|
|
* script; instead, it gets surrounded with #ifndef ... #endif so that the |
|
|
|
|
* value can be set as a preprocessor option on the compiler's command |
|
|
|
|
* script; instead, it gets surrounded with `#ifndef ... #endif` so that |
|
|
|
|
* the value can be set as a preprocessor option on the compiler's command |
|
|
|
|
* line. |
|
|
|
|
*/ |
|
|
|
|
#ifndef TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES |
|
|
|
@ -725,15 +728,15 @@ FT_BEGIN_HEADER |
|
|
|
|
|
|
|
|
|
/**************************************************************************
|
|
|
|
|
* |
|
|
|
|
* T1_MAX_DICT_DEPTH is the maximum depth of nest dictionaries and arrays |
|
|
|
|
* in the Type 1 stream (see t1load.c). A minimum of 4 is required. |
|
|
|
|
* `T1_MAX_DICT_DEPTH` is the maximum depth of nest dictionaries and arrays |
|
|
|
|
* in the Type~1 stream (see `t1load.c`). A minimum of~4 is required. |
|
|
|
|
*/ |
|
|
|
|
#define T1_MAX_DICT_DEPTH 5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**************************************************************************
|
|
|
|
|
* |
|
|
|
|
* T1_MAX_SUBRS_CALLS details the maximum number of nested sub-routine |
|
|
|
|
* `T1_MAX_SUBRS_CALLS` details the maximum number of nested sub-routine |
|
|
|
|
* calls during glyph loading. |
|
|
|
|
*/ |
|
|
|
|
#define T1_MAX_SUBRS_CALLS 16 |
|
|
|
@ -741,10 +744,11 @@ FT_BEGIN_HEADER |
|
|
|
|
|
|
|
|
|
/**************************************************************************
|
|
|
|
|
* |
|
|
|
|
* T1_MAX_CHARSTRING_OPERANDS is the charstring stack's capacity. A |
|
|
|
|
* minimum of 16 is required. |
|
|
|
|
* `T1_MAX_CHARSTRING_OPERANDS` is the charstring stack's capacity. A |
|
|
|
|
* minimum of~16 is required. |
|
|
|
|
* |
|
|
|
|
* The Chinese font MingTiEG-Medium (CNS 11643 character set) needs 256. |
|
|
|
|
* The Chinese font 'MingTiEG-Medium' (coverting a CNS 11643 character set) |
|
|
|
|
* needs 256. |
|
|
|
|
*/ |
|
|
|
|
#define T1_MAX_CHARSTRINGS_OPERANDS 256 |
|
|
|
|
|
|
|
|
@ -752,9 +756,9 @@ FT_BEGIN_HEADER |
|
|
|
|
/**************************************************************************
|
|
|
|
|
* |
|
|
|
|
* Define this configuration macro if you want to prevent the compilation |
|
|
|
|
* of 't1afm', which is in charge of reading Type 1 AFM files into an |
|
|
|
|
* existing face. Note that if set, the T1 driver will be unable to |
|
|
|
|
* produce kerning distances. |
|
|
|
|
* of the 't1afm' module, which is in charge of reading Type~1 AFM files |
|
|
|
|
* into an existing face. Note that if set, the Type~1 driver will be |
|
|
|
|
* unable to produce kerning distances. |
|
|
|
|
*/ |
|
|
|
|
#undef T1_CONFIG_OPTION_NO_AFM |
|
|
|
|
|
|
|
|
@ -762,17 +766,17 @@ FT_BEGIN_HEADER |
|
|
|
|
/**************************************************************************
|
|
|
|
|
* |
|
|
|
|
* Define this configuration macro if you want to prevent the compilation |
|
|
|
|
* of the Multiple Masters font support in the Type 1 driver. |
|
|
|
|
* of the Multiple Masters font support in the Type~1 driver. |
|
|
|
|
*/ |
|
|
|
|
#undef T1_CONFIG_OPTION_NO_MM_SUPPORT |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**************************************************************************
|
|
|
|
|
* |
|
|
|
|
* T1_CONFIG_OPTION_OLD_ENGINE controls whether the pre-Adobe Type 1 engine |
|
|
|
|
* gets compiled into FreeType. If defined, it is possible to switch |
|
|
|
|
* between the two engines using the 'hinting-engine' property of the type1 |
|
|
|
|
* driver module. |
|
|
|
|
* `T1_CONFIG_OPTION_OLD_ENGINE` controls whether the pre-Adobe Type~1 |
|
|
|
|
* engine gets compiled into FreeType. If defined, it is possible to |
|
|
|
|
* switch between the two engines using the `hinting-engine` property of |
|
|
|
|
* the 'type1' driver module. |
|
|
|
|
*/ |
|
|
|
|
/* #define T1_CONFIG_OPTION_OLD_ENGINE */ |
|
|
|
|
|
|
|
|
@ -788,10 +792,10 @@ FT_BEGIN_HEADER |
|
|
|
|
|
|
|
|
|
/**************************************************************************
|
|
|
|
|
* |
|
|
|
|
* Using CFF_CONFIG_OPTION_DARKENING_PARAMETER_{X,Y}{1,2,3,4} it is |
|
|
|
|
* Using `CFF_CONFIG_OPTION_DARKENING_PARAMETER_{X,Y}{1,2,3,4}` it is |
|
|
|
|
* possible to set up the default values of the four control points that |
|
|
|
|
* define the stem darkening behaviour of the (new) CFF engine. For more |
|
|
|
|
* details please read the documentation of the 'darkening-parameters' |
|
|
|
|
* details please read the documentation of the `darkening-parameters` |
|
|
|
|
* property (file `ftdriver.h`), which allows the control at run-time. |
|
|
|
|
* |
|
|
|
|
* Do **not** undefine these macros! |
|
|
|
@ -811,9 +815,9 @@ FT_BEGIN_HEADER |
|
|
|
|
|
|
|
|
|
/**************************************************************************
|
|
|
|
|
* |
|
|
|
|
* CFF_CONFIG_OPTION_OLD_ENGINE controls whether the pre-Adobe CFF engine |
|
|
|
|
* `CFF_CONFIG_OPTION_OLD_ENGINE` controls whether the pre-Adobe CFF engine |
|
|
|
|
* gets compiled into FreeType. If defined, it is possible to switch |
|
|
|
|
* between the two engines using the 'hinting-engine' property of the cff |
|
|
|
|
* between the two engines using the `hinting-engine` property of the 'cff' |
|
|
|
|
* driver module. |
|
|
|
|
*/ |
|
|
|
|
/* #define CFF_CONFIG_OPTION_OLD_ENGINE */ |
|
|
|
@ -834,14 +838,14 @@ FT_BEGIN_HEADER |
|
|
|
|
* different, and which have nothing to do with each other. When selecting |
|
|
|
|
* 'Fixed' in KDE or Gnome one gets results that appear rather random, the |
|
|
|
|
* style changes often if one changes the size and one cannot select some |
|
|
|
|
* fonts at all. This option makes the PCF module prepend the foundry name |
|
|
|
|
* (plus a space) to the family name. |
|
|
|
|
* fonts at all. This option makes the 'pcf' module prepend the foundry |
|
|
|
|
* name (plus a space) to the family name. |
|
|
|
|
* |
|
|
|
|
* We also check whether we have 'wide' characters; all put together, we |
|
|
|
|
* get family names like 'Sony Fixed' or 'Misc Fixed Wide'. |
|
|
|
|
* |
|
|
|
|
* If this option is activated, it can be controlled with the |
|
|
|
|
* 'no-long-family-names' property of the pcf driver module. |
|
|
|
|
* `no-long-family-names` property of the 'pcf' driver module. |
|
|
|
|
*/ |
|
|
|
|
/* #define PCF_CONFIG_OPTION_LONG_FAMILY_NAMES */ |
|
|
|
|
|
|
|
|
@ -857,34 +861,39 @@ FT_BEGIN_HEADER |
|
|
|
|
|
|
|
|
|
/**************************************************************************
|
|
|
|
|
* |
|
|
|
|
* Compile autofit module with CJK (Chinese, Japanese, Korean) script |
|
|
|
|
* Compile 'autofit' module with CJK (Chinese, Japanese, Korean) script |
|
|
|
|
* support. |
|
|
|
|
*/ |
|
|
|
|
#define AF_CONFIG_OPTION_CJK |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**************************************************************************
|
|
|
|
|
* |
|
|
|
|
* Compile autofit module with fallback Indic script support, covering some |
|
|
|
|
* scripts that the 'latin' submodule of the autofit module doesn't (yet) |
|
|
|
|
* handle. |
|
|
|
|
* Compile 'autofit' module with fallback Indic script support, covering |
|
|
|
|
* some scripts that the 'latin' submodule of the 'autofit' module doesn't |
|
|
|
|
* (yet) handle. |
|
|
|
|
*/ |
|
|
|
|
#define AF_CONFIG_OPTION_INDIC |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**************************************************************************
|
|
|
|
|
* |
|
|
|
|
* Compile autofit module with warp hinting. The idea of the warping code |
|
|
|
|
* is to slightly scale and shift a glyph within a single dimension so that |
|
|
|
|
* as much of its segments are aligned (more or less) on the grid. To find |
|
|
|
|
* out the optimal scaling and shifting value, various parameter |
|
|
|
|
* Compile 'autofit' module with warp hinting. The idea of the warping |
|
|
|
|
* code is to slightly scale and shift a glyph within a single dimension so |
|
|
|
|
* that as much of its segments are aligned (more or less) on the grid. To |
|
|
|
|
* find out the optimal scaling and shifting value, various parameter |
|
|
|
|
* combinations are tried and scored. |
|
|
|
|
* |
|
|
|
|
* This experimental option is active only if the rendering mode is |
|
|
|
|
* FT_RENDER_MODE_LIGHT; you can switch warping on and off with the |
|
|
|
|
* 'warping' property of the auto-hinter (see file `ftdriver.h` for more |
|
|
|
|
* information; by default it is switched off). |
|
|
|
|
* You can switch warping on and off with the `warping` property of the |
|
|
|
|
* auto-hinter (see file `ftdriver.h` for more information; by default it |
|
|
|
|
* is switched off). |
|
|
|
|
* |
|
|
|
|
* This experimental option is not active if the rendering mode is |
|
|
|
|
* `FT_RENDER_MODE_LIGHT`. |
|
|
|
|
*/ |
|
|
|
|
#define AF_CONFIG_OPTION_USE_WARPER |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**************************************************************************
|
|
|
|
|
* |
|
|
|
|
* Use TrueType-like size metrics for 'light' auto-hinting. |
|
|
|
@ -918,8 +927,8 @@ FT_BEGIN_HEADER |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* This macro is defined if native TrueType hinting is requested by the |
|
|
|
|
* definitions above. |
|
|
|
|
* The next three macros are defined if native TrueType hinting is |
|
|
|
|
* requested by the definitions above. Don't change this. |
|
|
|
|
*/ |
|
|
|
|
#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER |
|
|
|
|
#define TT_USE_BYTECODE_INTERPRETER |
|
|
|
@ -938,7 +947,7 @@ FT_BEGIN_HEADER |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Check CFF darkening parameters. The checks are the same as in function |
|
|
|
|
* `cff_property_set' in file `cffdrivr.c'. |
|
|
|
|
* `cff_property_set` in file `cffdrivr.c`. |
|
|
|
|
*/ |
|
|
|
|
#if CFF_CONFIG_OPTION_DARKENING_PARAMETER_X1 < 0 || \ |
|
|
|
|
CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 < 0 || \
|
|
|
|
|