1.4 KiB
Modifying FreeType
FreeType follows a modular architecture, i.e. all the features are
implemented as separate modules. There are separate modules for
rasterizers, font parsers, hinting etc. located under the src/
directory.
(See https://freetype.org/freetype2/docs/design/design-5.html)
To add new features you have to either modify the existing modules or add a new module to FreeType.
Adding a new module to FreeType
Suppose we want to add a new module "example" to FreeType:
-
Create a directory under
src/
having the same name as the module. i.e.src/example/
-
Add source files under src/example having
#define FT_MAKE_OPTION_SINGLE_OBJECT
which includes the other files to create the module.(See
src/sdf/sdf.c
for reference) -
Add the module to
include/freetype/config/ftmodule.h
according to whether it is a renderer, font driver or another module like:FT_USE_MODULE( FT_Renderer_Class, ft_example_renderer_class )
-
Add the module to
modules.cfg
in the toplevel directory:RASTER_MODULES += example
-
Under
src/example
addmodule.mk
andrules.mk
files to enable compilation withmake
. (Seesrc/smooth/rules.mk
for reference). -
Now you can simply compile by using
make
in the toplevel directory and the module should compile.You can check out pre-existing modules for reference under
src/