# modules.cfg
#
# Copyright (C) 2005-2022 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
# and distributed under the terms of the FreeType project license,
# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
# indicate that you have read the license and understand and accept it
# fully.
#
#
# In case you compile the FreeType library with GNU make or makepp, this
# file controls which components are built into the library.  Otherwise,
# please read this file for information on the various modules and its
# dependencies, then follow the instructions in the file `docs/INSTALL.ANY'.
#
# To deactivate a module, simply comment out the corresponding line.  To
# activate a module, remove the comment character.
#
# Note that many modules and components are further controlled with macros
# in the file `include/freetype/config/ftoption.h'.


####
#### font modules -- at least one is required
####
####   The order given here (from top to down) is the order used for testing
####   font formats in the compiled library.
####

# TrueType font driver.
#
# This driver needs the `sfnt' module.
FONT_MODULES += truetype

# PostScript Type 1 font driver.
#
# This driver needs the `psaux', `pshinter', and `psnames' modules.
FONT_MODULES += type1

# CFF/OpenType font driver.
#
# This driver needs the `sfnt', `psaux', `pshinter', and `psnames' modules.
FONT_MODULES += cff

# Type 1 CID-keyed font driver.
#
# This driver needs the `psaux', `pshinter', and `psnames' modules.
FONT_MODULES += cid

# PFR/TrueDoc font driver.  See optional extension ftpfr.c below also.
FONT_MODULES += pfr

# PostScript Type 42 font driver.
#
# This driver needs the `truetype' and `psaux' modules.
FONT_MODULES += type42

# Windows FONT/FNT font driver.  See optional extension ftwinfnt.c below
# also.
FONT_MODULES += winfonts

# PCF font driver.  If debugging and tracing is enabled, needs `ftbitmap.c'.
FONT_MODULES += pcf

# BDF font driver.  See optional extension ftbdf.c below also.
FONT_MODULES += bdf

# SFNT files support.  If used without `truetype' or `cff', it supports
# bitmap-only fonts within an SFNT wrapper.
#
# This driver needs the `psnames' module.
FONT_MODULES += sfnt


####
#### hinting modules
####

# FreeType's auto hinter.
HINTING_MODULES += autofit

# PostScript hinter.
HINTING_MODULES += pshinter

# The TrueType hinting engine doesn't have a module of its own but is
# controlled in file include/freetype/config/ftoption.h
# (TT_CONFIG_OPTION_BYTECODE_INTERPRETER and friends).


####
#### raster modules -- at least one is required for vector font formats
####

# Anti-aliasing rasterizer.
RASTER_MODULES += smooth

# Monochrome rasterizer.
RASTER_MODULES += raster

# OT-SVG.
RASTER_MODULES += svg

# Signed distance field rasterizer.
RASTER_MODULES += sdf


####
#### auxiliary modules
####

# FreeType's cache sub-system (quite stable but still in beta -- this means
# that its public API is subject to change if necessary).  See
# include/freetype/ftcache.h.  Needs `ftglyph.c'.
AUX_MODULES += cache

# TrueType GX/AAT table validation.  Needs `ftgxval.c' below.
#
# AUX_MODULES += gxvalid

# Support for streams compressed with gzip (files with suffix .gz).
#
# See include/freetype/ftgzip.h for the API.
AUX_MODULES += gzip

# Support for streams compressed with LZW (files with suffix .Z).
#
# See include/freetype/ftlzw.h for the API.
AUX_MODULES += lzw

# Support for streams compressed with bzip2 (files with suffix .bz2).
#
# See include/freetype/ftbzip2.h for the API.
AUX_MODULES += bzip2

# OpenType table validation.  Needs `ftotval.c' below.
#
# AUX_MODULES += otvalid

# Auxiliary PostScript driver component to share common code.
#
# This module depends on `psnames'.
AUX_MODULES += psaux

# Support for PostScript glyph names.
#
# This module can be controlled in ftconfig.h
# (FT_CONFIG_OPTION_POSTSCRIPT_NAMES).
AUX_MODULES += psnames


####
#### base module extensions
####

# Exact bounding box calculation.
#
# See include/freetype/ftbbox.h for the API.
BASE_EXTENSIONS += ftbbox.c

# Access BDF-specific strings.  Needs BDF font driver.
#
# See include/freetype/ftbdf.h for the API.
BASE_EXTENSIONS += ftbdf.c

# Utility functions for converting 1bpp, 2bpp, 4bpp, and 8bpp bitmaps into
# 8bpp format, and for emboldening of bitmap glyphs.
#
# See include/freetype/ftbitmap.h for the API.
BASE_EXTENSIONS += ftbitmap.c

# Access CID font information.
#
# See include/freetype/ftcid.h for the API.
BASE_EXTENSIONS += ftcid.c

# Access FSType information.  Needs `fttype1.c'.
#
# See include/freetype/freetype.h for the API.
BASE_EXTENSIONS += ftfstype.c

# Support for GASP table queries.
#
# See include/freetype/ftgasp.h for the API.
BASE_EXTENSIONS += ftgasp.c

# Convenience functions to handle glyphs.  Needs `ftbitmap.c'.
#
# See include/freetype/ftglyph.h for the API.
BASE_EXTENSIONS += ftglyph.c

# Interface for gxvalid module.
#
# See include/freetype/ftgxval.h for the API.
BASE_EXTENSIONS += ftgxval.c

# Multiple Master font interface.
#
# See include/freetype/ftmm.h for the API.
BASE_EXTENSIONS += ftmm.c

# Interface for otvalid module.
#
# See include/freetype/ftotval.h for the API.
BASE_EXTENSIONS += ftotval.c

# Support for FT_Face_CheckTrueTypePatents.
#
# See include/freetype/freetype.h for the API.
BASE_EXTENSIONS += ftpatent.c

# Interface for accessing PFR-specific data.  Needs PFR font driver.
#
# See include/freetype/ftpfr.h for the API.
BASE_EXTENSIONS += ftpfr.c

# Path stroker.  Needs `ftglyph.c'.
#
# See include/freetype/ftstroke.h for the API.
BASE_EXTENSIONS += ftstroke.c

# Support for synthetic emboldening and slanting of fonts.  Needs
# `ftbitmap.c'.
#
# See include/freetype/ftsynth.h for the API.
BASE_EXTENSIONS += ftsynth.c

# Interface to access data specific to PostScript Type 1 and Type 2 (CFF)
# fonts.
#
# See include/freetype/t1tables.h for the API.
BASE_EXTENSIONS += fttype1.c

# Interface for accessing data specific to Windows FNT files.  Needs winfnt
# driver.
#
# See include/freetype/ftwinfnt.h for the API.
BASE_EXTENSIONS += ftwinfnt.c

####
#### The components `ftsystem.c' (for memory allocation and stream I/O
#### management) and `ftdebug.c' (for emitting debug messages to the user)
#### are controlled with the following variables.
####
####   ftsystem.c:  $(FTSYS_SRC)
####   ftdebug.c:   $(FTDEBUG_SRC)
####
#### Please refer to docs/CUSTOMIZE for details.
####


# EOF
