Home | History | Annotate | Download | only in include
      1 /***************************************************************************/
      2 /*                                                                         */
      3 /*  ftotval.h                                                              */
      4 /*                                                                         */
      5 /*    FreeType API for validating OpenType tables (specification).         */
      6 /*                                                                         */
      7 /*  Copyright 2004-2007, 2013 by                                           */
      8 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
      9 /*                                                                         */
     10 /*  This file is part of the FreeType project, and may only be used,       */
     11 /*  modified, and distributed under the terms of the FreeType project      */
     12 /*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
     13 /*  this file you indicate that you have read the license and              */
     14 /*  understand and accept it fully.                                        */
     15 /*                                                                         */
     16 /***************************************************************************/
     17 
     18 
     19 /***************************************************************************/
     20 /*                                                                         */
     21 /*                                                                         */
     22 /* Warning: This module might be moved to a different library in the       */
     23 /*          future to avoid a tight dependency between FreeType and the    */
     24 /*          OpenType specification.                                        */
     25 /*                                                                         */
     26 /*                                                                         */
     27 /***************************************************************************/
     28 
     29 
     30 #ifndef __FTOTVAL_H__
     31 #define __FTOTVAL_H__
     32 
     33 #include <ft2build.h>
     34 #include FT_FREETYPE_H
     35 
     36 #ifdef FREETYPE_H
     37 #error "freetype.h of FreeType 1 has been loaded!"
     38 #error "Please fix the directory search order for header files"
     39 #error "so that freetype.h of FreeType 2 is found first."
     40 #endif
     41 
     42 
     43 FT_BEGIN_HEADER
     44 
     45 
     46   /*************************************************************************/
     47   /*                                                                       */
     48   /* <Section>                                                             */
     49   /*    ot_validation                                                      */
     50   /*                                                                       */
     51   /* <Title>                                                               */
     52   /*    OpenType Validation                                                */
     53   /*                                                                       */
     54   /* <Abstract>                                                            */
     55   /*    An API to validate OpenType tables.                                */
     56   /*                                                                       */
     57   /* <Description>                                                         */
     58   /*    This section contains the declaration of functions to validate     */
     59   /*    some OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH).         */
     60   /*                                                                       */
     61   /*************************************************************************/
     62 
     63 
     64  /**********************************************************************
     65   *
     66   * @enum:
     67   *    FT_VALIDATE_OTXXX
     68   *
     69   * @description:
     70   *    A list of bit-field constants used with @FT_OpenType_Validate to
     71   *    indicate which OpenType tables should be validated.
     72   *
     73   * @values:
     74   *    FT_VALIDATE_BASE ::
     75   *      Validate BASE table.
     76   *
     77   *    FT_VALIDATE_GDEF ::
     78   *      Validate GDEF table.
     79   *
     80   *    FT_VALIDATE_GPOS ::
     81   *      Validate GPOS table.
     82   *
     83   *    FT_VALIDATE_GSUB ::
     84   *      Validate GSUB table.
     85   *
     86   *    FT_VALIDATE_JSTF ::
     87   *      Validate JSTF table.
     88   *
     89   *    FT_VALIDATE_MATH ::
     90   *      Validate MATH table.
     91   *
     92   *    FT_VALIDATE_OT ::
     93   *      Validate all OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH).
     94   *
     95   */
     96 #define FT_VALIDATE_BASE  0x0100
     97 #define FT_VALIDATE_GDEF  0x0200
     98 #define FT_VALIDATE_GPOS  0x0400
     99 #define FT_VALIDATE_GSUB  0x0800
    100 #define FT_VALIDATE_JSTF  0x1000
    101 #define FT_VALIDATE_MATH  0x2000
    102 
    103 #define FT_VALIDATE_OT  FT_VALIDATE_BASE | \
    104                         FT_VALIDATE_GDEF | \
    105                         FT_VALIDATE_GPOS | \
    106                         FT_VALIDATE_GSUB | \
    107                         FT_VALIDATE_JSTF | \
    108                         FT_VALIDATE_MATH
    109 
    110   /* */
    111 
    112  /**********************************************************************
    113   *
    114   * @function:
    115   *    FT_OpenType_Validate
    116   *
    117   * @description:
    118   *    Validate various OpenType tables to assure that all offsets and
    119   *    indices are valid.  The idea is that a higher-level library that
    120   *    actually does the text layout can access those tables without
    121   *    error checking (which can be quite time consuming).
    122   *
    123   * @input:
    124   *    face ::
    125   *       A handle to the input face.
    126   *
    127   *    validation_flags ::
    128   *       A bit field that specifies the tables to be validated.  See
    129   *       @FT_VALIDATE_OTXXX for possible values.
    130   *
    131   * @output:
    132   *    BASE_table ::
    133   *       A pointer to the BASE table.
    134   *
    135   *    GDEF_table ::
    136   *       A pointer to the GDEF table.
    137   *
    138   *    GPOS_table ::
    139   *       A pointer to the GPOS table.
    140   *
    141   *    GSUB_table ::
    142   *       A pointer to the GSUB table.
    143   *
    144   *    JSTF_table ::
    145   *       A pointer to the JSTF table.
    146   *
    147   * @return:
    148   *   FreeType error code.  0~means success.
    149   *
    150   * @note:
    151   *   This function only works with OpenType fonts, returning an error
    152   *   otherwise.
    153   *
    154   *   After use, the application should deallocate the five tables with
    155   *   @FT_OpenType_Free.  A NULL value indicates that the table either
    156   *   doesn't exist in the font, or the application hasn't asked for
    157   *   validation.
    158   */
    159   FT_EXPORT( FT_Error )
    160   FT_OpenType_Validate( FT_Face    face,
    161                         FT_UInt    validation_flags,
    162                         FT_Bytes  *BASE_table,
    163                         FT_Bytes  *GDEF_table,
    164                         FT_Bytes  *GPOS_table,
    165                         FT_Bytes  *GSUB_table,
    166                         FT_Bytes  *JSTF_table );
    167 
    168   /* */
    169 
    170  /**********************************************************************
    171   *
    172   * @function:
    173   *    FT_OpenType_Free
    174   *
    175   * @description:
    176   *    Free the buffer allocated by OpenType validator.
    177   *
    178   * @input:
    179   *    face ::
    180   *       A handle to the input face.
    181   *
    182   *    table ::
    183   *       The pointer to the buffer that is allocated by
    184   *       @FT_OpenType_Validate.
    185   *
    186   * @note:
    187   *   This function must be used to free the buffer allocated by
    188   *   @FT_OpenType_Validate only.
    189   */
    190   FT_EXPORT( void )
    191   FT_OpenType_Free( FT_Face   face,
    192                     FT_Bytes  table );
    193 
    194 
    195  /* */
    196 
    197 
    198 FT_END_HEADER
    199 
    200 #endif /* __FTOTVAL_H__ */
    201 
    202 
    203 /* END */
    204