2006-03-31 14:28:09 +02:00
|
|
|
/*******************************************************************
|
|
|
|
*
|
|
|
|
* Copyright 1996-2000 by
|
|
|
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
|
|
|
*
|
|
|
|
* Copyright 2006 Behdad Esfahbod
|
|
|
|
*
|
|
|
|
* This is part of HarfBuzz, an OpenType Layout engine library.
|
|
|
|
*
|
|
|
|
* See the file name COPYING for licensing information.
|
|
|
|
*
|
|
|
|
******************************************************************/
|
|
|
|
#ifndef HARFBUZZ_GSUB_PRIVATE_H
|
|
|
|
#define HARFBUZZ_GSUB_PRIVATE_H
|
|
|
|
|
2007-10-11 10:30:50 +02:00
|
|
|
#include "harfbuzz-impl.h"
|
2006-03-31 14:28:09 +02:00
|
|
|
#include "harfbuzz-gsub.h"
|
|
|
|
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_BEGIN_HEADER
|
2006-03-31 14:28:09 +02:00
|
|
|
|
|
|
|
|
|
|
|
typedef union HB_GSUB_SubTable_ HB_GSUB_SubTable;
|
|
|
|
|
|
|
|
/* LookupType 1 */
|
|
|
|
|
|
|
|
struct HB_SingleSubstFormat1_
|
|
|
|
{
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_Short DeltaGlyphID; /* constant added to get
|
2006-03-31 14:28:09 +02:00
|
|
|
substitution glyph index */
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct HB_SingleSubstFormat1_ HB_SingleSubstFormat1;
|
|
|
|
|
|
|
|
|
|
|
|
struct HB_SingleSubstFormat2_
|
|
|
|
{
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort GlyphCount; /* number of glyph IDs in
|
2006-03-31 14:28:09 +02:00
|
|
|
Substitute array */
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort* Substitute; /* array of substitute glyph IDs */
|
2006-03-31 14:28:09 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct HB_SingleSubstFormat2_ HB_SingleSubstFormat2;
|
|
|
|
|
|
|
|
|
|
|
|
struct HB_SingleSubst_
|
|
|
|
{
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort SubstFormat; /* 1 or 2 */
|
2006-03-31 14:28:09 +02:00
|
|
|
HB_Coverage Coverage; /* Coverage table */
|
|
|
|
|
|
|
|
union
|
|
|
|
{
|
|
|
|
HB_SingleSubstFormat1 ssf1;
|
|
|
|
HB_SingleSubstFormat2 ssf2;
|
|
|
|
} ssf;
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct HB_SingleSubst_ HB_SingleSubst;
|
|
|
|
|
|
|
|
|
|
|
|
/* LookupType 2 */
|
|
|
|
|
|
|
|
struct HB_Sequence_
|
|
|
|
{
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort GlyphCount; /* number of glyph IDs in the
|
2006-03-31 14:28:09 +02:00
|
|
|
Substitute array */
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort* Substitute; /* string of glyph IDs to
|
2006-03-31 14:28:09 +02:00
|
|
|
substitute */
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct HB_Sequence_ HB_Sequence;
|
|
|
|
|
|
|
|
|
|
|
|
struct HB_MultipleSubst_
|
|
|
|
{
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort SubstFormat; /* always 1 */
|
2006-03-31 14:28:09 +02:00
|
|
|
HB_Coverage Coverage; /* Coverage table */
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort SequenceCount; /* number of Sequence tables */
|
2006-03-31 14:28:09 +02:00
|
|
|
HB_Sequence* Sequence; /* array of Sequence tables */
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct HB_MultipleSubst_ HB_MultipleSubst;
|
|
|
|
|
|
|
|
|
|
|
|
/* LookupType 3 */
|
|
|
|
|
|
|
|
struct HB_AlternateSet_
|
|
|
|
{
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort GlyphCount; /* number of glyph IDs in the
|
2006-03-31 14:28:09 +02:00
|
|
|
Alternate array */
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort* Alternate; /* array of alternate glyph IDs */
|
2006-03-31 14:28:09 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct HB_AlternateSet_ HB_AlternateSet;
|
|
|
|
|
|
|
|
|
|
|
|
struct HB_AlternateSubst_
|
|
|
|
{
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort SubstFormat; /* always 1 */
|
2006-03-31 14:28:09 +02:00
|
|
|
HB_Coverage Coverage; /* Coverage table */
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort AlternateSetCount;
|
2006-03-31 14:28:09 +02:00
|
|
|
/* number of AlternateSet tables */
|
|
|
|
HB_AlternateSet* AlternateSet; /* array of AlternateSet tables */
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct HB_AlternateSubst_ HB_AlternateSubst;
|
|
|
|
|
|
|
|
|
|
|
|
/* LookupType 4 */
|
|
|
|
|
|
|
|
struct HB_Ligature_
|
|
|
|
{
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort LigGlyph; /* glyphID of ligature
|
2006-03-31 14:28:09 +02:00
|
|
|
to substitute */
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort ComponentCount; /* number of components in ligature */
|
|
|
|
HB_UShort* Component; /* array of component glyph IDs */
|
2006-03-31 14:28:09 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct HB_Ligature_ HB_Ligature;
|
|
|
|
|
|
|
|
|
|
|
|
struct HB_LigatureSet_
|
|
|
|
{
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort LigatureCount; /* number of Ligature tables */
|
2006-03-31 14:28:09 +02:00
|
|
|
HB_Ligature* Ligature; /* array of Ligature tables */
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct HB_LigatureSet_ HB_LigatureSet;
|
|
|
|
|
|
|
|
|
|
|
|
struct HB_LigatureSubst_
|
|
|
|
{
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort SubstFormat; /* always 1 */
|
2006-03-31 14:28:09 +02:00
|
|
|
HB_Coverage Coverage; /* Coverage table */
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort LigatureSetCount; /* number of LigatureSet tables */
|
2006-03-31 14:28:09 +02:00
|
|
|
HB_LigatureSet* LigatureSet; /* array of LigatureSet tables */
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct HB_LigatureSubst_ HB_LigatureSubst;
|
|
|
|
|
|
|
|
|
|
|
|
/* needed by both lookup type 5 and 6 */
|
|
|
|
|
|
|
|
struct HB_SubstLookupRecord_
|
|
|
|
{
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort SequenceIndex; /* index into current
|
2006-03-31 14:28:09 +02:00
|
|
|
glyph sequence */
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort LookupListIndex; /* Lookup to apply to that pos. */
|
2006-03-31 14:28:09 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct HB_SubstLookupRecord_ HB_SubstLookupRecord;
|
|
|
|
|
|
|
|
|
|
|
|
/* LookupType 5 */
|
|
|
|
|
|
|
|
struct HB_SubRule_
|
|
|
|
{
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort GlyphCount; /* total number of input glyphs */
|
|
|
|
HB_UShort SubstCount; /* number of SubstLookupRecord
|
2006-03-31 14:28:09 +02:00
|
|
|
tables */
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort* Input; /* array of input glyph IDs */
|
2006-03-31 14:28:09 +02:00
|
|
|
HB_SubstLookupRecord* SubstLookupRecord;
|
|
|
|
/* array of SubstLookupRecord
|
|
|
|
tables */
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct HB_SubRule_ HB_SubRule;
|
|
|
|
|
|
|
|
|
|
|
|
struct HB_SubRuleSet_
|
|
|
|
{
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort SubRuleCount; /* number of SubRule tables */
|
2006-03-31 14:28:09 +02:00
|
|
|
HB_SubRule* SubRule; /* array of SubRule tables */
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct HB_SubRuleSet_ HB_SubRuleSet;
|
|
|
|
|
|
|
|
|
|
|
|
struct HB_ContextSubstFormat1_
|
|
|
|
{
|
|
|
|
HB_Coverage Coverage; /* Coverage table */
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort SubRuleSetCount; /* number of SubRuleSet tables */
|
2006-03-31 14:28:09 +02:00
|
|
|
HB_SubRuleSet* SubRuleSet; /* array of SubRuleSet tables */
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct HB_ContextSubstFormat1_ HB_ContextSubstFormat1;
|
|
|
|
|
|
|
|
|
|
|
|
struct HB_SubClassRule_
|
|
|
|
{
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort GlyphCount; /* total number of context classes */
|
|
|
|
HB_UShort SubstCount; /* number of SubstLookupRecord
|
2006-03-31 14:28:09 +02:00
|
|
|
tables */
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort* Class; /* array of classes */
|
2006-03-31 14:28:09 +02:00
|
|
|
HB_SubstLookupRecord* SubstLookupRecord;
|
|
|
|
/* array of SubstLookupRecord
|
|
|
|
tables */
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct HB_SubClassRule_ HB_SubClassRule;
|
|
|
|
|
|
|
|
|
|
|
|
struct HB_SubClassSet_
|
|
|
|
{
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort SubClassRuleCount;
|
2006-03-31 14:28:09 +02:00
|
|
|
/* number of SubClassRule tables */
|
|
|
|
HB_SubClassRule* SubClassRule; /* array of SubClassRule tables */
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct HB_SubClassSet_ HB_SubClassSet;
|
|
|
|
|
|
|
|
|
|
|
|
/* The `MaxContextLength' field is not defined in the TTO specification
|
|
|
|
but simplifies the implementation of this format. It holds the
|
|
|
|
maximal context length used in the context rules. */
|
|
|
|
|
|
|
|
struct HB_ContextSubstFormat2_
|
|
|
|
{
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort MaxContextLength;
|
2006-03-31 14:28:09 +02:00
|
|
|
/* maximal context length */
|
|
|
|
HB_Coverage Coverage; /* Coverage table */
|
|
|
|
HB_ClassDefinition ClassDef; /* ClassDef table */
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort SubClassSetCount;
|
2006-03-31 14:28:09 +02:00
|
|
|
/* number of SubClassSet tables */
|
|
|
|
HB_SubClassSet* SubClassSet; /* array of SubClassSet tables */
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct HB_ContextSubstFormat2_ HB_ContextSubstFormat2;
|
|
|
|
|
|
|
|
|
|
|
|
struct HB_ContextSubstFormat3_
|
|
|
|
{
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort GlyphCount; /* number of input glyphs */
|
|
|
|
HB_UShort SubstCount; /* number of SubstLookupRecords */
|
2006-03-31 14:28:09 +02:00
|
|
|
HB_Coverage* Coverage; /* array of Coverage tables */
|
|
|
|
HB_SubstLookupRecord* SubstLookupRecord;
|
|
|
|
/* array of substitution lookups */
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct HB_ContextSubstFormat3_ HB_ContextSubstFormat3;
|
|
|
|
|
|
|
|
|
|
|
|
struct HB_ContextSubst_
|
|
|
|
{
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort SubstFormat; /* 1, 2, or 3 */
|
2006-03-31 14:28:09 +02:00
|
|
|
|
|
|
|
union
|
|
|
|
{
|
|
|
|
HB_ContextSubstFormat1 csf1;
|
|
|
|
HB_ContextSubstFormat2 csf2;
|
|
|
|
HB_ContextSubstFormat3 csf3;
|
|
|
|
} csf;
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct HB_ContextSubst_ HB_ContextSubst;
|
|
|
|
|
|
|
|
|
|
|
|
/* LookupType 6 */
|
|
|
|
|
|
|
|
struct HB_ChainSubRule_
|
|
|
|
{
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort BacktrackGlyphCount;
|
2006-03-31 14:28:09 +02:00
|
|
|
/* total number of backtrack glyphs */
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort* Backtrack; /* array of backtrack glyph IDs */
|
|
|
|
HB_UShort InputGlyphCount;
|
2006-03-31 14:28:09 +02:00
|
|
|
/* total number of input glyphs */
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort* Input; /* array of input glyph IDs */
|
|
|
|
HB_UShort LookaheadGlyphCount;
|
2006-03-31 14:28:09 +02:00
|
|
|
/* total number of lookahead glyphs */
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort* Lookahead; /* array of lookahead glyph IDs */
|
|
|
|
HB_UShort SubstCount; /* number of SubstLookupRecords */
|
2006-03-31 14:28:09 +02:00
|
|
|
HB_SubstLookupRecord* SubstLookupRecord;
|
|
|
|
/* array of SubstLookupRecords */
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct HB_ChainSubRule_ HB_ChainSubRule;
|
|
|
|
|
|
|
|
|
|
|
|
struct HB_ChainSubRuleSet_
|
|
|
|
{
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort ChainSubRuleCount;
|
2006-03-31 14:28:09 +02:00
|
|
|
/* number of ChainSubRule tables */
|
|
|
|
HB_ChainSubRule* ChainSubRule; /* array of ChainSubRule tables */
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct HB_ChainSubRuleSet_ HB_ChainSubRuleSet;
|
|
|
|
|
|
|
|
|
|
|
|
struct HB_ChainContextSubstFormat1_
|
|
|
|
{
|
|
|
|
HB_Coverage Coverage; /* Coverage table */
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort ChainSubRuleSetCount;
|
2006-03-31 14:28:09 +02:00
|
|
|
/* number of ChainSubRuleSet tables */
|
|
|
|
HB_ChainSubRuleSet* ChainSubRuleSet;
|
|
|
|
/* array of ChainSubRuleSet tables */
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct HB_ChainContextSubstFormat1_ HB_ChainContextSubstFormat1;
|
|
|
|
|
|
|
|
|
|
|
|
struct HB_ChainSubClassRule_
|
|
|
|
{
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort BacktrackGlyphCount;
|
2006-03-31 14:28:09 +02:00
|
|
|
/* total number of backtrack
|
|
|
|
classes */
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort* Backtrack; /* array of backtrack classes */
|
|
|
|
HB_UShort InputGlyphCount;
|
2006-03-31 14:28:09 +02:00
|
|
|
/* total number of context classes */
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort* Input; /* array of context classes */
|
|
|
|
HB_UShort LookaheadGlyphCount;
|
2006-03-31 14:28:09 +02:00
|
|
|
/* total number of lookahead
|
|
|
|
classes */
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort* Lookahead; /* array of lookahead classes */
|
|
|
|
HB_UShort SubstCount; /* number of SubstLookupRecords */
|
2006-03-31 14:28:09 +02:00
|
|
|
HB_SubstLookupRecord* SubstLookupRecord;
|
|
|
|
/* array of substitution lookups */
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct HB_ChainSubClassRule_ HB_ChainSubClassRule;
|
|
|
|
|
|
|
|
|
|
|
|
struct HB_ChainSubClassSet_
|
|
|
|
{
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort ChainSubClassRuleCount;
|
2006-03-31 14:28:09 +02:00
|
|
|
/* number of ChainSubClassRule
|
|
|
|
tables */
|
|
|
|
HB_ChainSubClassRule* ChainSubClassRule;
|
|
|
|
/* array of ChainSubClassRule
|
|
|
|
tables */
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct HB_ChainSubClassSet_ HB_ChainSubClassSet;
|
|
|
|
|
|
|
|
|
|
|
|
/* The `MaxXXXLength' fields are not defined in the TTO specification
|
|
|
|
but simplifies the implementation of this format. It holds the
|
|
|
|
maximal context length used in the specific context rules. */
|
|
|
|
|
|
|
|
struct HB_ChainContextSubstFormat2_
|
|
|
|
{
|
|
|
|
HB_Coverage Coverage; /* Coverage table */
|
|
|
|
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort MaxBacktrackLength;
|
2006-03-31 14:28:09 +02:00
|
|
|
/* maximal backtrack length */
|
|
|
|
HB_ClassDefinition BacktrackClassDef;
|
|
|
|
/* BacktrackClassDef table */
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort MaxInputLength;
|
2006-03-31 14:28:09 +02:00
|
|
|
/* maximal input length */
|
|
|
|
HB_ClassDefinition InputClassDef;
|
|
|
|
/* InputClassDef table */
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort MaxLookaheadLength;
|
2006-03-31 14:28:09 +02:00
|
|
|
/* maximal lookahead length */
|
|
|
|
HB_ClassDefinition LookaheadClassDef;
|
|
|
|
/* LookaheadClassDef table */
|
|
|
|
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort ChainSubClassSetCount;
|
2006-03-31 14:28:09 +02:00
|
|
|
/* number of ChainSubClassSet
|
|
|
|
tables */
|
|
|
|
HB_ChainSubClassSet* ChainSubClassSet;
|
|
|
|
/* array of ChainSubClassSet
|
|
|
|
tables */
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct HB_ChainContextSubstFormat2_ HB_ChainContextSubstFormat2;
|
|
|
|
|
|
|
|
|
|
|
|
struct HB_ChainContextSubstFormat3_
|
|
|
|
{
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort BacktrackGlyphCount;
|
2006-03-31 14:28:09 +02:00
|
|
|
/* number of backtrack glyphs */
|
|
|
|
HB_Coverage* BacktrackCoverage;
|
|
|
|
/* array of backtrack Coverage
|
|
|
|
tables */
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort InputGlyphCount;
|
2006-03-31 14:28:09 +02:00
|
|
|
/* number of input glyphs */
|
|
|
|
HB_Coverage* InputCoverage;
|
|
|
|
/* array of input coverage
|
|
|
|
tables */
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort LookaheadGlyphCount;
|
2006-03-31 14:28:09 +02:00
|
|
|
/* number of lookahead glyphs */
|
|
|
|
HB_Coverage* LookaheadCoverage;
|
|
|
|
/* array of lookahead coverage
|
|
|
|
tables */
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort SubstCount; /* number of SubstLookupRecords */
|
2006-03-31 14:28:09 +02:00
|
|
|
HB_SubstLookupRecord* SubstLookupRecord;
|
|
|
|
/* array of substitution lookups */
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct HB_ChainContextSubstFormat3_ HB_ChainContextSubstFormat3;
|
|
|
|
|
|
|
|
|
|
|
|
struct HB_ChainContextSubst_
|
|
|
|
{
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort SubstFormat; /* 1, 2, or 3 */
|
2006-03-31 14:28:09 +02:00
|
|
|
|
|
|
|
union
|
|
|
|
{
|
|
|
|
HB_ChainContextSubstFormat1 ccsf1;
|
|
|
|
HB_ChainContextSubstFormat2 ccsf2;
|
|
|
|
HB_ChainContextSubstFormat3 ccsf3;
|
|
|
|
} ccsf;
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct HB_ChainContextSubst_ HB_ChainContextSubst;
|
|
|
|
|
|
|
|
|
2007-10-24 23:35:03 +02:00
|
|
|
#if 0
|
|
|
|
/* LookupType 7 */
|
|
|
|
struct HB_ExtensionSubst_
|
|
|
|
{
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort SubstFormat; /* always 1 */
|
|
|
|
HB_UShort LookuptType; /* lookup-type of referenced subtable */
|
2007-10-24 23:35:03 +02:00
|
|
|
HB_GSUB_SubTable *subtable; /* referenced subtable */
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct HB_ExtensionSubst_ HB_ExtensionSubst;
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
2006-03-31 14:28:09 +02:00
|
|
|
/* LookupType 8 */
|
|
|
|
struct HB_ReverseChainContextSubst_
|
|
|
|
{
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort SubstFormat; /* always 1 */
|
2006-03-31 14:28:09 +02:00
|
|
|
HB_Coverage Coverage; /* coverage table for input glyphs */
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort BacktrackGlyphCount; /* number of backtrack glyphs */
|
2006-03-31 14:28:09 +02:00
|
|
|
HB_Coverage* BacktrackCoverage; /* array of backtrack Coverage
|
|
|
|
tables */
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort LookaheadGlyphCount; /* number of lookahead glyphs */
|
2006-03-31 14:28:09 +02:00
|
|
|
HB_Coverage* LookaheadCoverage; /* array of lookahead Coverage
|
|
|
|
tables */
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort GlyphCount; /* number of Glyph IDs */
|
|
|
|
HB_UShort* Substitute; /* array of substitute Glyph ID */
|
2006-03-31 14:28:09 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
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;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-10-11 10:30:50 +02:00
|
|
|
HB_INTERNAL HB_Error
|
|
|
|
_HB_GSUB_Load_SubTable( HB_GSUB_SubTable* st,
|
2007-10-25 02:23:46 +02:00
|
|
|
HB_Stream stream,
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort lookup_type );
|
2006-03-31 14:28:09 +02:00
|
|
|
|
2007-10-11 10:30:50 +02:00
|
|
|
HB_INTERNAL void
|
|
|
|
_HB_GSUB_Free_SubTable( HB_GSUB_SubTable* st,
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_UShort lookup_type );
|
2006-03-31 14:28:09 +02:00
|
|
|
|
2007-10-25 00:44:47 +02:00
|
|
|
HB_END_HEADER
|
2006-03-31 14:28:09 +02:00
|
|
|
|
|
|
|
#endif /* HARFBUZZ_GSUB_PRIVATE_H */
|