Official mirror of https://gitlab.freedesktop.org/freetype/freetype
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
117 lines
3.9 KiB
117 lines
3.9 KiB
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. |
|
|
|
|