modules/freetype2/include/ftgxval.h

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /***************************************************************************/
     2 /*                                                                         */
     3 /*  ftgxval.h                                                              */
     4 /*                                                                         */
     5 /*    FreeType API for validating TrueTypeGX/AAT tables (specification).   */
     6 /*                                                                         */
     7 /*  Copyright 2004-2006, 2013 by                                           */
     8 /*  Masatake YAMATO, Redhat K.K,                                           */
     9 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
    10 /*                                                                         */
    11 /*  This file is part of the FreeType project, and may only be used,       */
    12 /*  modified, and distributed under the terms of the FreeType project      */
    13 /*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
    14 /*  this file you indicate that you have read the license and              */
    15 /*  understand and accept it fully.                                        */
    16 /*                                                                         */
    17 /***************************************************************************/
    19 /***************************************************************************/
    20 /*                                                                         */
    21 /* gxvalid is derived from both gxlayout module and otvalid module.        */
    22 /* Development of gxlayout is supported by the Information-technology      */
    23 /* Promotion Agency(IPA), Japan.                                           */
    24 /*                                                                         */
    25 /***************************************************************************/
    28 #ifndef __FTGXVAL_H__
    29 #define __FTGXVAL_H__
    31 #include <ft2build.h>
    32 #include FT_FREETYPE_H
    34 #ifdef FREETYPE_H
    35 #error "freetype.h of FreeType 1 has been loaded!"
    36 #error "Please fix the directory search order for header files"
    37 #error "so that freetype.h of FreeType 2 is found first."
    38 #endif
    41 FT_BEGIN_HEADER
    44   /*************************************************************************/
    45   /*                                                                       */
    46   /* <Section>                                                             */
    47   /*    gx_validation                                                      */
    48   /*                                                                       */
    49   /* <Title>                                                               */
    50   /*    TrueTypeGX/AAT Validation                                          */
    51   /*                                                                       */
    52   /* <Abstract>                                                            */
    53   /*    An API to validate TrueTypeGX/AAT tables.                          */
    54   /*                                                                       */
    55   /* <Description>                                                         */
    56   /*    This section contains the declaration of functions to validate     */
    57   /*    some TrueTypeGX tables (feat, mort, morx, bsln, just, kern, opbd,  */
    58   /*    trak, prop, lcar).                                                 */
    59   /*                                                                       */
    60   /*************************************************************************/
    63   /*************************************************************************/
    64   /*                                                                       */
    65   /*                                                                       */
    66   /* Warning: Use FT_VALIDATE_XXX to validate a table.                     */
    67   /*          Following definitions are for gxvalid developers.            */
    68   /*                                                                       */
    69   /*                                                                       */
    70   /*************************************************************************/
    72 #define FT_VALIDATE_feat_INDEX     0
    73 #define FT_VALIDATE_mort_INDEX     1
    74 #define FT_VALIDATE_morx_INDEX     2
    75 #define FT_VALIDATE_bsln_INDEX     3
    76 #define FT_VALIDATE_just_INDEX     4
    77 #define FT_VALIDATE_kern_INDEX     5
    78 #define FT_VALIDATE_opbd_INDEX     6
    79 #define FT_VALIDATE_trak_INDEX     7
    80 #define FT_VALIDATE_prop_INDEX     8
    81 #define FT_VALIDATE_lcar_INDEX     9
    82 #define FT_VALIDATE_GX_LAST_INDEX  FT_VALIDATE_lcar_INDEX
    85   /*************************************************************************
    86    *
    87    * @macro:
    88    *   FT_VALIDATE_GX_LENGTH
    89    *
    90    * @description:
    91    *   The number of tables checked in this module.  Use it as a parameter
    92    *   for the `table-length' argument of function @FT_TrueTypeGX_Validate.
    93    */
    94 #define FT_VALIDATE_GX_LENGTH     (FT_VALIDATE_GX_LAST_INDEX + 1)
    96   /* */
    98   /* Up to 0x1000 is used by otvalid.
    99      Ox2xxx is reserved for feature OT extension. */
   100 #define FT_VALIDATE_GX_START 0x4000
   101 #define FT_VALIDATE_GX_BITFIELD( tag )                  \
   102   ( FT_VALIDATE_GX_START << FT_VALIDATE_##tag##_INDEX )
   105  /**********************************************************************
   106   *
   107   * @enum:
   108   *    FT_VALIDATE_GXXXX
   109   *
   110   * @description:
   111   *    A list of bit-field constants used with @FT_TrueTypeGX_Validate to
   112   *    indicate which TrueTypeGX/AAT Type tables should be validated.
   113   *
   114   * @values:
   115   *    FT_VALIDATE_feat ::
   116   *      Validate `feat' table.
   117   *
   118   *    FT_VALIDATE_mort ::
   119   *      Validate `mort' table.
   120   *
   121   *    FT_VALIDATE_morx ::
   122   *      Validate `morx' table.
   123   *
   124   *    FT_VALIDATE_bsln ::
   125   *      Validate `bsln' table.
   126   *
   127   *    FT_VALIDATE_just ::
   128   *      Validate `just' table.
   129   *
   130   *    FT_VALIDATE_kern ::
   131   *      Validate `kern' table.
   132   *
   133   *    FT_VALIDATE_opbd ::
   134   *      Validate `opbd' table.
   135   *
   136   *    FT_VALIDATE_trak ::
   137   *      Validate `trak' table.
   138   *
   139   *    FT_VALIDATE_prop ::
   140   *      Validate `prop' table.
   141   *
   142   *    FT_VALIDATE_lcar ::
   143   *      Validate `lcar' table.
   144   *
   145   *    FT_VALIDATE_GX ::
   146   *      Validate all TrueTypeGX tables (feat, mort, morx, bsln, just, kern,
   147   *      opbd, trak, prop and lcar).
   148   *
   149   */
   151 #define FT_VALIDATE_feat  FT_VALIDATE_GX_BITFIELD( feat )
   152 #define FT_VALIDATE_mort  FT_VALIDATE_GX_BITFIELD( mort )
   153 #define FT_VALIDATE_morx  FT_VALIDATE_GX_BITFIELD( morx )
   154 #define FT_VALIDATE_bsln  FT_VALIDATE_GX_BITFIELD( bsln )
   155 #define FT_VALIDATE_just  FT_VALIDATE_GX_BITFIELD( just )
   156 #define FT_VALIDATE_kern  FT_VALIDATE_GX_BITFIELD( kern )
   157 #define FT_VALIDATE_opbd  FT_VALIDATE_GX_BITFIELD( opbd )
   158 #define FT_VALIDATE_trak  FT_VALIDATE_GX_BITFIELD( trak )
   159 #define FT_VALIDATE_prop  FT_VALIDATE_GX_BITFIELD( prop )
   160 #define FT_VALIDATE_lcar  FT_VALIDATE_GX_BITFIELD( lcar )
   162 #define FT_VALIDATE_GX  ( FT_VALIDATE_feat | \
   163                           FT_VALIDATE_mort | \
   164                           FT_VALIDATE_morx | \
   165                           FT_VALIDATE_bsln | \
   166                           FT_VALIDATE_just | \
   167                           FT_VALIDATE_kern | \
   168                           FT_VALIDATE_opbd | \
   169                           FT_VALIDATE_trak | \
   170                           FT_VALIDATE_prop | \
   171                           FT_VALIDATE_lcar )
   174   /* */
   176  /**********************************************************************
   177   *
   178   * @function:
   179   *    FT_TrueTypeGX_Validate
   180   *
   181   * @description:
   182   *    Validate various TrueTypeGX tables to assure that all offsets and
   183   *    indices are valid.  The idea is that a higher-level library that
   184   *    actually does the text layout can access those tables without
   185   *    error checking (which can be quite time consuming).
   186   *
   187   * @input:
   188   *    face ::
   189   *       A handle to the input face.
   190   *
   191   *    validation_flags ::
   192   *       A bit field that specifies the tables to be validated.  See
   193   *       @FT_VALIDATE_GXXXX for possible values.
   194   *
   195   *    table_length ::
   196   *       The size of the `tables' array.  Normally, @FT_VALIDATE_GX_LENGTH
   197   *       should be passed.
   198   *
   199   * @output:
   200   *    tables ::
   201   *       The array where all validated sfnt tables are stored.
   202   *       The array itself must be allocated by a client.
   203   *
   204   * @return:
   205   *   FreeType error code.  0~means success.
   206   *
   207   * @note:
   208   *   This function only works with TrueTypeGX fonts, returning an error
   209   *   otherwise.
   210   *
   211   *   After use, the application should deallocate the buffers pointed to by
   212   *   each `tables' element, by calling @FT_TrueTypeGX_Free.  A NULL value
   213   *   indicates that the table either doesn't exist in the font, the
   214   *   application hasn't asked for validation, or the validator doesn't have
   215   *   the ability to validate the sfnt table.
   216   */
   217   FT_EXPORT( FT_Error )
   218   FT_TrueTypeGX_Validate( FT_Face   face,
   219                           FT_UInt   validation_flags,
   220                           FT_Bytes  tables[FT_VALIDATE_GX_LENGTH],
   221                           FT_UInt   table_length );
   224   /* */
   226  /**********************************************************************
   227   *
   228   * @function:
   229   *    FT_TrueTypeGX_Free
   230   *
   231   * @description:
   232   *    Free the buffer allocated by TrueTypeGX validator.
   233   *
   234   * @input:
   235   *    face ::
   236   *       A handle to the input face.
   237   *
   238   *    table ::
   239   *       The pointer to the buffer allocated by
   240   *       @FT_TrueTypeGX_Validate.
   241   *
   242   * @note:
   243   *   This function must be used to free the buffer allocated by
   244   *   @FT_TrueTypeGX_Validate only.
   245   */
   246   FT_EXPORT( void )
   247   FT_TrueTypeGX_Free( FT_Face   face,
   248                       FT_Bytes  table );
   251   /* */
   253  /**********************************************************************
   254   *
   255   * @enum:
   256   *    FT_VALIDATE_CKERNXXX
   257   *
   258   * @description:
   259   *    A list of bit-field constants used with @FT_ClassicKern_Validate
   260   *    to indicate the classic kern dialect or dialects.  If the selected
   261   *    type doesn't fit, @FT_ClassicKern_Validate regards the table as
   262   *    invalid.
   263   *
   264   * @values:
   265   *    FT_VALIDATE_MS ::
   266   *      Handle the `kern' table as a classic Microsoft kern table.
   267   *
   268   *    FT_VALIDATE_APPLE ::
   269   *      Handle the `kern' table as a classic Apple kern table.
   270   *
   271   *    FT_VALIDATE_CKERN ::
   272   *      Handle the `kern' as either classic Apple or Microsoft kern table.
   273   */
   274 #define FT_VALIDATE_MS     ( FT_VALIDATE_GX_START << 0 )
   275 #define FT_VALIDATE_APPLE  ( FT_VALIDATE_GX_START << 1 )
   277 #define FT_VALIDATE_CKERN  ( FT_VALIDATE_MS | FT_VALIDATE_APPLE )
   280   /* */
   282  /**********************************************************************
   283   *
   284   * @function:
   285   *    FT_ClassicKern_Validate
   286   *
   287   * @description:
   288   *    Validate classic (16-bit format) kern table to assure that the offsets
   289   *    and indices are valid.  The idea is that a higher-level library that
   290   *    actually does the text layout can access those tables without error
   291   *    checking (which can be quite time consuming).
   292   *
   293   *    The `kern' table validator in @FT_TrueTypeGX_Validate deals with both
   294   *    the new 32-bit format and the classic 16-bit format, while
   295   *    FT_ClassicKern_Validate only supports the classic 16-bit format.
   296   *
   297   * @input:
   298   *    face ::
   299   *       A handle to the input face.
   300   *
   301   *    validation_flags ::
   302   *       A bit field that specifies the dialect to be validated.  See
   303   *       @FT_VALIDATE_CKERNXXX for possible values.
   304   *
   305   * @output:
   306   *    ckern_table ::
   307   *       A pointer to the kern table.
   308   *
   309   * @return:
   310   *   FreeType error code.  0~means success.
   311   *
   312   * @note:
   313   *   After use, the application should deallocate the buffers pointed to by
   314   *   `ckern_table', by calling @FT_ClassicKern_Free.  A NULL value
   315   *   indicates that the table doesn't exist in the font.
   316   */
   317   FT_EXPORT( FT_Error )
   318   FT_ClassicKern_Validate( FT_Face    face,
   319                            FT_UInt    validation_flags,
   320                            FT_Bytes  *ckern_table );
   323   /* */
   325  /**********************************************************************
   326   *
   327   * @function:
   328   *    FT_ClassicKern_Free
   329   *
   330   * @description:
   331   *    Free the buffer allocated by classic Kern validator.
   332   *
   333   * @input:
   334   *    face ::
   335   *       A handle to the input face.
   336   *
   337   *    table ::
   338   *       The pointer to the buffer that is allocated by
   339   *       @FT_ClassicKern_Validate.
   340   *
   341   * @note:
   342   *   This function must be used to free the buffer allocated by
   343   *   @FT_ClassicKern_Validate only.
   344   */
   345   FT_EXPORT( void )
   346   FT_ClassicKern_Free( FT_Face   face,
   347                        FT_Bytes  table );
   350  /* */
   353 FT_END_HEADER
   355 #endif /* __FTGXVAL_H__ */
   358 /* END */

mercurial