summaryrefslogtreecommitdiff
path: root/Build/source/texk/ttfdump/include/gpos.h
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/ttfdump/include/gpos.h')
-rw-r--r--Build/source/texk/ttfdump/include/gpos.h229
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 */