summaryrefslogtreecommitdiff
path: root/Build/source/texk/ttfdump/include/otftables.h
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/ttfdump/include/otftables.h')
-rw-r--r--Build/source/texk/ttfdump/include/otftables.h368
1 files changed, 368 insertions, 0 deletions
diff --git a/Build/source/texk/ttfdump/include/otftables.h b/Build/source/texk/ttfdump/include/otftables.h
new file mode 100644
index 00000000000..5a6cc54c57e
--- /dev/null
+++ b/Build/source/texk/ttfdump/include/otftables.h
@@ -0,0 +1,368 @@
+/* otftables.h -- define data structures for various OpenType Tables
+ * See Also: OpenType Specification
+ */
+
+#ifndef __TTF_OTFTABLES_H
+#define __TTF_OTFTABLES_H
+
+typedef struct
+{
+ USHORT reqFeatureIndex;
+ USHORT featureCount;
+ USHORT *featureIndex; /* length = featureCount */
+}
+LangSys, *LangSysPtr;
+
+typedef struct
+{
+ ULONG tag;
+ LangSysPtr langSys;
+}
+LangSysRecord, *LangSysRecordPtr;
+
+typedef struct
+{
+ ULONG tag;
+ LangSysPtr defaultLangSys;
+ USHORT langSysCount;
+ LangSysRecord *langSysRecord; /* length = langSysCount */
+}
+ScriptRecord, *ScriptRecordPtr;
+
+typedef struct
+{
+ USHORT scriptCount;
+ ScriptRecord *scriptRecord; /* length = scriptCount */
+}
+ScriptList, *ScriptListPtr;
+
+typedef struct
+{
+ ULONG tag;
+ USHORT featureParams;
+ USHORT lookupCount;
+ USHORT *lookupListIndex; /* length = lookupCount */
+}
+FeatureRecord, *FeatureRecordPtr;
+
+typedef struct
+{
+ USHORT featureCount;
+ FeatureRecord *featureRecord; /* length = featureCount */
+}
+FeatureList, *FeatureListPtr;
+
+typedef struct
+{
+ USHORT start;
+ USHORT end;
+ USHORT startCoverageIndex;
+}
+RangeRecord, *RangeRecordPtr;
+
+typedef struct
+{
+ USHORT coverageFormat; /* = 1 */
+ USHORT glyphCount;
+ USHORT *glyphArray; /* length = glyphCount */
+}
+Coverage1, *Coverage1Ptr;
+
+typedef struct
+{
+ USHORT coverageFormat; /* = 2 */
+ USHORT rangeCount;
+ RangeRecordPtr rangeRecord; /* length = rangeCount */
+}
+Coverage2, *Coverage2Ptr;
+
+typedef union
+{
+ USHORT *format;
+ Coverage1Ptr coverage1;
+ Coverage2Ptr coverage2;
+}
+CoveragePtr;
+
+typedef struct
+{
+ USHORT start;
+ USHORT end;
+ USHORT classValue;
+}
+ClassRangeRecord, *ClassRangeRecordPtr;
+
+typedef struct
+{
+ USHORT classFormat; /* = 1 */
+ USHORT startGlyph;
+ USHORT glyphCount;
+ USHORT *classValueArray; /* length = glyphCount */
+}
+ClassDef1, *ClassDef1Ptr;
+
+typedef struct
+{
+ USHORT classFormat; /* = 2 */
+ USHORT classRangeCount;
+ ClassRangeRecordPtr classRangeRecord; /* length = classRangeCount */
+}
+ClassDef2, *ClassDef2Ptr;
+
+typedef union
+{
+ USHORT *format;
+ ClassDef1Ptr classDef1;
+ ClassDef2Ptr classDef2;
+}
+ClassDefPtr;
+
+typedef struct
+{
+ USHORT startSize;
+ USHORT endSize;
+ USHORT deltaFormat; /* = 1, 2, or 3 */
+ USHORT deltaValue[1]; /* variable size
+ * (endSize-startSize+1) entries
+ * 8, 4, or 2 entries per array element */
+}
+Device, *DevicePtr;
+
+typedef struct
+{
+ USHORT sequenceIndex;
+ USHORT lookupListIndex;
+}
+OtfLookupRecord, *OtfLookupRecordPtr;
+
+typedef struct
+{
+ USHORT glyphCount;
+ USHORT otfCount;
+ USHORT *input; /* length = glyphCount - 1 */
+ OtfLookupRecordPtr otf; /* length = otfCount */
+}
+OtfRule, *OtfRulePtr;
+
+typedef struct
+{
+ USHORT otfRuleCount;
+ OtfRulePtr otfRule; /* length = otfRuleCount */
+}
+OtfRuleSet, *OtfRuleSetPtr;
+
+typedef struct
+{
+ USHORT lookupType; /* = 7 (GPOS) or 5 (GSUB) */
+ USHORT lookupFormat; /* = 1 */
+ CoveragePtr coverage;
+ USHORT otfRuleSetCount;
+ OtfRuleSetPtr otfRuleSet; /* length = otfRuleSetCount */
+}
+OtfCtx1, *OtfCtx1Ptr;
+
+OtfCtx1Ptr makeOTFCtx1 (FILE *fp, ULONG offset);
+void printOTFCtx1 (FILE *fp, OtfCtx1Ptr otf);
+void freeOTFCtx1 (OtfCtx1Ptr otf);
+
+typedef struct
+{
+ USHORT glyphCount;
+ USHORT otfCount;
+ USHORT *class; /* length = glyphCount - 1 */
+ OtfLookupRecordPtr otf; /* length = otfCount */
+}
+OtfClassRule, *OtfClassRulePtr;
+
+typedef struct
+{
+ USHORT otfClassRuleCnt;
+ OtfClassRulePtr otfClassRule; /* length = otfClassRuleCnt */
+}
+OtfClassSet, *OtfClassSetPtr;
+
+typedef struct
+{
+ USHORT lookupType; /* = 7 (GPOS) or 5 (GSUB) */
+ USHORT lookupFormat; /* = 2 */
+ CoveragePtr coverage;
+ ClassDefPtr classDef;
+ USHORT otfClassSetCnt;
+ OtfClassSetPtr otfClassSet; /* length = otfClassSetCnt */
+}
+OtfCtx2, *OtfCtx2Ptr;
+
+OtfCtx2Ptr makeOTFCtx2 (FILE *fp, ULONG offset);
+void printOTFCtx2 (FILE *fp, OtfCtx2Ptr otf);
+void freeOTFCtx2 (OtfCtx2Ptr otf);
+
+typedef struct
+{
+ USHORT lookupType; /* = 7 (GPOS) or 5 (GSUB) */
+ USHORT lookupFormat; /* = 3 */
+ USHORT glyphCount;
+ USHORT otfCount;
+ CoveragePtr *glyphs; /* length = glyphCount */
+ OtfLookupRecordPtr otf; /* length = otfCount */
+}
+OtfCtx3, *OtfCtx3Ptr;
+
+OtfCtx3Ptr makeOTFCtx3 (FILE *fp, ULONG offset);
+void printOTFCtx3 (FILE *fp, OtfCtx3Ptr otf);
+void freeOTFCtx3 (OtfCtx3Ptr otf);
+
+typedef struct
+{
+ USHORT backtrackGlyphCount;
+ USHORT *backtrack; /* length = backtrackGlyphCount */
+ USHORT inputGlyphCount;
+ USHORT *input; /* length = inputGlyphCount - 1 */
+ USHORT lookaheadGlyphCount;
+ USHORT *lookahead; /* length = lookaheadGlyphCount */
+ USHORT otfCount;
+ OtfLookupRecordPtr otf; /* length = otfCount */
+}
+ChainOtfRule, *ChainOtfRulePtr;
+
+typedef struct
+{
+ USHORT chainOtfRuleCount;
+ ChainOtfRulePtr chainOtfRule; /* length = chainOtfRuleCount */
+}
+ChainOtfRuleSet, *ChainOtfRuleSetPtr;
+
+typedef struct
+{
+ USHORT lookupType; /* = 8 (GPOS) or 6 (GSUB) */
+ USHORT lookupFormat; /* = 1 */
+ CoveragePtr coverage;
+ USHORT chainOtfRuleSetCount;
+ ChainOtfRuleSetPtr chainOtfRuleSet; /* length = chainOtfRuleSetCount */
+}
+OtfChn1, *OtfChn1Ptr;
+
+OtfChn1Ptr makeOTFChn1 (FILE *fp, ULONG offset);
+void printOTFChn1 (FILE *fp, OtfChn1Ptr otf);
+void freeOTFChn1 (OtfChn1Ptr otf);
+
+typedef struct
+{
+ USHORT backtrackGlyphCount;
+ USHORT *backtrack; /* length = backtrackGlyphCount */
+ USHORT inputGlyphCount;
+ USHORT *input; /* length = inputGlyphCount - 1 */
+ USHORT lookaheadGlyphCount;
+ USHORT *lookahead; /* length = lookaheadGlyphCount */
+ USHORT otfCount;
+ OtfLookupRecordPtr otf; /* length = otfCount */
+}
+ChainOtfClassRule, *ChainOtfClassRulePtr;
+
+typedef struct
+{
+ USHORT chainOtfClassRuleCnt;
+ ChainOtfClassRulePtr chainOtfClassRule; /* length = chainOtfClassRuleCnt */
+}
+ChainOtfClassSet, *ChainOtfClassSetPtr;
+
+typedef struct
+{
+ USHORT lookupType; /* = 8 (GPOS) or 6 (GSUB) */
+ USHORT lookupFormat; /* = 2 */
+ CoveragePtr coverage;
+ ClassDefPtr backtrackClassDef;
+ ClassDefPtr inputClassDef;
+ ClassDefPtr lookaheadClassDef;
+ USHORT chainOtfClassSetCnt;
+ ChainOtfClassSetPtr chainOtfClassSet; /* length = chainOtfClassSetCnt */
+}
+OtfChn2, *OtfChn2Ptr;
+
+OtfChn2Ptr makeOTFChn2 (FILE *fp, ULONG offset);
+void printOTFChn2 (FILE *fp, OtfChn2Ptr otf);
+void freeOTFChn2 (OtfChn2Ptr otf);
+
+typedef struct
+{
+ USHORT lookupType; /* = 8 (GPOS) or 6 (GSUB) */
+ USHORT lookupFormat; /* = 3 */
+ USHORT backtrackGlyphCount;
+ CoveragePtr *backtrack; /* length = backtrackGlyphCount */
+ USHORT inputGlyphCount;
+ CoveragePtr *input; /* length = inputGlyphCount */
+ USHORT lookaheadGlyphCount;
+ CoveragePtr *lookahead; /* length = lookaheadGlyphCount */
+ USHORT otfCount;
+ OtfLookupRecordPtr otf; /* length = otfCount */
+}
+OtfChn3, *OtfChn3Ptr;
+
+OtfChn3Ptr makeOTFChn3 (FILE *fp, ULONG offset);
+void printOTFChn3 (FILE *fp, OtfChn3Ptr otf);
+void freeOTFChn3 (OtfChn3Ptr otf);
+
+#include "gpos.h"
+#include "gsub.h"
+
+typedef struct
+{
+ USHORT lookupType;
+ USHORT lookupFormat;
+}
+OtfLookup, *OtfLookupPtr;
+
+typedef union
+{
+ OtfLookupPtr otf;
+ PosLookupPtr pos;
+ SubLookupPtr sub;
+}
+LookupPtr;
+
+typedef struct
+{
+ USHORT lookupFlag;
+ USHORT subTableCount;
+ USHORT markFilteringSet;
+ LookupPtr *lookup; /* length = subTableCount */
+} LookupRecord, *LookupRecordPtr;
+
+/* LookupFlag Bits */
+#define LookupFlag_RightToLeft 0x0001
+#define lookupFlag_IgnoreBaseGlyphs 0x0002
+#define lookupFlag_IgnoreLigatures 0x0004
+#define lookupFlag_IgnoreMarks 0x0008
+#define lookupFlag_UseMarkFilteringSet 0x0010
+#define lookupFlag_Reserved 0x00e0
+#define lookupFlag_MarkAttachmentType 0xff00
+
+typedef struct
+{
+ USHORT lookupCount;
+ LookupRecord *lookupRecord;
+}
+LookupList, *LookupListPtr;
+
+typedef LookupPtr (MakeLookupFunc) (FILE *fp, USHORT lookupType, ULONG offset);
+typedef void (PrintLookupFunc) (FILE *fp, LookupPtr lookup);
+typedef void (FreeLookupFunc) (LookupPtr lookup);
+
+typedef struct
+{
+ Fixed version;
+ ScriptListPtr scriptList;
+ FeatureListPtr featureList;
+ LookupListPtr lookupList;
+}
+GPOS, *GPOSPtr;
+
+typedef struct
+{
+ Fixed version;
+ ScriptListPtr scriptList;
+ FeatureListPtr featureList;
+ LookupListPtr lookupList;
+}
+GSUB, *GSUBPtr;
+
+#endif /* __TTF_OTFTABLES_H */