shithub: freetype+ttf2subf

ref: 705620beebdb9a4f62853463dd4c23e7f2fbce29
dir: /docs/CUSTOMIZE/

View raw version
How to customize the compilation of the library:
================================================

  FreeType  is  highly  customizable  to  fit various  needs,  and  this
  document describes 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 should be active while building 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  and  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 to 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  have to define  the environment variable  FTSYS_SRC to
  point to the relevant implementation:
  
    on Unix:

      ./configure <your options>
      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  override  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 redefine  the macros used to
    name  the  configuration headers.   To  do  so,  you need  a  custom
    "ft2build.h" whose content can be as simple as:
   
      #ifndef __FT2_BUILD_MY_PLATFORM_H__
      #define __FT2_BUILD_MY_PLATFORM_H__

      #define FT_CONFIG_OPTIONS_H  <custom/my-ftoption.h>
      #define FT_CONFIG_MODULES_H  <custom/my-ftmodule.h>

      #include <freetype/config/ftheader.h>

      #endif /* __FT2_BUILD_MY_PLATFORM_H__ */
   
    Place those files in a separate directory, e.g.:
   
      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.


--- end of CUSTOMIZE ---