#ifndef FTXOPEN_H
#error "Don't include this file! Use ftxopen.h instead."
#endif
#ifndef FTXGDEF_H
#define FTXGDEF_H
#ifdef __cplusplus
extern "C" {
#endif
#define TTO_Err_Invalid_GDEF_SubTable_Format 0x1030
#define TTO_Err_Invalid_GDEF_SubTable 0x1031
#define UNCLASSIFIED_GLYPH 0
#define SIMPLE_GLYPH 1
#define LIGATURE_GLYPH 2
#define MARK_GLYPH 3
#define COMPONENT_GLYPH 4
#define TTO_BASE_GLYPH 0x0002
#define TTO_LIGATURE 0x0004
#define TTO_MARK 0x0008
#define TTO_COMPONENT 0x0010
struct TTO_AttachPoint_
{
TT_UShort PointCount;
TT_UShort* PointIndex;
};
typedef struct TTO_AttachPoint_ TTO_AttachPoint;
struct TTO_AttachList_
{
TT_Bool loaded;
TTO_Coverage Coverage;
TT_UShort GlyphCount;
TTO_AttachPoint* AttachPoint;
};
typedef struct TTO_AttachList_ TTO_AttachList;
struct TTO_CaretValueFormat1_
{
TT_Short Coordinate;
};
typedef struct TTO_CaretValueFormat1_ TTO_CaretValueFormat1;
struct TTO_CaretValueFormat2_
{
TT_UShort CaretValuePoint;
};
typedef struct TTO_CaretValueFormat2_ TTO_CaretValueFormat2;
struct TTO_CaretValueFormat3_
{
TT_Short Coordinate;
TTO_Device Device;
};
typedef struct TTO_CaretValueFormat3_ TTO_CaretValueFormat3;
struct TTO_CaretValueFormat4_
{
TT_UShort IdCaretValue;
};
typedef struct TTO_CaretValueFormat4_ TTO_CaretValueFormat4;
struct TTO_CaretValue_
{
TT_UShort CaretValueFormat;
union
{
TTO_CaretValueFormat1 cvf1;
TTO_CaretValueFormat2 cvf2;
TTO_CaretValueFormat3 cvf3;
TTO_CaretValueFormat4 cvf4;
} cvf;
};
typedef struct TTO_CaretValue_ TTO_CaretValue;
struct TTO_LigGlyph_
{
TT_Bool loaded;
TT_UShort CaretCount;
TTO_CaretValue* CaretValue;
};
typedef struct TTO_LigGlyph_ TTO_LigGlyph;
struct TTO_LigCaretList_
{
TT_Bool loaded;
TTO_Coverage Coverage;
TT_UShort LigGlyphCount;
TTO_LigGlyph* LigGlyph;
};
typedef struct TTO_LigCaretList_ TTO_LigCaretList;
struct TTO_GDEFHeader_
{
TT_Bool loaded;
TT_ULong offset;
TT_Fixed Version;
TTO_ClassDefinition GlyphClassDef;
TTO_AttachList AttachList;
TTO_LigCaretList LigCaretList;
TT_ULong MarkAttachClassDef_offset;
TTO_ClassDefinition MarkAttachClassDef;
TT_UShort LastGlyph;
TT_UShort** NewGlyphClasses;
};
typedef struct TTO_GDEFHeader_ TTO_GDEFHeader;
EXPORT_DEF
TT_Error TT_Init_GDEF_Extension( TT_Engine engine );
EXPORT_DEF
TT_Error TT_Load_GDEF_Table( TT_Face face,
TTO_GDEFHeader* gdef );
EXPORT_DEF
TT_Error TT_GDEF_Get_Glyph_Property( TTO_GDEFHeader* gdef,
TT_UShort glyphID,
TT_UShort* property );
EXPORT_DEF
TT_Error TT_GDEF_Build_ClassDefinition( TTO_GDEFHeader* gdef,
TT_UShort num_glyphs,
TT_UShort glyph_count,
TT_UShort* glyph_array,
TT_UShort* class_array );
#ifdef __cplusplus
}
#endif
#endif