freetype/docs/MODIFYING.md

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:

  1. Create a directory under src/ having the same name as the module. i.e. src/example/

  2. 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)

  3. 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 )
    
  4. Add the module to modules.cfg in the toplevel directory:

    RASTER_MODULES += example
    
  5. Under src/example add module.mk and rules.mk files to enable compilation with make. (See src/smooth/rules.mk for reference).

  6. 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/