118 lines
3.9 KiB
Plaintext
118 lines
3.9 KiB
Plaintext
|
How to customize the compilation of the library:
|
||
|
================================================
|
||
|
|
||
|
FreeType is highly customizable to fit various needs, and this document
|
||
|
details how it is possible to select options and components at compilation
|
||
|
time.
|
||
|
|
||
|
|
||
|
I. Configuration macros:
|
||
|
|
||
|
the file found in "include/freetype/config/ftoption.h" contains a list
|
||
|
of commented configuration macros that can be toggled by developers to
|
||
|
indicate which features to activate in their build of the library.
|
||
|
|
||
|
these options range from debug level to availability of certain
|
||
|
features, like native TrueType hinting through a bytecode interpreter.
|
||
|
|
||
|
we invite you to read this file for more information. You can change
|
||
|
the file's content to suit your needs, or override it with one of the
|
||
|
techniques described below..
|
||
|
|
||
|
|
||
|
II. Modules list:
|
||
|
|
||
|
the file found in "include/freetype/config/ftmodule.h" contains a list
|
||
|
of names corresponding to the modules / font drivers to be statically
|
||
|
compiled in the FreeType library during the build.
|
||
|
|
||
|
you can change it to suit your own preferences. Be aware that certain
|
||
|
modules depend on others, as described by the file "modules.txt" in
|
||
|
this directory.
|
||
|
|
||
|
you can modify the file's content to suit your needs, or override it
|
||
|
at compile time with one of the methods described below
|
||
|
|
||
|
|
||
|
III. System interface:
|
||
|
|
||
|
FreeType's default interface to the system (i.e. the parts that deal with
|
||
|
memory management and i/o streams) is located in "src/base/ftsystem.c".
|
||
|
|
||
|
the current implementation uses standard C library calls to manage
|
||
|
memory and read font files. It is however possible to write custom
|
||
|
implementations to suit specific systems.
|
||
|
|
||
|
to tell the GNU Make-based build system to use a custom system interface,
|
||
|
you'll need to define the environment variable FTSYS_SRC to point to
|
||
|
the relevant implementation, like in:
|
||
|
|
||
|
on Unix:
|
||
|
./configure <youroptions>
|
||
|
export FTSYS_SRC=foo/my_ftsystem.c
|
||
|
make
|
||
|
make install
|
||
|
|
||
|
on Windows:
|
||
|
make setup <compiler>
|
||
|
set FTSYS_SRC=foo/my_ftsystem.c
|
||
|
make
|
||
|
|
||
|
|
||
|
IV. Overriding default configuration and module headers:
|
||
|
|
||
|
it is possible to over-ride the default configuration and module headers
|
||
|
without changing the original files. There are two ways to do that:
|
||
|
|
||
|
1. Using the C include path:
|
||
|
|
||
|
use the C include path to ensure that your own versions of the
|
||
|
files are used at compile time when the lines:
|
||
|
|
||
|
#include FT_CONFIG_OPTIONS_H
|
||
|
#include FT_CONFIG_MODULES_H
|
||
|
|
||
|
are compiled. Their default values being <freetype/config/ftoption.h>
|
||
|
and <freetype/config/ftmodule.h>, you can do something like:
|
||
|
|
||
|
custom/
|
||
|
freetype/
|
||
|
config/
|
||
|
ftoption.h => custom options header
|
||
|
ftmodule.h => custom modules list
|
||
|
|
||
|
include/ => normal FreeType 2 include
|
||
|
freetype/
|
||
|
...
|
||
|
|
||
|
then change the C include path to always give the path to "custom"
|
||
|
before the FreeType 2 "include"
|
||
|
|
||
|
|
||
|
2. Re-defining FT_CONFIG_OPTIONS_H and FT_CONFIG_MODULES_H
|
||
|
|
||
|
another way to do the same thing is to re-define the macros used
|
||
|
to name the configuration headers. To do so, you'll need a custom
|
||
|
"ft2build.h", whose content can be as simple as:
|
||
|
|
||
|
#ifndef __FT2_BUILD_GENERIC_H__
|
||
|
#define __FT2_BUILD_GENERIC_H__
|
||
|
|
||
|
#define FT_CONFIG_OPTIONS_H <custom/my-ftoption.h>
|
||
|
#define FT_CONFIG_MACROS_H <custom/my-ftmodule.h>
|
||
|
|
||
|
#include <freetype/config/ftheader.h>
|
||
|
|
||
|
#endif /* __FT2_BUILD_GENERIC_H__ */
|
||
|
|
||
|
place them in:
|
||
|
|
||
|
custom/
|
||
|
ft2build.h => custom version described above
|
||
|
my-ftoption.h => custom options header
|
||
|
my-ftmodule.h => custom modules list header
|
||
|
|
||
|
and change the C include path to ensure that "custom" is always placed
|
||
|
before the FT2 "include" during compilation.
|
||
|
|