# FreeType-2.7 API Reference

# OpenType Validation

## Synopsis

FT_OpenType_Validate |  |
FT_OpenType_Free | FT_VALIDATE_OTXXX |

This section contains the declaration of functions to validate some OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH).

### FT_OpenType_Validate

Defined in FT_OPENTYPE_VALIDATE_H (freetype/ftotval.h).

      FT_EXPORT( FT_Error )
      FT_OpenType_Validate( FT_Face    face,
                            FT_UInt    validation_flags,
                            FT_Bytes  *BASE_table,
                            FT_Bytes  *GDEF_table,
                            FT_Bytes  *GPOS_table,
                            FT_Bytes  *GSUB_table,
                            FT_Bytes  *JSTF_table );

Validate various OpenType tables to assure that all offsets and indices are valid. The idea is that a higher-level library that actually does the text layout can access those tables without error checking (which can be quite time consuming).

#### input

face | A handle to the input face.
validation_flags | A bit field that specifies the tables to be validated. See FT_VALIDATE_OTXXX for possible values.

#### output

BASE_table | A pointer to the BASE table.
GDEF_table | A pointer to the GDEF table.
GPOS_table | A pointer to the GPOS table.
GSUB_table | A pointer to the GSUB table.
JSTF_table | A pointer to the JSTF table.

#### return

FreeType error code. 0 means success.

#### note

This function only works with OpenType fonts, returning an error otherwise.

After use, the application should deallocate the five tables with FT_OpenType_Free. A NULL value indicates that the table either doesn't exist in the font, or the application hasn't asked for validation.

### FT_OpenType_Free

Defined in FT_OPENTYPE_VALIDATE_H (freetype/ftotval.h).

      FT_EXPORT( void )
      FT_OpenType_Free( FT_Face   face,
                        FT_Bytes  table );

Free the buffer allocated by OpenType validator.

#### input

face | A handle to the input face.
table | The pointer to the buffer that is allocated by FT_OpenType_Validate.

#### note

This function must be used to free the buffer allocated by FT_OpenType_Validate only.

### FT_VALIDATE_OTXXX

Defined in FT_OPENTYPE_VALIDATE_H (freetype/ftotval.h).

    #define FT_VALIDATE_BASE  0x0100
    #define FT_VALIDATE_GDEF  0x0200
    #define FT_VALIDATE_GPOS  0x0400
    #define FT_VALIDATE_GSUB  0x0800
    #define FT_VALIDATE_JSTF  0x1000
    #define FT_VALIDATE_MATH  0x2000

    #define FT_VALIDATE_OT  ( FT_VALIDATE_BASE | \
                              FT_VALIDATE_GDEF | \
                              FT_VALIDATE_GPOS | \
                              FT_VALIDATE_GSUB | \
                              FT_VALIDATE_JSTF | \
                              FT_VALIDATE_MATH )

A list of bit-field constants used with FT_OpenType_Validate to indicate which OpenType tables should be validated.

#### values

FT_VALIDATE_BASE | Validate BASE table.
FT_VALIDATE_GDEF | Validate GDEF table.
FT_VALIDATE_GPOS | Validate GPOS table.
FT_VALIDATE_GSUB | Validate GSUB table.
FT_VALIDATE_JSTF | Validate JSTF table.
FT_VALIDATE_MATH | Validate MATH table.
FT_VALIDATE_OT | Validate all OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH).