📄 harfbuzz-gpos-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_GPOS_PRIVATE_H#define HARFBUZZ_GPOS_PRIVATE_H#include "harfbuzz-impl.h"#include "harfbuzz-stream-private.h"#include "harfbuzz-gpos.h"HB_BEGIN_HEADER/* shared tables */struct HB_ValueRecord_{ HB_Short XPlacement; /* horizontal adjustment for placement */ HB_Short YPlacement; /* vertical adjustment for placement */ HB_Short XAdvance; /* horizontal adjustment for advance */ HB_Short YAdvance; /* vertical adjustment for advance */ HB_Device XPlacementDevice; /* device table for horizontal placement */ HB_Device YPlacementDevice; /* device table for vertical placement */ HB_Device XAdvanceDevice; /* device table for horizontal advance */ HB_Device YAdvanceDevice; /* device table for vertical advance */ HB_UShort XIdPlacement; /* horizontal placement metric ID */ HB_UShort YIdPlacement; /* vertical placement metric ID */ HB_UShort XIdAdvance; /* horizontal advance metric ID */ HB_UShort YIdAdvance; /* vertical advance metric ID */};typedef struct HB_ValueRecord_ HB_ValueRecord;/* Mask values to scan the value format of the ValueRecord structure. We always expand compressed ValueRecords of the font. */#define HB_GPOS_FORMAT_HAVE_X_PLACEMENT 0x0001#define HB_GPOS_FORMAT_HAVE_Y_PLACEMENT 0x0002#define HB_GPOS_FORMAT_HAVE_X_ADVANCE 0x0004#define HB_GPOS_FORMAT_HAVE_Y_ADVANCE 0x0008#define HB_GPOS_FORMAT_HAVE_X_PLACEMENT_DEVICE 0x0010#define HB_GPOS_FORMAT_HAVE_Y_PLACEMENT_DEVICE 0x0020#define HB_GPOS_FORMAT_HAVE_X_ADVANCE_DEVICE 0x0040#define HB_GPOS_FORMAT_HAVE_Y_ADVANCE_DEVICE 0x0080#define HB_GPOS_FORMAT_HAVE_X_ID_PLACEMENT 0x0100#define HB_GPOS_FORMAT_HAVE_Y_ID_PLACEMENT 0x0200#define HB_GPOS_FORMAT_HAVE_X_ID_ADVANCE 0x0400#define HB_GPOS_FORMAT_HAVE_Y_ID_ADVANCE 0x0800struct HB_AnchorFormat1_{ HB_Short XCoordinate; /* horizontal value */ HB_Short YCoordinate; /* vertical value */};typedef struct HB_AnchorFormat1_ HB_AnchorFormat1;struct HB_AnchorFormat2_{ HB_Short XCoordinate; /* horizontal value */ HB_Short YCoordinate; /* vertical value */ HB_UShort AnchorPoint; /* index to glyph contour point */};typedef struct HB_AnchorFormat2_ HB_AnchorFormat2;struct HB_AnchorFormat3_{ HB_Short XCoordinate; /* horizontal value */ HB_Short YCoordinate; /* vertical value */ HB_Device XDeviceTable; /* device table for X coordinate */ HB_Device YDeviceTable; /* device table for Y coordinate */};typedef struct HB_AnchorFormat3_ HB_AnchorFormat3;struct HB_AnchorFormat4_{ HB_UShort XIdAnchor; /* horizontal metric ID */ HB_UShort YIdAnchor; /* vertical metric ID */};typedef struct HB_AnchorFormat4_ HB_AnchorFormat4;struct HB_Anchor_{ HB_UShort PosFormat; /* 1, 2, 3, or 4 -- 0 indicates that there is no Anchor table */ union { HB_AnchorFormat1 af1; HB_AnchorFormat2 af2; HB_AnchorFormat3 af3; HB_AnchorFormat4 af4; } af;};typedef struct HB_Anchor_ HB_Anchor;struct HB_MarkRecord_{ HB_UShort Class; /* mark class */ HB_Anchor MarkAnchor; /* anchor table */};typedef struct HB_MarkRecord_ HB_MarkRecord;struct HB_MarkArray_{ HB_UShort MarkCount; /* number of MarkRecord tables */ HB_MarkRecord* MarkRecord; /* array of MarkRecord tables */};typedef struct HB_MarkArray_ HB_MarkArray;/* LookupType 1 */struct HB_SinglePosFormat1_{ HB_ValueRecord Value; /* ValueRecord for all covered glyphs */};typedef struct HB_SinglePosFormat1_ HB_SinglePosFormat1;struct HB_SinglePosFormat2_{ HB_UShort ValueCount; /* number of ValueRecord tables */ HB_ValueRecord* Value; /* array of ValueRecord tables */};typedef struct HB_SinglePosFormat2_ HB_SinglePosFormat2;struct HB_SinglePos_{ HB_UShort PosFormat; /* 1 or 2 */ HB_Coverage Coverage; /* Coverage table */ HB_UShort ValueFormat; /* format of ValueRecord table */ union { HB_SinglePosFormat1 spf1; HB_SinglePosFormat2 spf2; } spf;};typedef struct HB_SinglePos_ HB_SinglePos;/* LookupType 2 */struct HB_PairValueRecord_{ HB_UShort SecondGlyph; /* glyph ID for second glyph */ HB_ValueRecord Value1; /* pos. data for first glyph */ HB_ValueRecord Value2; /* pos. data for second glyph */};typedef struct HB_PairValueRecord_ HB_PairValueRecord;struct HB_PairSet_{ HB_UShort PairValueCount; /* number of PairValueRecord tables */ HB_PairValueRecord* PairValueRecord; /* array of PairValueRecord tables */};typedef struct HB_PairSet_ HB_PairSet;struct HB_PairPosFormat1_{ HB_UShort PairSetCount; /* number of PairSet tables */ HB_PairSet* PairSet; /* array of PairSet tables */};typedef struct HB_PairPosFormat1_ HB_PairPosFormat1;struct HB_Class2Record_{ HB_ValueRecord Value1; /* pos. data for first glyph */ HB_ValueRecord Value2; /* pos. data for second glyph */};typedef struct HB_Class2Record_ HB_Class2Record;struct HB_Class1Record_{ HB_Class2Record* Class2Record; /* array of Class2Record tables */};typedef struct HB_Class1Record_ HB_Class1Record;struct HB_PairPosFormat2_{ HB_ClassDefinition ClassDef1; /* class def. for first glyph */ HB_ClassDefinition ClassDef2; /* class def. for second glyph */ HB_UShort Class1Count; /* number of classes in ClassDef1 table */ HB_UShort Class2Count; /* number of classes in ClassDef2 table */ HB_Class1Record* Class1Record; /* array of Class1Record tables */};typedef struct HB_PairPosFormat2_ HB_PairPosFormat2;struct HB_PairPos_{ HB_UShort PosFormat; /* 1 or 2 */ HB_Coverage Coverage; /* Coverage table */ HB_UShort ValueFormat1; /* format of ValueRecord table for first glyph */ HB_UShort ValueFormat2; /* format of ValueRecord table for second glyph */ union { HB_PairPosFormat1 ppf1; HB_PairPosFormat2 ppf2; } ppf;};typedef struct HB_PairPos_ HB_PairPos;/* LookupType 3 */struct HB_EntryExitRecord_{ HB_Anchor EntryAnchor; /* entry Anchor table */ HB_Anchor ExitAnchor; /* exit Anchor table */};typedef struct HB_EntryExitRecord_ HB_EntryExitRecord;struct HB_CursivePos_{ HB_UShort PosFormat; /* always 1 */ HB_Coverage Coverage; /* Coverage table */ HB_UShort EntryExitCount; /* number of EntryExitRecord tables */ HB_EntryExitRecord* EntryExitRecord; /* array of EntryExitRecord tables */};typedef struct HB_CursivePos_ HB_CursivePos;/* LookupType 4 */struct HB_BaseRecord_{ HB_Anchor* BaseAnchor; /* array of base glyph anchor tables */};typedef struct HB_BaseRecord_ HB_BaseRecord;struct HB_BaseArray_{ HB_UShort BaseCount; /* number of BaseRecord tables */ HB_BaseRecord* BaseRecord; /* array of BaseRecord tables */};typedef struct HB_BaseArray_ HB_BaseArray;struct HB_MarkBasePos_{ HB_UShort PosFormat; /* always 1 */ HB_Coverage MarkCoverage; /* mark glyph coverage table */ HB_Coverage BaseCoverage; /* base glyph coverage table */ HB_UShort ClassCount; /* number of mark classes */ HB_MarkArray MarkArray; /* mark array table */ HB_BaseArray BaseArray; /* base array table */};typedef struct HB_MarkBasePos_ HB_MarkBasePos;/* LookupType 5 */struct HB_ComponentRecord_{ HB_Anchor* LigatureAnchor; /* array of ligature glyph anchor tables */};typedef struct HB_ComponentRecord_ HB_ComponentRecord;struct HB_LigatureAttach_{ HB_UShort ComponentCount; /* number of ComponentRecord tables */ HB_ComponentRecord* ComponentRecord; /* array of ComponentRecord tables */};typedef struct HB_LigatureAttach_ HB_LigatureAttach;struct HB_LigatureArray_{ HB_UShort LigatureCount; /* number of LigatureAttach tables */ HB_LigatureAttach* LigatureAttach;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -