⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 harfbuzz-gsub-private.h

📁 Pango is a library for layout and rendering of text, with an emphasis on internationalization. Pang
💻 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 + -