diff options
Diffstat (limited to 'Build/source/texk/ttfdump/include/gpos.h')
-rw-r--r-- | Build/source/texk/ttfdump/include/gpos.h | 229 |
1 files changed, 229 insertions, 0 deletions
diff --git a/Build/source/texk/ttfdump/include/gpos.h b/Build/source/texk/ttfdump/include/gpos.h new file mode 100644 index 00000000000..23e5bda0846 --- /dev/null +++ b/Build/source/texk/ttfdump/include/gpos.h @@ -0,0 +1,229 @@ +/* gpos.h -- define data structures for Glyph Positioning Table + */ + +#ifndef __TTF_GPOS_H +#define __TTF_GPOS_H + +/* ValueFormat Bits */ +#define ValueFormat_XPlacement 0x0001 << 0 +#define ValueFormat_YPlacement 0x0001 << 1 +#define ValueFormat_XAdvance 0x0001 << 2 +#define ValueFormat_YAdvance 0x0001 << 3 +#define ValueFormat_AllDesign 0x000f +#define ValueFormat_XPlaDevice 0x0010 << 0 +#define ValueFormat_YPlaDevice 0x0010 << 1 +#define ValueFormat_XAdvDevice 0x0010 << 2 +#define ValueFormat_YAdvDevice 0x0010 << 3 +#define ValueFormat_AllDevice 0x00f0 +#define ValueFormat_Reserved 0xff00 + +/* Positioning LookupType Values */ +#define PosLookup_SingleAdjustment 1 +#define PosLookup_PairAdjustment 2 +#define PosLookup_CursiveAttachment 3 +#define PosLookup_MarkToBaseAttachment 4 +#define PosLookup_MarkToLigatureAttachment 5 +#define PosLookup_MarkToMarkAttachment 6 +#define PosLookup_ContextPositioning 7 +#define PosLookup_ChainedContextPositioning 8 +#define PosLookup_ExtensionPositioning 9 +#define PosLookup_Max 9 + +typedef struct +{ + SHORT valDesign[4]; + DevicePtr valDevice[4]; +} +ValueRecord, *ValueRecordPtr; + +typedef struct +{ + USHORT anchorFormat; /* = 1 */ + SHORT xCoordinate; + SHORT yCoordinate; +} +Anchor1, *Anchor1Ptr; + +typedef struct +{ + USHORT anchorFormat; /* = 2 */ + SHORT xCoordinate; + SHORT yCoordinate; + USHORT anchorPoint; +} +Anchor2, *Anchor2Ptr; + +typedef struct +{ + USHORT anchorFormat; /* = 3 */ + SHORT xCoordinate; + SHORT yCoordinate; + DevicePtr xDevice; + DevicePtr yDevice; +} +Anchor3, *Anchor3Ptr; + +typedef union +{ + Anchor1Ptr anchor1; + Anchor2Ptr anchor2; + Anchor3Ptr anchor3; +} +AnchorPtr; + +typedef struct +{ + USHORT class; + AnchorPtr markAnchor; +} +MarkRecord, *MarkRecordPtr; + +typedef struct +{ + USHORT lookupType; /* = 1 */ + USHORT lookupFormat; /* = 1 */ + CoveragePtr coverage; + USHORT valueFormat; + ValueRecordPtr value; +} +Pos11, *Pos11Ptr; + +typedef struct +{ + USHORT lookupType; /* = 1 */ + USHORT lookupFormat; /* = 2 */ + CoveragePtr coverage; + USHORT valueFormat; + USHORT valueCount; + ValueRecordPtr *value; /* length = valueCount */ +} +Pos12, *Pos12Ptr; + +typedef struct +{ + USHORT secondGlyph; + ValueRecordPtr value1; + ValueRecordPtr value2; +} +PairValueRecord, *PairValueRecordPtr; + +typedef struct +{ + USHORT pairValueCount; + PairValueRecordPtr pairValue; /* length = pairValueCount */ +} +PairSet, *PairSetPtr; + +typedef struct +{ + USHORT lookupType; /* = 2 */ + USHORT lookupFormat; /* = 1 */ + CoveragePtr coverage; + USHORT valueFormat1; + USHORT valueFormat2; + USHORT pairSetCount; + PairSetPtr pairSet; /* length = pairSetCount */ +} +Pos21, *Pos21Ptr; + +typedef struct +{ + USHORT lookupType; /* = 2 */ + USHORT lookupFormat; /* = 2 */ + CoveragePtr coverage; + USHORT valueFormat1; + USHORT valueFormat2; + ClassDefPtr classDef1; + ClassDefPtr classDef2; + USHORT class1Count; + USHORT class2Count; + ValueRecordPtr *values; /* length = 2 * class1Count * class2Count */ +} +Pos22, *Pos22Ptr; + +typedef struct +{ + USHORT lookupType; /* = 3 */ + USHORT lookupFormat; /* = 1 */ + CoveragePtr coverage; + USHORT entryExitCount; + AnchorPtr *entryExit; /* length = 2 * entryExitCount */ +} +Pos31, *Pos31Ptr; + +typedef struct +{ + USHORT lookupType; /* = 4 */ + USHORT lookupFormat; /* = 1 */ + CoveragePtr markCoverage; + CoveragePtr baseCoverage; + USHORT markCount; + USHORT baseCount; + USHORT classCount; + MarkRecordPtr markArray; /* length = markCount */ + AnchorPtr *baseArray; /* length = baseCount * classCount */ +} +Pos41, *Pos41Ptr; + +typedef struct +{ + USHORT componentCount; + AnchorPtr *componentRecord; /* length = componentCount * classCount */ +} +LigatureAttach, *LigatureAttachPtr; + +typedef struct +{ + USHORT lookupType; /* = 5 */ + USHORT lookupFormat; /* = 1 */ + CoveragePtr markCoverage; + CoveragePtr ligatureCoverage; + USHORT markCount; + USHORT ligatureCount; + USHORT classCount; + MarkRecordPtr markArray; /* length = markCount */ + LigatureAttachPtr ligatureArray; /* length = ligatureCount */ +} +Pos51, *Pos51Ptr; + +typedef struct +{ + USHORT lookupType; /* = 6 */ + USHORT lookupFormat; /* = 1 */ + CoveragePtr mark1Coverage; + CoveragePtr mark2Coverage; + USHORT mark1Count; + USHORT mark2Count; + USHORT classCount; + MarkRecordPtr mark1Array; /* length = mark1Count */ + AnchorPtr *mark2Array; /* length = mark2Count * classCount */ +} +Pos61, *Pos61Ptr; + +#define Pos71Ptr OtfCtx1Ptr +#define Pos72Ptr OtfCtx2Ptr +#define Pos73Ptr OtfCtx3Ptr +#define Pos81Ptr OtfChn1Ptr +#define Pos82Ptr OtfChn2Ptr +#define Pos83Ptr OtfChn3Ptr + +typedef union +{ + Pos11Ptr pos11; + Pos12Ptr pos12; + Pos21Ptr pos21; + Pos22Ptr pos22; + Pos31Ptr pos31; + Pos41Ptr pos41; + Pos51Ptr pos51; + Pos61Ptr pos61; + Pos71Ptr pos71; + Pos72Ptr pos72; + Pos73Ptr pos73; + Pos81Ptr pos81; + Pos82Ptr pos82; + Pos83Ptr pos83; +} +PosLookupPtr; + +#endif /* __TTF_GPOS_H */ |