There are several ways to access the source code for the FreeType packages.
Use this to browse, compile, and use the source locally.
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:
If you are behind a Firewall which disables port 9418, you might try the HTTP protocol:
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):
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.
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.
Please submit patches to the email@example.com mailing list – and thank you in advance for your work on improving FreeType!
Here are some tips on making your contribution easy to integrate into the FreeType git repositories.
For a couple of programming languages there exist wrappers around FreeType. Note that some of them are quite old and probably no longer maintained.
Bindings are part of the CamlImages package.
Bindings are available in derelict-ft.
This dynamic programming language comes with FreeType bindings.
More than a single binding package is available. Try here for a search on CPAN.
A more extensive set of Python bindings, designed to work together to cover the main parts of the Linux typography stack, are
See rubygems for bindings.
Crates, the Rust Package Registry, shows a list of bindings here.
One of the simplest way to compile FreeType is from the command line using one of the following tools.
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.
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: 14-Jul-2020