📄 harfbuzz-gsub-private.h
字号:
/* * Copyright (C) 1998-2004 David Turner and Werner Lemberg * Copyright (C) 2006 Behdad Esfahbod * * This is part of HarfBuzz, an OpenType Layout engine library. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this * software and its documentation for any purpose, provided that the * above copyright notice and the following two paragraphs appear in * all copies of this software. * * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. */#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_HEADERtypedef union HB_GSUB_SubTable_ HB_GSUB_SubTable;/* LookupType 1 */struct HB_SingleSubstFormat1_{ HB_Short DeltaGlyphID; /* constant added to get substitution glyph index */};typedef struct HB_SingleSubstFormat1_ HB_SingleSubstFormat1;struct HB_SingleSubstFormat2_{ HB_UShort GlyphCount; /* number of glyph IDs in Substitute array */ HB_UShort* Substitute; /* array of substitute glyph IDs */};typedef struct HB_SingleSubstFormat2_ HB_SingleSubstFormat2;struct HB_SingleSubst_{ HB_UShort SubstFormat; /* 1 or 2 */ HB_Coverage Coverage; /* Coverage table */ union { HB_SingleSubstFormat1 ssf1; HB_SingleSubstFormat2 ssf2; } ssf;};typedef struct HB_SingleSubst_ HB_SingleSubst;/* LookupType 2 */struct HB_Sequence_{ HB_UShort GlyphCount; /* number of glyph IDs in the Substitute array */ HB_UShort* Substitute; /* string of glyph IDs to substitute */};typedef struct HB_Sequence_ HB_Sequence;struct HB_MultipleSubst_{ HB_UShort SubstFormat; /* always 1 */ HB_Coverage Coverage; /* Coverage table */ HB_UShort SequenceCount; /* number of Sequence tables */ HB_Sequence* Sequence; /* array of Sequence tables */};typedef struct HB_MultipleSubst_ HB_MultipleSubst;/* LookupType 3 */struct HB_AlternateSet_{ HB_UShort GlyphCount; /* number of glyph IDs in the Alternate array */ HB_UShort* Alternate; /* array of alternate glyph IDs */};typedef struct HB_AlternateSet_ HB_AlternateSet;struct HB_AlternateSubst_{ HB_UShort SubstFormat; /* always 1 */ HB_Coverage Coverage; /* Coverage table */ HB_UShort AlternateSetCount; /* number of AlternateSet tables */ HB_AlternateSet* AlternateSet; /* array of AlternateSet tables */};typedef struct HB_AlternateSubst_ HB_AlternateSubst;/* LookupType 4 */struct HB_Ligature_{ HB_UShort LigGlyph; /* glyphID of ligature to substitute */ HB_UShort ComponentCount; /* number of components in ligature */ HB_UShort* Component; /* array of component glyph IDs */};typedef struct HB_Ligature_ HB_Ligature;struct HB_LigatureSet_{ HB_UShort LigatureCount; /* number of Ligature tables */ HB_Ligature* Ligature; /* array of Ligature tables */};typedef struct HB_LigatureSet_ HB_LigatureSet;struct HB_LigatureSubst_{ HB_UShort SubstFormat; /* always 1 */ HB_Coverage Coverage; /* Coverage table */ HB_UShort LigatureSetCount; /* number of LigatureSet tables */ HB_LigatureSet* LigatureSet; /* array of LigatureSet tables */};typedef struct HB_LigatureSubst_ HB_LigatureSubst;/* needed by both lookup type 5 and 6 */struct HB_SubstLookupRecord_{ HB_UShort SequenceIndex; /* index into current glyph sequence */ HB_UShort LookupListIndex; /* Lookup to apply to that pos. */};typedef struct HB_SubstLookupRecord_ HB_SubstLookupRecord;/* LookupType 5 */struct HB_SubRule_{ HB_UShort GlyphCount; /* total number of input glyphs */ HB_UShort SubstCount; /* number of SubstLookupRecord tables */ HB_UShort* Input; /* array of input glyph IDs */ HB_SubstLookupRecord* SubstLookupRecord; /* array of SubstLookupRecord tables */};typedef struct HB_SubRule_ HB_SubRule;struct HB_SubRuleSet_{ HB_UShort SubRuleCount; /* number of SubRule tables */ HB_SubRule* SubRule; /* array of SubRule tables */};typedef struct HB_SubRuleSet_ HB_SubRuleSet;struct HB_ContextSubstFormat1_{ HB_Coverage Coverage; /* Coverage table */ HB_UShort SubRuleSetCount; /* number of SubRuleSet tables */ HB_SubRuleSet* SubRuleSet; /* array of SubRuleSet tables */};typedef struct HB_ContextSubstFormat1_ HB_ContextSubstFormat1;struct HB_SubClassRule_{ HB_UShort GlyphCount; /* total number of context classes */ HB_UShort SubstCount; /* number of SubstLookupRecord tables */ HB_UShort* Class; /* array of classes */ HB_SubstLookupRecord* SubstLookupRecord; /* array of SubstLookupRecord tables */};typedef struct HB_SubClassRule_ HB_SubClassRule;struct HB_SubClassSet_{ HB_UShort SubClassRuleCount; /* 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_{ HB_UShort MaxContextLength; /* maximal context length */ HB_Coverage Coverage; /* Coverage table */ HB_ClassDefinition ClassDef; /* ClassDef table */ HB_UShort SubClassSetCount; /* number of SubClassSet tables */ HB_SubClassSet* SubClassSet; /* array of SubClassSet tables */};typedef struct HB_ContextSubstFormat2_ HB_ContextSubstFormat2;struct HB_ContextSubstFormat3_{ HB_UShort GlyphCount; /* number of input glyphs */ HB_UShort SubstCount; /* number of SubstLookupRecords */ HB_Coverage* Coverage; /* array of Coverage tables */ HB_SubstLookupRecord* SubstLookupRecord; /* array of substitution lookups */};typedef struct HB_ContextSubstFormat3_ HB_ContextSubstFormat3;struct HB_ContextSubst_{ HB_UShort SubstFormat; /* 1, 2, or 3 */ union { HB_ContextSubstFormat1 csf1; HB_ContextSubstFormat2 csf2; HB_ContextSubstFormat3 csf3; } csf;};typedef struct HB_ContextSubst_ HB_ContextSubst;/* LookupType 6 */struct HB_ChainSubRule_{ HB_UShort BacktrackGlyphCount; /* total number of backtrack glyphs */ HB_UShort* Backtrack; /* array of backtrack glyph IDs */ HB_UShort InputGlyphCount; /* total number of input glyphs */ HB_UShort* Input; /* array of input glyph IDs */ HB_UShort LookaheadGlyphCount; /* total number of lookahead glyphs */ HB_UShort* Lookahead; /* array of lookahead glyph IDs */ HB_UShort SubstCount; /* number of SubstLookupRecords */ HB_SubstLookupRecord* SubstLookupRecord; /* array of SubstLookupRecords */};typedef struct HB_ChainSubRule_ HB_ChainSubRule;struct HB_ChainSubRuleSet_{ HB_UShort ChainSubRuleCount; /* 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 */ HB_UShort ChainSubRuleSetCount; /* number of ChainSubRuleSet tables */ HB_ChainSubRuleSet* ChainSubRuleSet; /* array of ChainSubRuleSet tables */};typedef struct HB_ChainContextSubstFormat1_ HB_ChainContextSubstFormat1;struct HB_ChainSubClassRule_{ HB_UShort BacktrackGlyphCount; /* total number of backtrack classes */ HB_UShort* Backtrack; /* array of backtrack classes */ HB_UShort InputGlyphCount; /* total number of context classes */ HB_UShort* Input; /* array of context classes */ HB_UShort LookaheadGlyphCount; /* total number of lookahead classes */ HB_UShort* Lookahead; /* array of lookahead classes */ HB_UShort SubstCount; /* number of SubstLookupRecords */ HB_SubstLookupRecord* SubstLookupRecord; /* array of substitution lookups */};typedef struct HB_ChainSubClassRule_ HB_ChainSubClassRule;struct HB_ChainSubClassSet_{ HB_UShort ChainSubClassRuleCount; /* 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 */ HB_UShort MaxBacktrackLength; /* maximal backtrack length */ HB_ClassDefinition BacktrackClassDef; /* BacktrackClassDef table */ HB_UShort MaxInputLength; /* maximal input length */ HB_ClassDefinition InputClassDef; /* InputClassDef table */ HB_UShort MaxLookaheadLength; /* maximal lookahead length */ HB_ClassDefinition LookaheadClassDef; /* LookaheadClassDef table */ HB_UShort ChainSubClassSetCount; /* number of ChainSubClassSet tables */ HB_ChainSubClassSet* ChainSubClassSet; /* array of ChainSubClassSet tables */};typedef struct HB_ChainContextSubstFormat2_ HB_ChainContextSubstFormat2;struct HB_ChainContextSubstFormat3_{ HB_UShort BacktrackGlyphCount; /* number of backtrack glyphs */ HB_Coverage* BacktrackCoverage; /* array of backtrack Coverage tables */ HB_UShort InputGlyphCount; /* number of input glyphs */ HB_Coverage* InputCoverage; /* array of input coverage tables */ HB_UShort LookaheadGlyphCount; /* number of lookahead glyphs */ HB_Coverage* LookaheadCoverage; /* array of lookahead coverage tables */ HB_UShort SubstCount; /* number of SubstLookupRecords */ HB_SubstLookupRecord* SubstLookupRecord; /* array of substitution lookups */};typedef struct HB_ChainContextSubstFormat3_ HB_ChainContextSubstFormat3;struct HB_ChainContextSubst_{ HB_UShort SubstFormat; /* 1, 2, or 3 */ union { HB_ChainContextSubstFormat1 ccsf1; HB_ChainContextSubstFormat2 ccsf2; HB_ChainContextSubstFormat3 ccsf3; } ccsf;};typedef struct HB_ChainContextSubst_ HB_ChainContextSubst;#if 0/* LookupType 7 */struct HB_ExtensionSubst_{ HB_UShort SubstFormat; /* always 1 */ HB_UShort LookuptType; /* lookup-type of referenced subtable */ HB_GSUB_SubTable *subtable; /* referenced subtable */};typedef struct HB_ExtensionSubst_ HB_ExtensionSubst;#endif/* LookupType 8 */struct HB_ReverseChainContextSubst_{ HB_UShort SubstFormat; /* always 1 */ HB_Coverage Coverage; /* coverage table for input glyphs */ HB_UShort BacktrackGlyphCount; /* number of backtrack glyphs */ HB_Coverage* BacktrackCoverage; /* array of backtrack Coverage tables */ HB_UShort LookaheadGlyphCount; /* number of lookahead glyphs */ HB_Coverage* LookaheadCoverage; /* array of lookahead Coverage tables */ HB_UShort GlyphCount; /* number of Glyph IDs */ HB_UShort* Substitute; /* array of substitute Glyph ID */};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 /* HARFBUZZ_GSUB_PRIVATE_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -