#ifndef HARFBUZZ_GSUB_PRIVATE_H
#define HARFBUZZ_GSUB_PRIVATE_H
#include "harfbuzz-impl.h"
#include "harfbuzz-stream-private.h"
#include "harfbuzz-gsub.h"
HB_BEGIN_HEADER
typedef union HB_GSUB_SubTable_ HB_GSUB_SubTable;
struct HB_SingleSubstFormat1_
{
HB_Short DeltaGlyphID;
};
typedef struct HB_SingleSubstFormat1_ HB_SingleSubstFormat1;
struct HB_SingleSubstFormat2_
{
HB_UShort GlyphCount;
HB_UShort* Substitute;
};
typedef struct HB_SingleSubstFormat2_ HB_SingleSubstFormat2;
struct HB_SingleSubst_
{
HB_UShort SubstFormat;
HB_Coverage Coverage;
union
{
HB_SingleSubstFormat1 ssf1;
HB_SingleSubstFormat2 ssf2;
} ssf;
};
typedef struct HB_SingleSubst_ HB_SingleSubst;
struct HB_Sequence_
{
HB_UShort GlyphCount;
HB_UShort* Substitute;
};
typedef struct HB_Sequence_ HB_Sequence;
struct HB_MultipleSubst_
{
HB_UShort SubstFormat;
HB_Coverage Coverage;
HB_UShort SequenceCount;
HB_Sequence* Sequence;
};
typedef struct HB_MultipleSubst_ HB_MultipleSubst;
struct HB_AlternateSet_
{
HB_UShort GlyphCount;
HB_UShort* Alternate;
};
typedef struct HB_AlternateSet_ HB_AlternateSet;
struct HB_AlternateSubst_
{
HB_UShort SubstFormat;
HB_Coverage Coverage;
HB_UShort AlternateSetCount;
HB_AlternateSet* AlternateSet;
};
typedef struct HB_AlternateSubst_ HB_AlternateSubst;
struct HB_Ligature_
{
HB_UShort LigGlyph;
HB_UShort ComponentCount;
HB_UShort* Component;
};
typedef struct HB_Ligature_ HB_Ligature;
struct HB_LigatureSet_
{
HB_UShort LigatureCount;
HB_Ligature* Ligature;
};
typedef struct HB_LigatureSet_ HB_LigatureSet;
struct HB_LigatureSubst_
{
HB_UShort SubstFormat;
HB_Coverage Coverage;
HB_UShort LigatureSetCount;
HB_LigatureSet* LigatureSet;
};
typedef struct HB_LigatureSubst_ HB_LigatureSubst;
struct HB_SubstLookupRecord_
{
HB_UShort SequenceIndex;
HB_UShort LookupListIndex;
};
typedef struct HB_SubstLookupRecord_ HB_SubstLookupRecord;
struct HB_SubRule_
{
HB_UShort GlyphCount;
HB_UShort SubstCount;
HB_UShort* Input;
HB_SubstLookupRecord* SubstLookupRecord;
};
typedef struct HB_SubRule_ HB_SubRule;
struct HB_SubRuleSet_
{
HB_UShort SubRuleCount;
HB_SubRule* SubRule;
};
typedef struct HB_SubRuleSet_ HB_SubRuleSet;
struct HB_ContextSubstFormat1_
{
HB_Coverage Coverage;
HB_UShort SubRuleSetCount;
HB_SubRuleSet* SubRuleSet;
};
typedef struct HB_ContextSubstFormat1_ HB_ContextSubstFormat1;
struct HB_SubClassRule_
{
HB_UShort GlyphCount;
HB_UShort SubstCount;
HB_UShort* Class;
HB_SubstLookupRecord* SubstLookupRecord;
};
typedef struct HB_SubClassRule_ HB_SubClassRule;
struct HB_SubClassSet_
{
HB_UShort SubClassRuleCount;
HB_SubClassRule* SubClassRule;
};
typedef struct HB_SubClassSet_ HB_SubClassSet;
struct HB_ContextSubstFormat2_
{
HB_UShort MaxContextLength;
HB_Coverage Coverage;
HB_ClassDefinition ClassDef;
HB_UShort SubClassSetCount;
HB_SubClassSet* SubClassSet;
};
typedef struct HB_ContextSubstFormat2_ HB_ContextSubstFormat2;
struct HB_ContextSubstFormat3_
{
HB_UShort GlyphCount;
HB_UShort SubstCount;
HB_Coverage* Coverage;
HB_SubstLookupRecord* SubstLookupRecord;
};
typedef struct HB_ContextSubstFormat3_ HB_ContextSubstFormat3;
struct HB_ContextSubst_
{
HB_UShort SubstFormat;
union
{
HB_ContextSubstFormat1 csf1;
HB_ContextSubstFormat2 csf2;
HB_ContextSubstFormat3 csf3;
} csf;
};
typedef struct HB_ContextSubst_ HB_ContextSubst;
struct HB_ChainSubRule_
{
HB_UShort BacktrackGlyphCount;
HB_UShort* Backtrack;
HB_UShort InputGlyphCount;
HB_UShort* Input;
HB_UShort LookaheadGlyphCount;
HB_UShort* Lookahead;
HB_UShort SubstCount;
HB_SubstLookupRecord* SubstLookupRecord;
};
typedef struct HB_ChainSubRule_ HB_ChainSubRule;
struct HB_ChainSubRuleSet_
{
HB_UShort ChainSubRuleCount;
HB_ChainSubRule* ChainSubRule;
};
typedef struct HB_ChainSubRuleSet_ HB_ChainSubRuleSet;
struct HB_ChainContextSubstFormat1_
{
HB_Coverage Coverage;
HB_UShort ChainSubRuleSetCount;
HB_ChainSubRuleSet* ChainSubRuleSet;
};
typedef struct HB_ChainContextSubstFormat1_ HB_ChainContextSubstFormat1;
struct HB_ChainSubClassRule_
{
HB_UShort BacktrackGlyphCount;
HB_UShort* Backtrack;
HB_UShort InputGlyphCount;
HB_UShort* Input;
HB_UShort LookaheadGlyphCount;
HB_UShort* Lookahead;
HB_UShort SubstCount;
HB_SubstLookupRecord* SubstLookupRecord;
};
typedef struct HB_ChainSubClassRule_ HB_ChainSubClassRule;
struct HB_ChainSubClassSet_
{
HB_UShort ChainSubClassRuleCount;
HB_ChainSubClassRule* ChainSubClassRule;
};
typedef struct HB_ChainSubClassSet_ HB_ChainSubClassSet;
struct HB_ChainContextSubstFormat2_
{
HB_Coverage Coverage;
HB_UShort MaxBacktrackLength;
HB_ClassDefinition BacktrackClassDef;
HB_UShort MaxInputLength;
HB_ClassDefinition InputClassDef;
HB_UShort MaxLookaheadLength;
HB_ClassDefinition LookaheadClassDef;
HB_UShort ChainSubClassSetCount;
HB_ChainSubClassSet* ChainSubClassSet;
};
typedef struct HB_ChainContextSubstFormat2_ HB_ChainContextSubstFormat2;
struct HB_ChainContextSubstFormat3_
{
HB_UShort BacktrackGlyphCount;
HB_Coverage* BacktrackCoverage;
HB_UShort InputGlyphCount;
HB_Coverage* InputCoverage;
HB_UShort LookaheadGlyphCount;
HB_Coverage* LookaheadCoverage;
HB_UShort SubstCount;
HB_SubstLookupRecord* SubstLookupRecord;
};
typedef struct HB_ChainContextSubstFormat3_ HB_ChainContextSubstFormat3;
struct HB_ChainContextSubst_
{
HB_UShort SubstFormat;
union
{
HB_ChainContextSubstFormat1 ccsf1;
HB_ChainContextSubstFormat2 ccsf2;
HB_ChainContextSubstFormat3 ccsf3;
} ccsf;
};
typedef struct HB_ChainContextSubst_ HB_ChainContextSubst;
#if 0#endif
struct HB_ReverseChainContextSubst_
{
HB_UShort SubstFormat;
HB_Coverage Coverage;
HB_UShort BacktrackGlyphCount;
HB_Coverage* BacktrackCoverage;
HB_UShort LookaheadGlyphCount;
HB_Coverage* LookaheadCoverage;
HB_UShort GlyphCount;
HB_UShort* Substitute;
};
typedef struct HB_ReverseChainContextSubst_ HB_ReverseChainContextSubst;
union HB_GSUB_SubTable_
{
HB_SingleSubst single;
HB_MultipleSubst multiple;
HB_AlternateSubst alternate;
HB_LigatureSubst ligature;
HB_ContextSubst context;
HB_ChainContextSubst chain;
HB_ReverseChainContextSubst reverse;
};
HB_INTERNAL HB_Error
_HB_GSUB_Load_SubTable( HB_GSUB_SubTable* st,
HB_Stream stream,
HB_UShort lookup_type );
HB_INTERNAL void
_HB_GSUB_Free_SubTable( HB_GSUB_SubTable* st,
HB_UShort lookup_type );
HB_END_HEADER
#endif