FreeType Development

Accessing the Source Code

There are several ways to access the source code for the FreeType packages.

  • Download a source archive

    Use this to browse, compile, and use the source locally.

  • Use the cgit page

    It will let you view our source code and the changes that occurred lately.

  • Use git access

    The complete FreeType repositories can be downloaded using git. Enter these commands for anonymous read-only access of the repositories:

    git clone git://git.sv.nongnu.org/freetype/freetype2.git
    git clone git://git.sv.nongnu.org/freetype/freetype2-demos.git

    If you are behind a Firewall which disables port 9418, you might try the HTTP protocol:

    git clone http://git.sv.nongnu.org/r/freetype/freetype2.git
    git clone http://git.sv.nongnu.org/r/freetype/freetype2-demos.git

    Please read

    for more details on the git setup of Savannah (for example, how to check out the git repositories with a CVS client, if necessary).

  • Use anonymous CVS access

    Other, no longer maintained FreeType repositories which exist for historical interest only can be downloaded through CVS and viewed here. Use the following value for the CVSROOT environment variable (or the equivalent -d command line option of the cvs client):

    :pserver:anonymous@cvs.sv.nongnu.org:/sources/freetype

    When asked for a password, simply press Enter for cvs login. The module names are freetype (Freetype version 1.x, C code), freetype1-contrib (contributed programs), and ftpascal (Freetype version 1.x, Pascal code).

    The freetype2 and ft2demos modules have been transformed to git (see above) and shouldn't be used anymore.

Reporting a Bug

In case you find a bug which you think is related to FreeType, please check the problematic font with one of our demo programs, for example ftview or ftstring. In case the problem persists, go to the Savannah bug database for FreeType and check whether the problem has been reported already. Otherwise, please submit a bug report. It might be useful to use the git version (see above) of FreeType for testing since we don't release FreeType very often.

Language Bindings

For a couple of programming languages there exist wrappers around FreeType. Note that some of them are quite old and probably no longer maintained.

Caml

Bindings are part of the CamlImages package.

D

Bindings have been submitted to Dsource.org.

Factor

This dynamic programming language comes with FreeType bindings.

Io

Here is a link to its font interface.

Perl

More than a single binding package is available. Try here for a search on CPAN.

Python

Bindings are available here. The Python Imaging Library (PIL) can be built to use FreeType for font rendering, giving high-level access to fonts.

Ruby

Two binding projects do exist: ft2-ruby and RAA.

Support Tools

One of the simplest way to compile FreeType is from the command line using one of the following tools.

GNU Make

FreeType comes with a sophisticated build system that is based on GNU Make. This really means a set of Makefiles and sub-Makefiles that are used to perform the following operations.

  • Detect the current operating system in order to select the appropriate default compiler settings for the build.

  • Select the settings corresponding to a given compiler for a given platform. For example, on Windows, the following compilers are supported: Visual C++, GCC, Borland C++, Watcom C++, Win32-LCC. On Unix, gcc, lcc and standard cc are also supported through a traditional configure script.

  • Build the list of FreeType modules automatically from the sub-directories present in the src directory.

  • Finally, build the library and its module as a static library or DLL, depending on the platform and compiler.

The build system is capable of supporting several compilers, on several platforms. However, you must have a recent version of GNU Make installed to use it. The build does not work with other make tools (like BSD Make, NMake, etc.).

See the download section for binaries of GNU Make for Windows.

FT Jam

Unfortunately, the GNU Make-based build system described above is rather complex due to various technical reasons, one of them being the really weird syntax used in Makefiles. Since release 2.0.2, the FreeType library can also be created with an alternative build tool named Jam.

Briefly, Jam is a small, efficient, portable and open-source replacement for make that is both a lot easier to use and more powerful.

  • Jam control files (named Jamfiles) are portable among platforms and compilers and thus do not need to be edited for each specific build (unlike the ugly Makefile.in trick used commonly on Unix).

  • The syntax of Jamfiles is simple, expressive and allows you to define your own functions.

  • Jam performs lots of nifty things for you, like automatic header dependencies computations.

  • Jam only does project builds, it is not a configuration tool and is trivially compatible with Autoconf on Unix.

Find more information on the FT Jam page.

Last update: 2-Jul-2013