diff options
Diffstat (limited to 'Build/source/texk/ttfdump/include/otftables.h')
-rw-r--r-- | Build/source/texk/ttfdump/include/otftables.h | 368 |
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 */ |