misc/libfreetype/src/otvalid/otvcommn.h
author koda
Mon, 25 Apr 2011 01:46:54 +0200
changeset 5172 88f2e05288ba
permissions -rw-r--r--
aaand let's add freetype as well while we are at it other smaller changes
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5172
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
     1
/***************************************************************************/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
     2
/*                                                                         */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
     3
/*  otvcommn.h                                                             */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
     4
/*                                                                         */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
     5
/*    OpenType common tables validation (specification).                   */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
     6
/*                                                                         */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
     7
/*  Copyright 2004, 2005, 2007, 2009 by                                    */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
     8
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
     9
/*                                                                         */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    10
/*  This file is part of the FreeType project, and may only be used,       */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    11
/*  modified, and distributed under the terms of the FreeType project      */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    12
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    13
/*  this file you indicate that you have read the license and              */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    14
/*  understand and accept it fully.                                        */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    15
/*                                                                         */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    16
/***************************************************************************/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    17
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    18
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    19
#ifndef __OTVCOMMN_H__
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    20
#define __OTVCOMMN_H__
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    21
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    22
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    23
#include <ft2build.h>
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    24
#include "otvalid.h"
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    25
#include FT_INTERNAL_DEBUG_H
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    26
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    27
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    28
FT_BEGIN_HEADER
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    29
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    30
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    31
  /*************************************************************************/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    32
  /*************************************************************************/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    33
  /*****                                                               *****/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    34
  /*****                         VALIDATION                            *****/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    35
  /*****                                                               *****/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    36
  /*************************************************************************/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    37
  /*************************************************************************/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    38
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    39
  typedef struct OTV_ValidatorRec_*  OTV_Validator;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    40
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    41
  typedef void  (*OTV_Validate_Func)( FT_Bytes       table,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    42
                                      OTV_Validator  valid );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    43
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    44
  typedef struct  OTV_ValidatorRec_
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    45
  {
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    46
    FT_Validator        root;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    47
    FT_UInt             type_count;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    48
    OTV_Validate_Func*  type_funcs;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    49
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    50
    FT_UInt             lookup_count;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    51
    FT_UInt             glyph_count;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    52
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    53
    FT_UInt             nesting_level;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    54
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    55
    OTV_Validate_Func   func[3];
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    56
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    57
    FT_UInt             extra1;     /* for passing parameters */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    58
    FT_UInt             extra2;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    59
    FT_Bytes            extra3;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    60
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    61
#ifdef FT_DEBUG_LEVEL_TRACE
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    62
    FT_UInt             debug_indent;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    63
    const FT_String*    debug_function_name[3];
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    64
#endif
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    65
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    66
  } OTV_ValidatorRec;
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    67
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    68
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    69
#undef  FT_INVALID_
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    70
#define FT_INVALID_( _prefix, _error )                         \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    71
          ft_validator_error( valid->root, _prefix ## _error )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    72
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    73
#define OTV_OPTIONAL_TABLE( _table )  FT_UShort  _table;      \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    74
                                      FT_Bytes   _table ## _p
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    75
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    76
#define OTV_OPTIONAL_OFFSET( _offset )           \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    77
          FT_BEGIN_STMNT                         \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    78
            _offset ## _p = p;                   \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    79
            _offset       = FT_NEXT_USHORT( p ); \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    80
          FT_END_STMNT
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    81
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    82
#define OTV_LIMIT_CHECK( _count )                    \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    83
          FT_BEGIN_STMNT                             \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    84
            if ( p + (_count) > valid->root->limit ) \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    85
              FT_INVALID_TOO_SHORT;                  \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    86
          FT_END_STMNT
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    87
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    88
#define OTV_SIZE_CHECK( _size )                                     \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    89
          FT_BEGIN_STMNT                                            \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    90
            if ( _size > 0 && _size < table_size )                  \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    91
            {                                                       \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    92
              if ( valid->root->level == FT_VALIDATE_PARANOID )     \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    93
                FT_INVALID_OFFSET;                                  \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    94
              else                                                  \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    95
              {                                                     \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    96
                /* strip off `const' */                             \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    97
                FT_Byte*  pp = (FT_Byte*)_size ## _p;               \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    98
                                                                    \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
    99
                                                                    \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   100
                FT_TRACE3(( "\n"                                    \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   101
                            "Invalid offset to optional table `%s'" \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   102
                            " set to zero.\n"                       \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   103
                            "\n", #_size ));                        \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   104
                                                                    \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   105
                /* always assume 16bit entities */                  \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   106
                _size = pp[0] = pp[1] = 0;                          \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   107
              }                                                     \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   108
            }                                                       \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   109
          FT_END_STMNT
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   110
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   111
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   112
#define  OTV_NAME_(x)  #x
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   113
#define  OTV_NAME(x)   OTV_NAME_(x)
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   114
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   115
#define  OTV_FUNC_(x)  x##Func
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   116
#define  OTV_FUNC(x)   OTV_FUNC_(x)
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   117
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   118
#ifdef FT_DEBUG_LEVEL_TRACE
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   119
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   120
#define OTV_NEST1( x )                                     \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   121
          FT_BEGIN_STMNT                                   \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   122
            valid->nesting_level          = 0;             \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   123
            valid->func[0]                = OTV_FUNC( x ); \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   124
            valid->debug_function_name[0] = OTV_NAME( x ); \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   125
          FT_END_STMNT
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   126
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   127
#define OTV_NEST2( x, y )                                  \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   128
          FT_BEGIN_STMNT                                   \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   129
            valid->nesting_level          = 0;             \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   130
            valid->func[0]                = OTV_FUNC( x ); \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   131
            valid->func[1]                = OTV_FUNC( y ); \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   132
            valid->debug_function_name[0] = OTV_NAME( x ); \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   133
            valid->debug_function_name[1] = OTV_NAME( y ); \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   134
          FT_END_STMNT
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   135
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   136
#define OTV_NEST3( x, y, z )                               \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   137
          FT_BEGIN_STMNT                                   \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   138
            valid->nesting_level          = 0;             \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   139
            valid->func[0]                = OTV_FUNC( x ); \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   140
            valid->func[1]                = OTV_FUNC( y ); \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   141
            valid->func[2]                = OTV_FUNC( z ); \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   142
            valid->debug_function_name[0] = OTV_NAME( x ); \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   143
            valid->debug_function_name[1] = OTV_NAME( y ); \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   144
            valid->debug_function_name[2] = OTV_NAME( z ); \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   145
          FT_END_STMNT
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   146
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   147
#define OTV_INIT  valid->debug_indent = 0
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   148
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   149
#define OTV_ENTER                                                            \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   150
          FT_BEGIN_STMNT                                                     \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   151
            valid->debug_indent += 2;                                        \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   152
            FT_TRACE4(( "%*.s", valid->debug_indent, 0 ));                   \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   153
            FT_TRACE4(( "%s table\n",                                        \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   154
                        valid->debug_function_name[valid->nesting_level] )); \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   155
          FT_END_STMNT
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   156
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   157
#define OTV_NAME_ENTER( name )                             \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   158
          FT_BEGIN_STMNT                                   \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   159
            valid->debug_indent += 2;                      \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   160
            FT_TRACE4(( "%*.s", valid->debug_indent, 0 )); \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   161
            FT_TRACE4(( "%s table\n", name ));             \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   162
          FT_END_STMNT
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   163
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   164
#define OTV_EXIT  valid->debug_indent -= 2
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   165
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   166
#define OTV_TRACE( s )                                     \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   167
          FT_BEGIN_STMNT                                   \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   168
            FT_TRACE4(( "%*.s", valid->debug_indent, 0 )); \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   169
            FT_TRACE4( s );                                \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   170
          FT_END_STMNT
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   171
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   172
#else   /* !FT_DEBUG_LEVEL_TRACE */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   173
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   174
#define OTV_NEST1( x )                            \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   175
          FT_BEGIN_STMNT                          \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   176
            valid->nesting_level = 0;             \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   177
            valid->func[0]       = OTV_FUNC( x ); \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   178
          FT_END_STMNT
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   179
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   180
#define OTV_NEST2( x, y )                         \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   181
          FT_BEGIN_STMNT                          \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   182
            valid->nesting_level = 0;             \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   183
            valid->func[0]       = OTV_FUNC( x ); \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   184
            valid->func[1]       = OTV_FUNC( y ); \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   185
          FT_END_STMNT
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   186
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   187
#define OTV_NEST3( x, y, z )                      \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   188
          FT_BEGIN_STMNT                          \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   189
            valid->nesting_level = 0;             \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   190
            valid->func[0]       = OTV_FUNC( x ); \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   191
            valid->func[1]       = OTV_FUNC( y ); \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   192
            valid->func[2]       = OTV_FUNC( z ); \
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   193
          FT_END_STMNT
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   194
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   195
#define OTV_INIT                do { } while ( 0 )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   196
#define OTV_ENTER               do { } while ( 0 )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   197
#define OTV_NAME_ENTER( name )  do { } while ( 0 )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   198
#define OTV_EXIT                do { } while ( 0 )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   199
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   200
#define OTV_TRACE( s )          do { } while ( 0 )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   201
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   202
#endif  /* !FT_DEBUG_LEVEL_TRACE */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   203
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   204
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   205
#define OTV_RUN  valid->func[0]
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   206
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   207
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   208
  /*************************************************************************/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   209
  /*************************************************************************/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   210
  /*****                                                               *****/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   211
  /*****                       COVERAGE TABLE                          *****/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   212
  /*****                                                               *****/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   213
  /*************************************************************************/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   214
  /*************************************************************************/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   215
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   216
  FT_LOCAL( void )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   217
  otv_Coverage_validate( FT_Bytes       table,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   218
                         OTV_Validator  valid,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   219
                         FT_Int         expected_count );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   220
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   221
  /* return first covered glyph */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   222
  FT_LOCAL( FT_UInt )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   223
  otv_Coverage_get_first( FT_Bytes  table );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   224
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   225
  /* return last covered glyph */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   226
  FT_LOCAL( FT_UInt )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   227
  otv_Coverage_get_last( FT_Bytes  table );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   228
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   229
  /* return number of covered glyphs */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   230
  FT_LOCAL( FT_UInt )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   231
  otv_Coverage_get_count( FT_Bytes  table );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   232
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   233
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   234
  /*************************************************************************/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   235
  /*************************************************************************/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   236
  /*****                                                               *****/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   237
  /*****                  CLASS DEFINITION TABLE                       *****/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   238
  /*****                                                               *****/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   239
  /*************************************************************************/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   240
  /*************************************************************************/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   241
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   242
  FT_LOCAL( void )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   243
  otv_ClassDef_validate( FT_Bytes       table,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   244
                         OTV_Validator  valid );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   245
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   246
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   247
  /*************************************************************************/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   248
  /*************************************************************************/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   249
  /*****                                                               *****/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   250
  /*****                      DEVICE TABLE                             *****/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   251
  /*****                                                               *****/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   252
  /*************************************************************************/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   253
  /*************************************************************************/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   254
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   255
  FT_LOCAL( void )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   256
  otv_Device_validate( FT_Bytes       table,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   257
                       OTV_Validator  valid );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   258
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   259
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   260
  /*************************************************************************/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   261
  /*************************************************************************/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   262
  /*****                                                               *****/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   263
  /*****                           LOOKUPS                             *****/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   264
  /*****                                                               *****/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   265
  /*************************************************************************/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   266
  /*************************************************************************/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   267
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   268
  FT_LOCAL( void )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   269
  otv_Lookup_validate( FT_Bytes       table,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   270
                       OTV_Validator  valid );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   271
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   272
  FT_LOCAL( void )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   273
  otv_LookupList_validate( FT_Bytes       table,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   274
                           OTV_Validator  valid );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   275
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   276
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   277
  /*************************************************************************/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   278
  /*************************************************************************/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   279
  /*****                                                               *****/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   280
  /*****                        FEATURES                               *****/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   281
  /*****                                                               *****/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   282
  /*************************************************************************/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   283
  /*************************************************************************/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   284
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   285
  FT_LOCAL( void )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   286
  otv_Feature_validate( FT_Bytes       table,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   287
                        OTV_Validator  valid );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   288
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   289
  /* lookups must already be validated */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   290
  FT_LOCAL( void )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   291
  otv_FeatureList_validate( FT_Bytes       table,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   292
                            FT_Bytes       lookups,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   293
                            OTV_Validator  valid );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   294
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   295
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   296
  /*************************************************************************/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   297
  /*************************************************************************/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   298
  /*****                                                               *****/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   299
  /*****                       LANGUAGE SYSTEM                         *****/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   300
  /*****                                                               *****/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   301
  /*************************************************************************/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   302
  /*************************************************************************/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   303
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   304
  FT_LOCAL( void )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   305
  otv_LangSys_validate( FT_Bytes       table,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   306
                        OTV_Validator  valid );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   307
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   308
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   309
  /*************************************************************************/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   310
  /*************************************************************************/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   311
  /*****                                                               *****/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   312
  /*****                           SCRIPTS                             *****/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   313
  /*****                                                               *****/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   314
  /*************************************************************************/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   315
  /*************************************************************************/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   316
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   317
  FT_LOCAL( void )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   318
  otv_Script_validate( FT_Bytes       table,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   319
                       OTV_Validator  valid );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   320
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   321
  /* features must already be validated */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   322
  FT_LOCAL( void )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   323
  otv_ScriptList_validate( FT_Bytes       table,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   324
                           FT_Bytes       features,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   325
                           OTV_Validator  valid );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   326
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   327
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   328
  /*************************************************************************/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   329
  /*************************************************************************/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   330
  /*****                                                               *****/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   331
  /*****                      UTILITY FUNCTIONS                        *****/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   332
  /*****                                                               *****/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   333
  /*************************************************************************/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   334
  /*************************************************************************/
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   335
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   336
#define ChainPosClassSetFunc  otv_x_Ox
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   337
#define ChainPosRuleSetFunc   otv_x_Ox
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   338
#define ChainSubClassSetFunc  otv_x_Ox
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   339
#define ChainSubRuleSetFunc   otv_x_Ox
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   340
#define JstfLangSysFunc       otv_x_Ox
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   341
#define JstfMaxFunc           otv_x_Ox
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   342
#define LigGlyphFunc          otv_x_Ox
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   343
#define LigatureArrayFunc     otv_x_Ox
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   344
#define LigatureSetFunc       otv_x_Ox
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   345
#define PosClassSetFunc       otv_x_Ox
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   346
#define PosRuleSetFunc        otv_x_Ox
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   347
#define SubClassSetFunc       otv_x_Ox
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   348
#define SubRuleSetFunc        otv_x_Ox
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   349
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   350
  FT_LOCAL( void )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   351
  otv_x_Ox ( FT_Bytes       table,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   352
             OTV_Validator  valid );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   353
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   354
#define AlternateSubstFormat1Func     otv_u_C_x_Ox
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   355
#define ChainContextPosFormat1Func    otv_u_C_x_Ox
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   356
#define ChainContextSubstFormat1Func  otv_u_C_x_Ox
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   357
#define ContextPosFormat1Func         otv_u_C_x_Ox
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   358
#define ContextSubstFormat1Func       otv_u_C_x_Ox
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   359
#define LigatureSubstFormat1Func      otv_u_C_x_Ox
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   360
#define MultipleSubstFormat1Func      otv_u_C_x_Ox
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   361
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   362
  FT_LOCAL( void )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   363
  otv_u_C_x_Ox( FT_Bytes       table,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   364
                OTV_Validator  valid );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   365
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   366
#define AlternateSetFunc     otv_x_ux
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   367
#define AttachPointFunc      otv_x_ux
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   368
#define ExtenderGlyphFunc    otv_x_ux
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   369
#define JstfGPOSModListFunc  otv_x_ux
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   370
#define JstfGSUBModListFunc  otv_x_ux
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   371
#define SequenceFunc         otv_x_ux
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   372
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   373
  FT_LOCAL( void )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   374
  otv_x_ux( FT_Bytes       table,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   375
            OTV_Validator  valid );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   376
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   377
#define PosClassRuleFunc  otv_x_y_ux_sy
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   378
#define PosRuleFunc       otv_x_y_ux_sy
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   379
#define SubClassRuleFunc  otv_x_y_ux_sy
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   380
#define SubRuleFunc       otv_x_y_ux_sy
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   381
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   382
  FT_LOCAL( void )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   383
  otv_x_y_ux_sy( FT_Bytes       table,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   384
                 OTV_Validator  valid );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   385
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   386
#define ChainPosClassRuleFunc  otv_x_ux_y_uy_z_uz_p_sp
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   387
#define ChainPosRuleFunc       otv_x_ux_y_uy_z_uz_p_sp
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   388
#define ChainSubClassRuleFunc  otv_x_ux_y_uy_z_uz_p_sp
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   389
#define ChainSubRuleFunc       otv_x_ux_y_uy_z_uz_p_sp
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   390
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   391
  FT_LOCAL( void )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   392
  otv_x_ux_y_uy_z_uz_p_sp( FT_Bytes       table,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   393
                           OTV_Validator  valid );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   394
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   395
#define ContextPosFormat2Func    otv_u_O_O_x_Onx
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   396
#define ContextSubstFormat2Func  otv_u_O_O_x_Onx
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   397
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   398
  FT_LOCAL( void )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   399
  otv_u_O_O_x_Onx( FT_Bytes       table,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   400
                   OTV_Validator  valid );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   401
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   402
#define ContextPosFormat3Func    otv_u_x_y_Ox_sy
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   403
#define ContextSubstFormat3Func  otv_u_x_y_Ox_sy
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   404
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   405
  FT_LOCAL( void )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   406
  otv_u_x_y_Ox_sy( FT_Bytes       table,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   407
                   OTV_Validator  valid );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   408
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   409
#define ChainContextPosFormat2Func    otv_u_O_O_O_O_x_Onx
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   410
#define ChainContextSubstFormat2Func  otv_u_O_O_O_O_x_Onx
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   411
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   412
  FT_LOCAL( void )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   413
  otv_u_O_O_O_O_x_Onx( FT_Bytes       table,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   414
                       OTV_Validator  valid );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   415
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   416
#define ChainContextPosFormat3Func    otv_u_x_Ox_y_Oy_z_Oz_p_sp
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   417
#define ChainContextSubstFormat3Func  otv_u_x_Ox_y_Oy_z_Oz_p_sp
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   418
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   419
  FT_LOCAL( void )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   420
  otv_u_x_Ox_y_Oy_z_Oz_p_sp( FT_Bytes       table,
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   421
                             OTV_Validator  valid );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   422
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   423
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   424
  FT_LOCAL( FT_UInt )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   425
  otv_GSUBGPOS_get_Lookup_count( FT_Bytes  table );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   426
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   427
  FT_LOCAL( FT_UInt )
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   428
  otv_GSUBGPOS_have_MarkAttachmentType_flag( FT_Bytes  table );
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   429
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   430
 /* */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   431
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   432
FT_END_HEADER
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   433
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   434
#endif /* __OTVCOMMN_H__ */
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   435
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   436
88f2e05288ba aaand let's add freetype as well while we are at it
koda
parents:
diff changeset
   437
/* END */