Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. /***************************************************************************/
  2. /*                                                                         */
  3. /*  ftotval.h                                                              */
  4. /*                                                                         */
  5. /*    FreeType API for validating OpenType tables (specification).         */
  6. /*                                                                         */
  7. /*  Copyright 2004, 2005, 2006, 2007 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 which
  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 which 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.