xref: /inferno-os/libfreetype/otlcommn.h (revision 37da2899f40661e3e9631e497da8dc59b971cbd0)
1*37da2899SCharles.Forsyth /***************************************************************************/
2*37da2899SCharles.Forsyth /*                                                                         */
3*37da2899SCharles.Forsyth /*  otlcommn.h                                                             */
4*37da2899SCharles.Forsyth /*                                                                         */
5*37da2899SCharles.Forsyth /*    OpenType layout support, common tables (specification).              */
6*37da2899SCharles.Forsyth /*                                                                         */
7*37da2899SCharles.Forsyth /*  Copyright 2002 by                                                      */
8*37da2899SCharles.Forsyth /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
9*37da2899SCharles.Forsyth /*                                                                         */
10*37da2899SCharles.Forsyth /*  This file is part of the FreeType project, and may only be used,       */
11*37da2899SCharles.Forsyth /*  modified, and distributed under the terms of the FreeType project      */
12*37da2899SCharles.Forsyth /*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
13*37da2899SCharles.Forsyth /*  this file you indicate that you have read the license and              */
14*37da2899SCharles.Forsyth /*  understand and accept it fully.                                        */
15*37da2899SCharles.Forsyth /*                                                                         */
16*37da2899SCharles.Forsyth /***************************************************************************/
17*37da2899SCharles.Forsyth 
18*37da2899SCharles.Forsyth 
19*37da2899SCharles.Forsyth #ifndef __OTLCOMMN_H__
20*37da2899SCharles.Forsyth #define __OTLCOMMN_H__
21*37da2899SCharles.Forsyth 
22*37da2899SCharles.Forsyth #include "otlayout.h"
23*37da2899SCharles.Forsyth 
24*37da2899SCharles.Forsyth OTL_BEGIN_HEADER
25*37da2899SCharles.Forsyth 
26*37da2899SCharles.Forsyth 
27*37da2899SCharles.Forsyth   /*************************************************************************/
28*37da2899SCharles.Forsyth   /*************************************************************************/
29*37da2899SCharles.Forsyth   /*****                                                               *****/
30*37da2899SCharles.Forsyth   /*****                       COVERAGE TABLE                          *****/
31*37da2899SCharles.Forsyth   /*****                                                               *****/
32*37da2899SCharles.Forsyth   /*************************************************************************/
33*37da2899SCharles.Forsyth   /*************************************************************************/
34*37da2899SCharles.Forsyth 
35*37da2899SCharles.Forsyth   /* validate coverage table */
36*37da2899SCharles.Forsyth   OTL_LOCALDEF( void )
37*37da2899SCharles.Forsyth   otl_coverage_validate( OTL_Bytes      base,
38*37da2899SCharles.Forsyth                          OTL_Validator  valid );
39*37da2899SCharles.Forsyth 
40*37da2899SCharles.Forsyth   /* return number of covered glyphs */
41*37da2899SCharles.Forsyth   OTL_LOCALDEF( OTL_UInt )
42*37da2899SCharles.Forsyth   otl_coverage_get_count( OTL_Bytes  base );
43*37da2899SCharles.Forsyth 
44*37da2899SCharles.Forsyth   /* Return the coverage index corresponding to a glyph glyph index. */
45*37da2899SCharles.Forsyth   /* Return -1 if the glyph isn't covered.                           */
46*37da2899SCharles.Forsyth   OTL_LOCALDEF( OTL_Int )
47*37da2899SCharles.Forsyth   otl_coverage_get_index( OTL_Bytes  base,
48*37da2899SCharles.Forsyth                           OTL_UInt   glyph_index );
49*37da2899SCharles.Forsyth 
50*37da2899SCharles.Forsyth 
51*37da2899SCharles.Forsyth   /*************************************************************************/
52*37da2899SCharles.Forsyth   /*************************************************************************/
53*37da2899SCharles.Forsyth   /*****                                                               *****/
54*37da2899SCharles.Forsyth   /*****                  CLASS DEFINITION TABLE                       *****/
55*37da2899SCharles.Forsyth   /*****                                                               *****/
56*37da2899SCharles.Forsyth   /*************************************************************************/
57*37da2899SCharles.Forsyth   /*************************************************************************/
58*37da2899SCharles.Forsyth 
59*37da2899SCharles.Forsyth   /* validate class definition table */
60*37da2899SCharles.Forsyth   OTL_LOCALDEF( void )
61*37da2899SCharles.Forsyth   otl_class_definition_validate( OTL_Bytes      table,
62*37da2899SCharles.Forsyth                                  OTL_Validator  valid );
63*37da2899SCharles.Forsyth 
64*37da2899SCharles.Forsyth   /* return class value for a given glyph index */
65*37da2899SCharles.Forsyth   OTL_LOCALDEF( OTL_UInt )
66*37da2899SCharles.Forsyth   otl_class_definition_get_value( OTL_Bytes  table,
67*37da2899SCharles.Forsyth                                   OTL_UInt   glyph_index );
68*37da2899SCharles.Forsyth 
69*37da2899SCharles.Forsyth 
70*37da2899SCharles.Forsyth   /*************************************************************************/
71*37da2899SCharles.Forsyth   /*************************************************************************/
72*37da2899SCharles.Forsyth   /*****                                                               *****/
73*37da2899SCharles.Forsyth   /*****                      DEVICE TABLE                             *****/
74*37da2899SCharles.Forsyth   /*****                                                               *****/
75*37da2899SCharles.Forsyth   /*************************************************************************/
76*37da2899SCharles.Forsyth   /*************************************************************************/
77*37da2899SCharles.Forsyth 
78*37da2899SCharles.Forsyth   /* validate a device table */
79*37da2899SCharles.Forsyth   OTL_LOCALDEF( void )
80*37da2899SCharles.Forsyth   otl_device_table_validate( OTL_Bytes      table,
81*37da2899SCharles.Forsyth                              OTL_Validator  valid );
82*37da2899SCharles.Forsyth 
83*37da2899SCharles.Forsyth   /* return a device table's first size */
84*37da2899SCharles.Forsyth   OTL_LOCALDEF( OTL_UInt )
85*37da2899SCharles.Forsyth   otl_device_table_get_start( OTL_Bytes  table );
86*37da2899SCharles.Forsyth 
87*37da2899SCharles.Forsyth   /* return a device table's last size */
88*37da2899SCharles.Forsyth   OTL_LOCALDEF( OTL_UInt )
89*37da2899SCharles.Forsyth   otl_device_table_get_end( OTL_Bytes  table );
90*37da2899SCharles.Forsyth 
91*37da2899SCharles.Forsyth   /* return pixel adjustment for a given size */
92*37da2899SCharles.Forsyth   OTL_LOCALDEF( OTL_Int )
93*37da2899SCharles.Forsyth   otl_device_table_get_delta( OTL_Bytes  table,
94*37da2899SCharles.Forsyth                               OTL_UInt   size );
95*37da2899SCharles.Forsyth 
96*37da2899SCharles.Forsyth 
97*37da2899SCharles.Forsyth   /*************************************************************************/
98*37da2899SCharles.Forsyth   /*************************************************************************/
99*37da2899SCharles.Forsyth   /*****                                                               *****/
100*37da2899SCharles.Forsyth   /*****                           LOOKUPS                             *****/
101*37da2899SCharles.Forsyth   /*****                                                               *****/
102*37da2899SCharles.Forsyth   /*************************************************************************/
103*37da2899SCharles.Forsyth   /*************************************************************************/
104*37da2899SCharles.Forsyth 
105*37da2899SCharles.Forsyth   /* validate lookup table */
106*37da2899SCharles.Forsyth   OTL_LOCALDEF( void )
107*37da2899SCharles.Forsyth   otl_lookup_validate( OTL_Bytes      table,
108*37da2899SCharles.Forsyth                        OTL_Validator  valid );
109*37da2899SCharles.Forsyth 
110*37da2899SCharles.Forsyth   /* return number of sub-tables in a lookup */
111*37da2899SCharles.Forsyth   OTL_LOCALDEF( OTL_UInt )
112*37da2899SCharles.Forsyth   otl_lookup_get_count( OTL_Bytes  table );
113*37da2899SCharles.Forsyth 
114*37da2899SCharles.Forsyth 
115*37da2899SCharles.Forsyth   /* return lookup sub-table */
116*37da2899SCharles.Forsyth   OTL_LOCALDEF( OTL_Bytes )
117*37da2899SCharles.Forsyth   otl_lookup_get_table( OTL_Bytes  table,
118*37da2899SCharles.Forsyth                         OTL_UInt   idx );
119*37da2899SCharles.Forsyth 
120*37da2899SCharles.Forsyth 
121*37da2899SCharles.Forsyth   /*************************************************************************/
122*37da2899SCharles.Forsyth   /*************************************************************************/
123*37da2899SCharles.Forsyth   /*****                                                               *****/
124*37da2899SCharles.Forsyth   /*****                      LOOKUP LISTS                             *****/
125*37da2899SCharles.Forsyth   /*****                                                               *****/
126*37da2899SCharles.Forsyth   /*************************************************************************/
127*37da2899SCharles.Forsyth   /*************************************************************************/
128*37da2899SCharles.Forsyth 
129*37da2899SCharles.Forsyth   /* validate lookup list */
130*37da2899SCharles.Forsyth   OTL_LOCALDEF( void )
131*37da2899SCharles.Forsyth   otl_lookup_list_validate( OTL_Bytes      table,
132*37da2899SCharles.Forsyth                             OTL_Validator  valid );
133*37da2899SCharles.Forsyth 
134*37da2899SCharles.Forsyth   /* return number of lookups in list */
135*37da2899SCharles.Forsyth   OTL_LOCALDEF( OTL_UInt )
136*37da2899SCharles.Forsyth   otl_lookup_list_get_count( OTL_Bytes  table );
137*37da2899SCharles.Forsyth 
138*37da2899SCharles.Forsyth   /* return a given lookup from a list */
139*37da2899SCharles.Forsyth   OTL_LOCALDEF( OTL_Bytes )
140*37da2899SCharles.Forsyth   otl_lookup_list_get_lookup( OTL_Bytes  table,
141*37da2899SCharles.Forsyth                               OTL_UInt   idx );
142*37da2899SCharles.Forsyth 
143*37da2899SCharles.Forsyth   /* return lookup sub-table from a list */
144*37da2899SCharles.Forsyth   OTL_LOCALDEF( OTL_Bytes )
145*37da2899SCharles.Forsyth   otl_lookup_list_get_table( OTL_Bytes  table,
146*37da2899SCharles.Forsyth                              OTL_UInt   lookup_index,
147*37da2899SCharles.Forsyth                              OTL_UInt   table_index );
148*37da2899SCharles.Forsyth 
149*37da2899SCharles.Forsyth   /* iterate over lookup list */
150*37da2899SCharles.Forsyth   OTL_LOCALDEF( void )
151*37da2899SCharles.Forsyth   otl_lookup_list_foreach( OTL_Bytes        table,
152*37da2899SCharles.Forsyth                            OTL_ForeachFunc  func,
153*37da2899SCharles.Forsyth                            OTL_Pointer      func_data );
154*37da2899SCharles.Forsyth 
155*37da2899SCharles.Forsyth 
156*37da2899SCharles.Forsyth   /*************************************************************************/
157*37da2899SCharles.Forsyth   /*************************************************************************/
158*37da2899SCharles.Forsyth   /*****                                                               *****/
159*37da2899SCharles.Forsyth   /*****                        FEATURES                               *****/
160*37da2899SCharles.Forsyth   /*****                                                               *****/
161*37da2899SCharles.Forsyth   /*************************************************************************/
162*37da2899SCharles.Forsyth   /*************************************************************************/
163*37da2899SCharles.Forsyth 
164*37da2899SCharles.Forsyth   /* validate feature table */
165*37da2899SCharles.Forsyth   OTL_LOCALDEF( void )
166*37da2899SCharles.Forsyth   otl_feature_validate( OTL_Bytes      table,
167*37da2899SCharles.Forsyth                         OTL_Validator  valid );
168*37da2899SCharles.Forsyth 
169*37da2899SCharles.Forsyth   /* return feature's lookup count */
170*37da2899SCharles.Forsyth   OTL_LOCALDEF( OTL_UInt )
171*37da2899SCharles.Forsyth   otl_feature_get_count( OTL_Bytes  table );
172*37da2899SCharles.Forsyth 
173*37da2899SCharles.Forsyth   /* get several lookups indices from a feature. returns the number of */
174*37da2899SCharles.Forsyth   /* lookups grabbed                                                   */
175*37da2899SCharles.Forsyth   OTL_LOCALDEF( OTL_UInt )
176*37da2899SCharles.Forsyth   otl_feature_get_lookups( OTL_Bytes  table,
177*37da2899SCharles.Forsyth                            OTL_UInt   start,
178*37da2899SCharles.Forsyth                            OTL_UInt   count,
179*37da2899SCharles.Forsyth                            OTL_UInt  *lookups );
180*37da2899SCharles.Forsyth 
181*37da2899SCharles.Forsyth 
182*37da2899SCharles.Forsyth   /*************************************************************************/
183*37da2899SCharles.Forsyth   /*************************************************************************/
184*37da2899SCharles.Forsyth   /*****                                                               *****/
185*37da2899SCharles.Forsyth   /*****                        FEATURE LIST                           *****/
186*37da2899SCharles.Forsyth   /*****                                                               *****/
187*37da2899SCharles.Forsyth   /*************************************************************************/
188*37da2899SCharles.Forsyth   /*************************************************************************/
189*37da2899SCharles.Forsyth 
190*37da2899SCharles.Forsyth   /* validate a feature list */
191*37da2899SCharles.Forsyth   OTL_LOCALDEF( void )
192*37da2899SCharles.Forsyth   otl_feature_list_validate( OTL_Bytes      table,
193*37da2899SCharles.Forsyth                              OTL_Validator  valid );
194*37da2899SCharles.Forsyth 
195*37da2899SCharles.Forsyth   /* return number of features in list */
196*37da2899SCharles.Forsyth   OTL_LOCALDEF( OTL_UInt )
197*37da2899SCharles.Forsyth   otl_feature_list_get_count( OTL_Bytes  table );
198*37da2899SCharles.Forsyth 
199*37da2899SCharles.Forsyth 
200*37da2899SCharles.Forsyth   /* return a given feature from a list */
201*37da2899SCharles.Forsyth   OTL_LOCALDEF( OTL_Bytes )
202*37da2899SCharles.Forsyth   otl_feature_list_get_feature( OTL_Bytes  table,
203*37da2899SCharles.Forsyth                                 OTL_UInt   idx );
204*37da2899SCharles.Forsyth 
205*37da2899SCharles.Forsyth   /* iterate over all features in a list */
206*37da2899SCharles.Forsyth   OTL_LOCALDEF( void )
207*37da2899SCharles.Forsyth   otl_feature_list_foreach( OTL_Bytes        table,
208*37da2899SCharles.Forsyth                             OTL_ForeachFunc  func,
209*37da2899SCharles.Forsyth                             OTL_Pointer      func_data );
210*37da2899SCharles.Forsyth 
211*37da2899SCharles.Forsyth 
212*37da2899SCharles.Forsyth   /*************************************************************************/
213*37da2899SCharles.Forsyth   /*************************************************************************/
214*37da2899SCharles.Forsyth   /*****                                                               *****/
215*37da2899SCharles.Forsyth   /*****                       LANGUAGE SYSTEM                         *****/
216*37da2899SCharles.Forsyth   /*****                                                               *****/
217*37da2899SCharles.Forsyth   /*************************************************************************/
218*37da2899SCharles.Forsyth   /*************************************************************************/
219*37da2899SCharles.Forsyth 
220*37da2899SCharles.Forsyth   OTL_LOCAL( void )
221*37da2899SCharles.Forsyth   otl_lang_validate( OTL_Bytes      table,
222*37da2899SCharles.Forsyth                      OTL_Validator  valid );
223*37da2899SCharles.Forsyth 
224*37da2899SCharles.Forsyth 
225*37da2899SCharles.Forsyth   OTL_LOCAL( OTL_UInt )
226*37da2899SCharles.Forsyth   otl_lang_get_req_feature( OTL_Bytes  table );
227*37da2899SCharles.Forsyth 
228*37da2899SCharles.Forsyth 
229*37da2899SCharles.Forsyth   OTL_LOCAL( OTL_UInt )
230*37da2899SCharles.Forsyth   otl_lang_get_count( OTL_Bytes  table );
231*37da2899SCharles.Forsyth 
232*37da2899SCharles.Forsyth 
233*37da2899SCharles.Forsyth   OTL_LOCAL( OTL_UInt )
234*37da2899SCharles.Forsyth   otl_lang_get_features( OTL_Bytes  table,
235*37da2899SCharles.Forsyth                          OTL_UInt   start,
236*37da2899SCharles.Forsyth                          OTL_UInt   count,
237*37da2899SCharles.Forsyth                          OTL_UInt  *features );
238*37da2899SCharles.Forsyth 
239*37da2899SCharles.Forsyth 
240*37da2899SCharles.Forsyth   /*************************************************************************/
241*37da2899SCharles.Forsyth   /*************************************************************************/
242*37da2899SCharles.Forsyth   /*****                                                               *****/
243*37da2899SCharles.Forsyth   /*****                           SCRIPTS                             *****/
244*37da2899SCharles.Forsyth   /*****                                                               *****/
245*37da2899SCharles.Forsyth   /*************************************************************************/
246*37da2899SCharles.Forsyth   /*************************************************************************/
247*37da2899SCharles.Forsyth 
248*37da2899SCharles.Forsyth   OTL_LOCAL( void )
249*37da2899SCharles.Forsyth   otl_script_list_validate( OTL_Bytes          list,
250*37da2899SCharles.Forsyth                             OTL_Validator      valid );
251*37da2899SCharles.Forsyth 
252*37da2899SCharles.Forsyth   OTL_LOCAL( OTL_Bytes )
253*37da2899SCharles.Forsyth   otl_script_list_get_script( OTL_Bytes  table );
254*37da2899SCharles.Forsyth 
255*37da2899SCharles.Forsyth 
256*37da2899SCharles.Forsyth   /*************************************************************************/
257*37da2899SCharles.Forsyth   /*************************************************************************/
258*37da2899SCharles.Forsyth   /*****                                                               *****/
259*37da2899SCharles.Forsyth   /*****                         LOOKUP LISTS                          *****/
260*37da2899SCharles.Forsyth   /*****                                                               *****/
261*37da2899SCharles.Forsyth   /*************************************************************************/
262*37da2899SCharles.Forsyth   /*************************************************************************/
263*37da2899SCharles.Forsyth 
264*37da2899SCharles.Forsyth   OTL_LOCAL( void )
265*37da2899SCharles.Forsyth   otl_lookup_list_validate( OTL_Bytes          list,
266*37da2899SCharles.Forsyth                             OTL_UInt           type_count,
267*37da2899SCharles.Forsyth                             OTL_ValidateFunc*  type_funcs,
268*37da2899SCharles.Forsyth                             OTL_Validator      valid );
269*37da2899SCharles.Forsyth 
270*37da2899SCharles.Forsyth  /* */
271*37da2899SCharles.Forsyth 
272*37da2899SCharles.Forsyth OTL_END_HEADER
273*37da2899SCharles.Forsyth 
274*37da2899SCharles.Forsyth #endif /* __OTLCOMMN_H__ */
275*37da2899SCharles.Forsyth 
276*37da2899SCharles.Forsyth 
277*37da2899SCharles.Forsyth /* END */
278