#ifndef FTXOPEN_H
#define FTXOPEN_H
#include "freetype.h"
#ifdef __cplusplus
extern "C" {
#endif
#define TTO_MAX_NESTING_LEVEL 100
#define TTO_Err_Invalid_SubTable_Format 0x1000
#define TTO_Err_Invalid_SubTable 0x1001
#define TTO_Err_Not_Covered 0x1002
#define TTO_Err_Too_Many_Nested_Contexts 0x1003
struct TTO_LangSys_
{
TT_UShort LookupOrderOffset;
TT_UShort ReqFeatureIndex;
TT_UShort FeatureCount;
TT_UShort* FeatureIndex;
};
typedef struct TTO_LangSys_ TTO_LangSys;
struct TTO_LangSysRecord_
{
TT_ULong LangSysTag;
TTO_LangSys LangSys;
};
typedef struct TTO_LangSysRecord_ TTO_LangSysRecord;
struct TTO_Script_
{
TTO_LangSys DefaultLangSys;
TT_UShort LangSysCount;
TTO_LangSysRecord* LangSysRecord;
};
typedef struct TTO_Script_ TTO_Script;
struct TTO_ScriptRecord_
{
TT_ULong ScriptTag;
TTO_Script Script;
};
typedef struct TTO_ScriptRecord_ TTO_ScriptRecord;
struct TTO_ScriptList_
{
TT_UShort ScriptCount;
TTO_ScriptRecord* ScriptRecord;
};
typedef struct TTO_ScriptList_ TTO_ScriptList;
struct TTO_Feature_
{
TT_UShort FeatureParams;
TT_UShort LookupListCount;
TT_UShort* LookupListIndex;
};
typedef struct TTO_Feature_ TTO_Feature;
struct TTO_FeatureRecord_
{
TT_ULong FeatureTag;
TTO_Feature Feature;
};
typedef struct TTO_FeatureRecord_ TTO_FeatureRecord;
struct TTO_FeatureList_
{
TT_UShort FeatureCount;
TTO_FeatureRecord* FeatureRecord;
};
typedef struct TTO_FeatureList_ TTO_FeatureList;
struct TTO_SubTable_;
typedef struct TTO_SubTable_ TTO_SubTable;
struct TTO_Lookup_
{
TT_UShort LookupType;
TT_UShort LookupFlag;
TT_UShort SubTableCount;
TTO_SubTable* SubTable;
};
typedef struct TTO_Lookup_ TTO_Lookup;
struct TTO_LookupList_
{
TT_UShort LookupCount;
TTO_Lookup* Lookup;
TT_UShort* Properties;
};
typedef struct TTO_LookupList_ TTO_LookupList;
#define IGNORE_BASE_GLYPHS 0x0002
#define IGNORE_LIGATURES 0x0004
#define IGNORE_MARKS 0x0008
#define IGNORE_SPECIAL_MARKS 0xFF00
struct TTO_CoverageFormat1_
{
TT_UShort GlyphCount;
TT_UShort* GlyphArray;
};
typedef struct TTO_CoverageFormat1_ TTO_CoverageFormat1;
struct TTO_RangeRecord_
{
TT_UShort Start;
TT_UShort End;
TT_UShort StartCoverageIndex;
};
typedef struct TTO_RangeRecord_ TTO_RangeRecord;
struct TTO_CoverageFormat2_
{
TT_UShort RangeCount;
TTO_RangeRecord* RangeRecord;
};
typedef struct TTO_CoverageFormat2_ TTO_CoverageFormat2;
struct TTO_Coverage_
{
TT_UShort CoverageFormat;
union
{
TTO_CoverageFormat1 cf1;
TTO_CoverageFormat2 cf2;
} cf;
};
typedef struct TTO_Coverage_ TTO_Coverage;
struct TTO_ClassDefFormat1_
{
TT_UShort StartGlyph;
TT_UShort GlyphCount;
TT_UShort* ClassValueArray;
};
typedef struct TTO_ClassDefFormat1_ TTO_ClassDefFormat1;
struct TTO_ClassRangeRecord_
{
TT_UShort Start;
TT_UShort End;
TT_UShort Class;
};
typedef struct TTO_ClassRangeRecord_ TTO_ClassRangeRecord;
struct TTO_ClassDefFormat2_
{
TT_UShort ClassRangeCount;
TTO_ClassRangeRecord* ClassRangeRecord;
};
typedef struct TTO_ClassDefFormat2_ TTO_ClassDefFormat2;
struct TTO_ClassDefinition_
{
TT_Bool loaded;
TT_Bool* Defined;
TT_UShort ClassFormat;
union
{
TTO_ClassDefFormat1 cd1;
TTO_ClassDefFormat2 cd2;
} cd;
};
typedef struct TTO_ClassDefinition_ TTO_ClassDefinition;
struct TTO_Device_
{
TT_UShort StartSize;
TT_UShort EndSize;
TT_UShort DeltaFormat;
TT_UShort* DeltaValue;
};
typedef struct TTO_Device_ TTO_Device;
#include "ftxgdef.h"
#include "ftxgsub.h"
#include "ftxgpos.h"
struct TTO_SubTable_
{
union
{
TTO_GSUB_SubTable gsub;
TTO_GPOS_SubTable gpos;
} st;
};
enum TTO_Type_
{
GSUB,
GPOS
};
typedef enum TTO_Type_ TTO_Type;
#ifdef __cplusplus
}
#endif
#endif