1*37da2899SCharles.Forsyth #ifndef __OTL_TABLE_H__ 2*37da2899SCharles.Forsyth #define __OTL_TABLE_H__ 3*37da2899SCharles.Forsyth 4*37da2899SCharles.Forsyth #include "otlayout.h" 5*37da2899SCharles.Forsyth 6*37da2899SCharles.Forsyth OTL_BEGIN_HEADER 7*37da2899SCharles.Forsyth 8*37da2899SCharles.Forsyth typedef struct OTL_TableRec_* OTL_Table; 9*37da2899SCharles.Forsyth 10*37da2899SCharles.Forsyth typedef enum 11*37da2899SCharles.Forsyth { 12*37da2899SCharles.Forsyth OTL_TABLE_TYPE_GDEF = 1, 13*37da2899SCharles.Forsyth OTL_TABLE_TYPE_GSUB, 14*37da2899SCharles.Forsyth OTL_TABLE_TYPE_GPOS, 15*37da2899SCharles.Forsyth OTL_TABLE_TYPE_BASE, 16*37da2899SCharles.Forsyth OTL_TABLE_TYPE_JSTF 17*37da2899SCharles.Forsyth 18*37da2899SCharles.Forsyth } OTL_TableType; 19*37da2899SCharles.Forsyth 20*37da2899SCharles.Forsyth 21*37da2899SCharles.Forsyth /* this may become a private structure later */ 22*37da2899SCharles.Forsyth typedef struct OTL_TableRec_ 23*37da2899SCharles.Forsyth { 24*37da2899SCharles.Forsyth OTL_TableType type; 25*37da2899SCharles.Forsyth OTL_Bytes base; 26*37da2899SCharles.Forsyth OTL_Bytes limit; 27*37da2899SCharles.Forsyth 28*37da2899SCharles.Forsyth OTL_Tag script_tag; 29*37da2899SCharles.Forsyth OTL_Tag lang_tag; 30*37da2899SCharles.Forsyth 31*37da2899SCharles.Forsyth OTL_UInt lookup_count; 32*37da2899SCharles.Forsyth OTL_Byte* lookup_flags; 33*37da2899SCharles.Forsyth 34*37da2899SCharles.Forsyth OTL_UInt feature_count; 35*37da2899SCharles.Forsyth OTL_Tag feature_tags; 36*37da2899SCharles.Forsyth OTL_Byte* feature_flags; 37*37da2899SCharles.Forsyth 38*37da2899SCharles.Forsyth } OTL_TableRec; 39*37da2899SCharles.Forsyth 40*37da2899SCharles.Forsyth 41*37da2899SCharles.Forsyth OTL_API( OTL_Error ) 42*37da2899SCharles.Forsyth otl_table_validate( OTL_Bytes table, 43*37da2899SCharles.Forsyth OTL_Size size, 44*37da2899SCharles.Forsyth OTL_TableType type, 45*37da2899SCharles.Forsyth OTL_Size *abyte_size ); 46*37da2899SCharles.Forsyth 47*37da2899SCharles.Forsyth OTL_API( void ) 48*37da2899SCharles.Forsyth otl_table_init( OTL_Table table, 49*37da2899SCharles.Forsyth OTL_TableType type, 50*37da2899SCharles.Forsyth OTL_Bytes base, 51*37da2899SCharles.Forsyth OTL_Size size ); 52*37da2899SCharles.Forsyth 53*37da2899SCharles.Forsyth OTL_API( void ) 54*37da2899SCharles.Forsyth otl_table_set_script( OTL_Table table, 55*37da2899SCharles.Forsyth OTL_ScriptTag script, 56*37da2899SCharles.Forsyth OTL_LangTag language ); 57*37da2899SCharles.Forsyth 58*37da2899SCharles.Forsyth OTL_END_HEADER 59*37da2899SCharles.Forsyth 60*37da2899SCharles.Forsyth #endif /* __OTL_TABLE_H__ */ 61