import r from 'restructure'; import { ScriptList, FeatureList, LookupList, Coverage, ClassDef, Device } from './opentype'; import { GPOSLookup } from './GPOS'; let JstfGSUBModList = new r.Array(r.uint16, r.uint16); let JstfPriority = new r.Struct({ shrinkageEnableGSUB: new r.Pointer(r.uint16, JstfGSUBModList), shrinkageDisableGSUB: new r.Pointer(r.uint16, JstfGSUBModList), shrinkageEnableGPOS: new r.Pointer(r.uint16, JstfGSUBModList), shrinkageDisableGPOS: new r.Pointer(r.uint16, JstfGSUBModList), shrinkageJstfMax: new r.Pointer(r.uint16, new LookupList(GPOSLookup)), extensionEnableGSUB: new r.Pointer(r.uint16, JstfGSUBModList), extensionDisableGSUB: new r.Pointer(r.uint16, JstfGSUBModList), extensionEnableGPOS: new r.Pointer(r.uint16, JstfGSUBModList), extensionDisableGPOS: new r.Pointer(r.uint16, JstfGSUBModList), extensionJstfMax: new r.Pointer(r.uint16, new LookupList(GPOSLookup)) }); let JstfLangSys = new r.Array(new r.Pointer(r.uint16, JstfPriority), r.uint16); let JstfLangSysRecord = new r.Struct({ tag: new r.String(4), jstfLangSys: new r.Pointer(r.uint16, JstfLangSys) }); let JstfScript = new r.Struct({ extenderGlyphs: new r.Pointer(r.uint16, new r.Array(r.uint16, r.uint16)), // array of glyphs to extend line length defaultLangSys: new r.Pointer(r.uint16, JstfLangSys), langSysCount: r.uint16, langSysRecords: new r.Array(JstfLangSysRecord, 'langSysCount') }); let JstfScriptRecord = new r.Struct({ tag: new r.String(4), script: new r.Pointer(r.uint16, JstfScript, {type: 'parent'}) }); export default new r.Struct({ version: r.uint32, // should be 0x00010000 scriptCount: r.uint16, scriptList: new r.Array(JstfScriptRecord, 'scriptCount') });