1 /***************************************************************************/
2 /*                                                                         */
3 /*  gxvfeat.h                                                              */
4 /*                                                                         */
5 /*    TrueTypeGX/AAT feat table validation (specification).                */
6 /*                                                                         */
7 /*  Copyright 2004, 2005 by suzuki toshiya, Masatake YAMATO, Red Hat K.K., */
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 /* gxvalid is derived from both gxlayout module and otvalid module.        */
21 /* Development of gxlayout is supported by the Information-technology      */
22 /* Promotion Agency(IPA), Japan.                                           */
23 /*                                                                         */
24 /***************************************************************************/
25 
26 
27 #ifndef __GXVFEAT_H__
28 #define __GXVFEAT_H__
29 
30 
31 #include "gxvalid.h"
32 #include "gxvcommn.h"
33 
34 
35   /*************************************************************************/
36   /*************************************************************************/
37   /*****                                                               *****/
38   /*****                Registry predefined by Apple                   *****/
39   /*****                                                               *****/
40   /*************************************************************************/
41   /*************************************************************************/
42 
43   /* TODO: More compact format */
44   typedef struct  GXV_Feature_RegistryRec_
45   {
46     FT_Bool  existence;
47     FT_Bool  apple_reserved;
48     FT_Bool  exclusive;
49     FT_Byte  nSettings;
50 
51   } GX_Feature_RegistryRec;
52 
53 
54 #define gxv_feat_registry_length                  \
55           ( sizeof ( gxv_feat_registry ) /        \
56               sizeof ( GX_Feature_RegistryRec ) )
57 
58 
59   static GX_Feature_RegistryRec  gxv_feat_registry[] =
60   {
61     /* Generated from gxvfgen.c */
62     {1, 0, 0,  1},   /* All Typographic Features */
63     {1, 0, 0,  8},   /* Ligatures */
64     {1, 0, 1,  3},   /* Cursive Connection */
65     {1, 0, 1,  6},   /* Letter Case */
66     {1, 0, 0,  1},   /* Vertical Substitution */
67     {1, 0, 0,  1},   /* Linguistic Rearrangement */
68     {1, 0, 1,  2},   /* Number Spacing */
69     {1, 1, 0,  0},   /* Apple Reserved 1 */
70     {1, 0, 0,  5},   /* Smart Swashes */
71     {1, 0, 1,  3},   /* Diacritics */
72     {1, 0, 1,  4},   /* Vertical Position */
73     {1, 0, 1,  3},   /* Fractions */
74     {1, 1, 0,  0},   /* Apple Reserved 2 */
75     {1, 0, 0,  1},   /* Overlapping Characters */
76     {1, 0, 0,  6},   /* Typographic Extras */
77     {1, 0, 0,  5},   /* Mathematical Extras */
78     {1, 0, 1,  7},   /* Ornament Sets */
79     {1, 0, 1,  1},   /* Character Alternatives */
80     {1, 0, 1,  5},   /* Design Complexity */
81     {1, 0, 1,  6},   /* Style Options */
82     {1, 0, 1, 11},   /* Character Shape */
83     {1, 0, 1,  2},   /* Number Case */
84     {1, 0, 1,  4},   /* Text Spacing */
85     {1, 0, 1, 10},   /* Transliteration */
86     {1, 0, 1,  9},   /* Annotation */
87     {1, 0, 1,  2},   /* Kana Spacing */
88     {1, 0, 1,  2},   /* Ideographic Spacing */
89     {0, 0, 0,  0},   /* __EMPTY__ */
90     {0, 0, 0,  0},   /* __EMPTY__ */
91     {0, 0, 0,  0},   /* __EMPTY__ */
92     {0, 0, 0,  0},   /* __EMPTY__ */
93     {0, 0, 0,  0},   /* __EMPTY__ */
94     {0, 0, 0,  0},   /* __EMPTY__ */
95     {0, 0, 0,  0},   /* __EMPTY__ */
96     {0, 0, 0,  0},   /* __EMPTY__ */
97     {0, 0, 0,  0},   /* __EMPTY__ */
98     {0, 0, 0,  0},   /* __EMPTY__ */
99     {0, 0, 0,  0},   /* __EMPTY__ */
100     {0, 0, 0,  0},   /* __EMPTY__ */
101     {0, 0, 0,  0},   /* __EMPTY__ */
102     {0, 0, 0,  0},   /* __EMPTY__ */
103     {0, 0, 0,  0},   /* __EMPTY__ */
104     {0, 0, 0,  0},   /* __EMPTY__ */
105     {0, 0, 0,  0},   /* __EMPTY__ */
106     {0, 0, 0,  0},   /* __EMPTY__ */
107     {0, 0, 0,  0},   /* __EMPTY__ */
108     {0, 0, 0,  0},   /* __EMPTY__ */
109     {0, 0, 0,  0},   /* __EMPTY__ */
110     {0, 0, 0,  0},   /* __EMPTY__ */
111     {0, 0, 0,  0},   /* __EMPTY__ */
112     {0, 0, 0,  0},   /* __EMPTY__ */
113     {0, 0, 0,  0},   /* __EMPTY__ */
114     {0, 0, 0,  0},   /* __EMPTY__ */
115     {0, 0, 0,  0},   /* __EMPTY__ */
116     {0, 0, 0,  0},   /* __EMPTY__ */
117     {0, 0, 0,  0},   /* __EMPTY__ */
118     {0, 0, 0,  0},   /* __EMPTY__ */
119     {0, 0, 0,  0},   /* __EMPTY__ */
120     {0, 0, 0,  0},   /* __EMPTY__ */
121     {0, 0, 0,  0},   /* __EMPTY__ */
122     {0, 0, 0,  0},   /* __EMPTY__ */
123     {0, 0, 0,  0},   /* __EMPTY__ */
124     {0, 0, 0,  0},   /* __EMPTY__ */
125     {0, 0, 0,  0},   /* __EMPTY__ */
126     {0, 0, 0,  0},   /* __EMPTY__ */
127     {0, 0, 0,  0},   /* __EMPTY__ */
128     {0, 0, 0,  0},   /* __EMPTY__ */
129     {0, 0, 0,  0},   /* __EMPTY__ */
130     {0, 0, 0,  0},   /* __EMPTY__ */
131     {0, 0, 0,  0},   /* __EMPTY__ */
132     {0, 0, 0,  0},   /* __EMPTY__ */
133     {0, 0, 0,  0},   /* __EMPTY__ */
134     {0, 0, 0,  0},   /* __EMPTY__ */
135     {0, 0, 0,  0},   /* __EMPTY__ */
136     {0, 0, 0,  0},   /* __EMPTY__ */
137     {0, 0, 0,  0},   /* __EMPTY__ */
138     {0, 0, 0,  0},   /* __EMPTY__ */
139     {0, 0, 0,  0},   /* __EMPTY__ */
140     {0, 0, 0,  0},   /* __EMPTY__ */
141     {0, 0, 0,  0},   /* __EMPTY__ */
142     {0, 0, 0,  0},   /* __EMPTY__ */
143     {0, 0, 0,  0},   /* __EMPTY__ */
144     {0, 0, 0,  0},   /* __EMPTY__ */
145     {0, 0, 0,  0},   /* __EMPTY__ */
146     {0, 0, 0,  0},   /* __EMPTY__ */
147     {0, 0, 0,  0},   /* __EMPTY__ */
148     {0, 0, 0,  0},   /* __EMPTY__ */
149     {0, 0, 0,  0},   /* __EMPTY__ */
150     {0, 0, 0,  0},   /* __EMPTY__ */
151     {0, 0, 0,  0},   /* __EMPTY__ */
152     {0, 0, 0,  0},   /* __EMPTY__ */
153     {0, 0, 0,  0},   /* __EMPTY__ */
154     {0, 0, 0,  0},   /* __EMPTY__ */
155     {0, 0, 0,  0},   /* __EMPTY__ */
156     {0, 0, 0,  0},   /* __EMPTY__ */
157     {0, 0, 0,  0},   /* __EMPTY__ */
158     {0, 0, 0,  0},   /* __EMPTY__ */
159     {0, 0, 0,  0},   /* __EMPTY__ */
160     {0, 0, 0,  0},   /* __EMPTY__ */
161     {0, 0, 0,  0},   /* __EMPTY__ */
162     {1, 0, 1,  4},   /* Text Spacing */
163     {1, 0, 1,  2},   /* Kana Spacing */
164     {1, 0, 1,  2},   /* Ideographic Spacing */
165     {1, 0, 1,  4},   /* CJK Roman Spacing */
166   };
167 
168 
169 #endif /* __GXVFEAT_H__ */
170 
171 
172 /* END */
173