Skip to content

FreeType » Docs » Core API » Library Setup


Library Setup

Synopsis

Functions to start and end the usage of the FreeType library.

Note that FT_Library_Version and FREETYPE_XXX are of limited use because even a new release of FreeType with only documentation changes increases the version number.

FT_Library

Defined in FT_FREETYPE_H (freetype/freetype.h).

  typedef struct FT_LibraryRec_  *FT_Library;

A handle to a FreeType library instance. Each ‘library’ is completely independent from the others; it is the ‘root’ of a set of objects like fonts, faces, sizes, etc.

It also embeds a memory manager (see FT_Memory), as well as a scan-line converter object (see FT_Raster).

[Since 2.5.6] In multi-threaded applications it is easiest to use one FT_Library object per thread. In case this is too cumbersome, a single FT_Library object across threads is possible also, as long as a mutex lock is used around FT_New_Face and FT_Done_Face.

note

Library objects are normally created by FT_Init_FreeType, and destroyed with FT_Done_FreeType. If you need reference-counting (cf. FT_Reference_Library), use FT_New_Library and FT_Done_Library.


FT_Init_FreeType

Defined in FT_FREETYPE_H (freetype/freetype.h).

  FT_EXPORT( FT_Error )
  FT_Init_FreeType( FT_Library  *alibrary );

Initialize a new FreeType library object. The set of modules that are registered by this function is determined at build time.

output

alibrary

A handle to a new library object.

return

FreeType error code. 0 means success.

note

In case you want to provide your own memory allocating routines, use FT_New_Library instead, followed by a call to FT_Add_Default_Modules (or a series of calls to FT_Add_Module) and FT_Set_Default_Properties.

See the documentation of FT_Library and FT_Face for multi-threading issues.

If you need reference-counting (cf. FT_Reference_Library), use FT_New_Library and FT_Done_Library.

If compilation option FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES is set, this function reads the FREETYPE_PROPERTIES environment variable to control driver properties. See section ‘Driver properties’ for more.


FT_Done_FreeType

Defined in FT_FREETYPE_H (freetype/freetype.h).

  FT_EXPORT( FT_Error )
  FT_Done_FreeType( FT_Library  library );

Destroy a given FreeType library object and all of its children, including resources, drivers, faces, sizes, etc.

input

library

A handle to the target library object.

return

FreeType error code. 0 means success.


FT_Library_Version

Defined in FT_FREETYPE_H (freetype/freetype.h).

  FT_EXPORT( void )
  FT_Library_Version( FT_Library   library,
                      FT_Int      *amajor,
                      FT_Int      *aminor,
                      FT_Int      *apatch );

Return the version of the FreeType library being used. This is useful when dynamically linking to the library, since one cannot use the macros FREETYPE_MAJOR, FREETYPE_MINOR, and FREETYPE_PATCH.

input

library

A source library handle.

output

amajor

The major version number.

aminor

The minor version number.

apatch

The patch version number.

note

The reason why this function takes a library argument is because certain programs implement library initialization in a custom way that doesn't use FT_Init_FreeType.

In such cases, the library version might not be available before the library object has been created.


FREETYPE_XXX

Defined in FT_FREETYPE_H (freetype/freetype.h).

#define FREETYPE_MAJOR  2
#define FREETYPE_MINOR  13
#define FREETYPE_PATCH  3

These three macros identify the FreeType source code version. Use FT_Library_Version to access them at runtime.

values

FREETYPE_MAJOR

The major version number.

FREETYPE_MINOR

The minor version number.

FREETYPE_PATCH

The patch level.

note

The version number of FreeType if built as a dynamic link library with the ‘libtool’ package is not controlled by these three macros.