Welcome

There are several ways to build the FreeType library, depending on your
system and the level of customization you need. Here's a short overview
of the documentation available:

I. Normal installation and upgrades:

  1. Native TrueType Hinting:
  
    Native TrueType hinting is disabled by default[1]. If you really need it,
    read the file "TRUETYPE" for information.

      
  2. Unix Systems (as well as Cygwin or MSys on Windows):

    Please read *both* UPGRADE.UNX and INSTALL.UNX to install or upgrade
    FreeType 2 on a Unix system. Note that you *will* need GNU Make, since
    other make tools won't work (this includes BSD Make !!)

  3. On VMS with the "mms" build tool:
  
    see INSTALL.VMS for installation instructions on this platform

  4. Other systems using GNU Make:
  
    on non-Unix platforms, it's possible to build the library using
    GNU Make utility. Note that *NO OTHER MAKE TOOL WILL WORK* !!
    This methods supports several compilers on Windows, OS/2 and BeOS,
    including Mingw, Visual C++, Borland C++, and more.

    instructions are provided in the file "INSTALL.GNU"


  5. With an IDE Project File  (e.g. for Visual Studio or CodeWarrior):
  
    we provide a small number of "project files" for various IDEs to
    automatically build the library as well. Note that these files are
    not supported and sporadically maintained by FreeType developers,
    so don't expect them to work in each release.
    
    to find them, have a look at the content of the "builds/<system>"
    directory, where <system> stands for your OS or environment.


  6. From you own IDE, or own Makefiles:
  
    If you want to create your own project file, follow the instructions
    given in the "INSTALL.ANY" document of this directory.


II. Custom builds of the library:

  Customizing the compilation of FreeType is easy, and allows you to select
  only the components of the font engine that you really need. For more details
  read the file "CUSTOMIZE"


--------------------------------------------------------------------

[1] More details on:  http://www.freetype.org/patents.html

End of file

     