Preview: browser-module.mjs.map
Size: 704.82 KB
/home/byroehnu/easepay.easetack.com/node_modules/fontkit/dist/browser-module.mjs.map
{"mappings":"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,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,QAAQ;QAAY,QAAQ;QAAe,QAAQ;QACvE,QAAQ;QAAY,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","sources":["src/index.js","src/base.js","src/TTFFont.js","src/decorators.js","src/tables/directory.js","src/tables/index.js","src/tables/cmap.js","src/tables/head.js","src/tables/hhea.js","src/tables/hmtx.js","src/tables/maxp.js","src/tables/name.js","src/encodings.js","src/tables/OS2.js","src/tables/post.js","src/tables/cvt.js","src/tables/fpgm.js","src/tables/loca.js","src/tables/prep.js","src/tables/glyf.js","src/cff/CFFFont.js","src/cff/CFFIndex.js","src/cff/CFFTop.js","src/cff/CFFDict.js","src/cff/CFFOperand.js","src/cff/CFFPointer.js","src/cff/CFFPrivateDict.js","src/cff/CFFStandardStrings.js","src/cff/CFFEncodings.js","src/cff/CFFCharsets.js","src/tables/variations.js","src/tables/opentype.js","src/tables/VORG.js","src/tables/EBLC.js","src/tables/EBDT.js","src/tables/sbix.js","src/tables/COLR.js","src/tables/CPAL.js","src/tables/BASE.js","src/tables/GDEF.js","src/tables/GPOS.js","src/tables/GSUB.js","src/tables/JSTF.js","src/tables/HVAR.js","src/tables/DSIG.js","src/tables/gasp.js","src/tables/hdmx.js","src/tables/kern.js","src/tables/LTSH.js","src/tables/PCLT.js","src/tables/VDMX.js","src/tables/vhea.js","src/tables/vmtx.js","src/tables/avar.js","src/tables/bsln.js","src/tables/aat.js","src/tables/feat.js","src/tables/fvar.js","src/tables/gvar.js","src/tables/just.js","src/tables/morx.js","src/tables/opbd.js","src/CmapProcessor.js","src/utils.js","src/layout/LayoutEngine.js","src/layout/KernProcessor.js","src/layout/UnicodeLayoutEngine.js","src/layout/GlyphRun.js","src/glyph/BBox.js","src/layout/Script.js","src/layout/GlyphPosition.js","src/aat/AATLayoutEngine.js","src/aat/AATFeatureMap.js","src/aat/AATMorxProcessor.js","src/aat/AATStateMachine.js","src/aat/AATLookupTable.js","src/opentype/OTLayoutEngine.js","src/opentype/ShapingPlan.js","src/opentype/shapers/index.js","src/opentype/shapers/DefaultShaper.js","src/opentype/shapers/ArabicShaper.js","src/opentype/shapers/HangulShaper.js","src/opentype/GlyphInfo.js","src/opentype/OTProcessor.js","src/opentype/GlyphIterator.js","src/opentype/shapers/IndicShaper.js","src/opentype/shapers/indic.json","src/opentype/shapers/use.json","src/opentype/shapers/indic-data.js","src/opentype/shapers/UniversalShaper.js","src/opentype/GSUBProcessor.js","src/opentype/GPOSProcessor.js","src/glyph/TTFGlyph.js","src/glyph/Glyph.js","src/glyph/Path.js","src/glyph/StandardNames.js","src/glyph/CFFGlyph.js","src/glyph/SBIXGlyph.js","src/glyph/COLRGlyph.js","src/glyph/GlyphVariationProcessor.js","src/subset/TTFSubset.js","src/subset/Subset.js","src/glyph/TTFGlyphEncoder.js","src/subset/CFFSubset.js","src/WOFFFont.js","src/tables/WOFFDirectory.js","src/WOFF2Font.js","src/glyph/WOFF2Glyph.js","src/tables/WOFF2Directory.js","src/TrueTypeCollection.js","src/DFont.js"],"sourcesContent":["import { registerFormat, create, defaultLanguage, setDefaultLanguage } from './base';\nimport TTFFont from './TTFFont';\nimport WOFFFont from './WOFFFont';\nimport WOFF2Font from './WOFF2Font';\nimport TrueTypeCollection from './TrueTypeCollection';\nimport DFont from './DFont';\n\n// Register font formats\nregisterFormat(TTFFont);\nregisterFormat(WOFFFont);\nregisterFormat(WOFF2Font);\nregisterFormat(TrueTypeCollection);\nregisterFormat(DFont);\n\nexport * from './base';\n","import {DecodeStream} from 'restructure';\n\nexport let logErrors = false;\n\nlet formats = [];\nexport function registerFormat(format) {\n formats.push(format);\n};\n\nexport function create(buffer, postscriptName) {\n for (let i = 0; i < formats.length; i++) {\n let format = formats[i];\n if (format.probe(buffer)) {\n let font = new format(new DecodeStream(buffer));\n if (postscriptName) {\n return font.getFont(postscriptName);\n }\n\n return font;\n }\n }\n\n throw new Error('Unknown font format');\n};\n\nexport let defaultLanguage = 'en';\nexport function setDefaultLanguage(lang = 'en') {\n defaultLanguage = lang;\n};\n","import * as r from 'restructure';\nimport { cache } from './decorators';\nimport * as fontkit from './base';\nimport Directory from './tables/directory';\nimport tables from './tables';\nimport CmapProcessor from './CmapProcessor';\nimport LayoutEngine from './layout/LayoutEngine';\nimport TTFGlyph from './glyph/TTFGlyph';\nimport CFFGlyph from './glyph/CFFGlyph';\nimport SBIXGlyph from './glyph/SBIXGlyph';\nimport COLRGlyph from './glyph/COLRGlyph';\nimport GlyphVariationProcessor from './glyph/GlyphVariationProcessor';\nimport TTFSubset from './subset/TTFSubset';\nimport CFFSubset from './subset/CFFSubset';\nimport BBox from './glyph/BBox';\nimport { asciiDecoder } from './utils';\n\n/**\n * This is the base class for all SFNT-based font formats in fontkit.\n * It supports TrueType, and PostScript glyphs, and several color glyph formats.\n */\nexport default class TTFFont {\n type = 'TTF';\n\n static probe(buffer) {\n let format = asciiDecoder.decode(buffer.slice(0, 4));\n return format === 'true' || format === 'OTTO' || format === String.fromCharCode(0, 1, 0, 0);\n }\n\n constructor(stream, variationCoords = null) {\n this.defaultLanguage = null;\n this.stream = stream;\n this.variationCoords = variationCoords;\n\n this._directoryPos = this.stream.pos;\n this._tables = {};\n this._glyphs = {};\n this._decodeDirectory();\n\n // define properties for each table to lazily parse\n for (let tag in this.directory.tables) {\n let table = this.directory.tables[tag];\n if (tables[tag] && table.length > 0) {\n Object.defineProperty(this, tag, {\n get: this._getTable.bind(this, table)\n });\n }\n }\n }\n\n setDefaultLanguage(lang = null) {\n this.defaultLanguage = lang;\n }\n\n _getTable(table) {\n if (!(table.tag in this._tables)) {\n try {\n this._tables[table.tag] = this._decodeTable(table);\n } catch (e) {\n if (fontkit.logErrors) {\n console.error(`Error decoding table ${table.tag}`);\n console.error(e.stack);\n }\n }\n }\n\n return this._tables[table.tag];\n }\n\n _getTableStream(tag) {\n let table = this.directory.tables[tag];\n if (table) {\n this.stream.pos = table.offset;\n return this.stream;\n }\n\n return null;\n }\n\n _decodeDirectory() {\n return this.directory = Directory.decode(this.stream, {_startOffset: 0});\n }\n\n _decodeTable(table) {\n let pos = this.stream.pos;\n\n let stream = this._getTableStream(table.tag);\n let result = tables[table.tag].decode(stream, this, table.length);\n\n this.stream.pos = pos;\n return result;\n }\n\n /**\n * Gets a string from the font's `name` table\n * `lang` is a BCP-47 language code.\n * @return {string}\n */\n getName(key, lang = this.defaultLanguage || fontkit.defaultLanguage) {\n let record = this.name && this.name.records[key];\n if (record) {\n // Attempt to retrieve the entry, depending on which translation is available:\n return (\n record[lang]\n || record[this.defaultLanguage]\n || record[fontkit.defaultLanguage]\n || record['en']\n || record[Object.keys(record)[0]] // Seriously, ANY language would be fine\n || null\n );\n }\n\n return null;\n }\n\n /**\n * The unique PostScript name for this font, e.g. \"Helvetica-Bold\"\n * @type {string}\n */\n get postscriptName() {\n return this.getName('postscriptName');\n }\n\n /**\n * The font's full name, e.g. \"Helvetica Bold\"\n * @type {string}\n */\n get fullName() {\n return this.getName('fullName');\n }\n\n /**\n * The font's family name, e.g. \"Helvetica\"\n * @type {string}\n */\n get familyName() {\n return this.getName('fontFamily');\n }\n\n /**\n * The font's sub-family, e.g. \"Bold\".\n * @type {string}\n */\n get subfamilyName() {\n return this.getName('fontSubfamily');\n }\n\n /**\n * The font's copyright information\n * @type {string}\n */\n get copyright() {\n return this.getName('copyright');\n }\n\n /**\n * The font's version number\n * @type {string}\n */\n get version() {\n return this.getName('version');\n }\n\n /**\n * The font’s [ascender](https://en.wikipedia.org/wiki/Ascender_(typography))\n * @type {number}\n */\n get ascent() {\n return this.hhea.ascent;\n }\n\n /**\n * The font’s [descender](https://en.wikipedia.org/wiki/Descender)\n * @type {number}\n */\n get descent() {\n return this.hhea.descent;\n }\n\n /**\n * The amount of space that should be included between lines\n * @type {number}\n */\n get lineGap() {\n return this.hhea.lineGap;\n }\n\n /**\n * The offset from the normal underline position that should be used\n * @type {number}\n */\n get underlinePosition() {\n return this.post.underlinePosition;\n }\n\n /**\n * The weight of the underline that should be used\n * @type {number}\n */\n get underlineThickness() {\n return this.post.underlineThickness;\n }\n\n /**\n * If this is an italic font, the angle the cursor should be drawn at to match the font design\n * @type {number}\n */\n get italicAngle() {\n return this.post.italicAngle;\n }\n\n /**\n * The height of capital letters above the baseline.\n * See [here](https://en.wikipedia.org/wiki/Cap_height) for more details.\n * @type {number}\n */\n get capHeight() {\n let os2 = this['OS/2'];\n return os2 ? os2.capHeight : this.ascent;\n }\n\n /**\n * The height of lower case letters in the font.\n * See [here](https://en.wikipedia.org/wiki/X-height) for more details.\n * @type {number}\n */\n get xHeight() {\n let os2 = this['OS/2'];\n return os2 ? os2.xHeight : 0;\n }\n\n /**\n * The number of glyphs in the font.\n * @type {number}\n */\n get numGlyphs() {\n return this.maxp.numGlyphs;\n }\n\n /**\n * The size of the font’s internal coordinate grid\n * @type {number}\n */\n get unitsPerEm() {\n return this.head.unitsPerEm;\n }\n\n /**\n * The font’s bounding box, i.e. the box that encloses all glyphs in the font.\n * @type {BBox}\n */\n @cache\n get bbox() {\n return Object.freeze(new BBox(this.head.xMin, this.head.yMin, this.head.xMax, this.head.yMax));\n }\n\n @cache\n get _cmapProcessor() {\n return new CmapProcessor(this.cmap);\n }\n\n /**\n * An array of all of the unicode code points supported by the font.\n * @type {number[]}\n */\n @cache\n get characterSet() {\n return this._cmapProcessor.getCharacterSet();\n }\n\n /**\n * Returns whether there is glyph in the font for the given unicode code point.\n *\n * @param {number} codePoint\n * @return {boolean}\n */\n hasGlyphForCodePoint(codePoint) {\n return !!this._cmapProcessor.lookup(codePoint);\n }\n\n /**\n * Maps a single unicode code point to a Glyph object.\n * Does not perform any advanced substitutions (there is no context to do so).\n *\n * @param {number} codePoint\n * @return {Glyph}\n */\n glyphForCodePoint(codePoint) {\n return this.getGlyph(this._cmapProcessor.lookup(codePoint), [codePoint]);\n }\n\n /**\n * Returns an array of Glyph objects for the given string.\n * This is only a one-to-one mapping from characters to glyphs.\n * For most uses, you should use font.layout (described below), which\n * provides a much more advanced mapping supporting AAT and OpenType shaping.\n *\n * @param {string} string\n * @return {Glyph[]}\n */\n glyphsForString(string) {\n let glyphs = [];\n let len = string.length;\n let idx = 0;\n let last = -1;\n let state = -1;\n\n while (idx <= len) {\n let code = 0;\n let nextState = 0;\n\n if (idx < len) {\n // Decode the next codepoint from UTF 16\n code = string.charCodeAt(idx++);\n if (0xd800 <= code && code <= 0xdbff && idx < len) {\n let next = string.charCodeAt(idx);\n if (0xdc00 <= next && next <= 0xdfff) {\n idx++;\n code = ((code & 0x3ff) << 10) + (next & 0x3ff) + 0x10000;\n }\n }\n\n // Compute the next state: 1 if the next codepoint is a variation selector, 0 otherwise.\n nextState = ((0xfe00 <= code && code <= 0xfe0f) || (0xe0100 <= code && code <= 0xe01ef)) ? 1 : 0;\n } else {\n idx++;\n }\n\n if (state === 0 && nextState === 1) {\n // Variation selector following normal codepoint.\n glyphs.push(this.getGlyph(this._cmapProcessor.lookup(last, code), [last, code]));\n } else if (state === 0 && nextState === 0) {\n // Normal codepoint following normal codepoint.\n glyphs.push(this.glyphForCodePoint(last));\n }\n\n last = code;\n state = nextState;\n }\n\n return glyphs;\n }\n\n @cache\n get _layoutEngine() {\n return new LayoutEngine(this);\n }\n\n /**\n * Returns a GlyphRun object, which includes an array of Glyphs and GlyphPositions for the given string.\n *\n * @param {string} string\n * @param {string[]} [userFeatures]\n * @param {string} [script]\n * @param {string} [language]\n * @param {string} [direction]\n * @return {GlyphRun}\n */\n layout(string, userFeatures, script, language, direction) {\n return this._layoutEngine.layout(string, userFeatures, script, language, direction);\n }\n\n /**\n * Returns an array of strings that map to the given glyph id.\n * @param {number} gid - glyph id\n */\n stringsForGlyph(gid) {\n return this._layoutEngine.stringsForGlyph(gid);\n }\n\n /**\n * An array of all [OpenType feature tags](https://www.microsoft.com/typography/otspec/featuretags.htm)\n * (or mapped AAT tags) supported by the font.\n * The features parameter is an array of OpenType feature tags to be applied in addition to the default set.\n * If this is an AAT font, the OpenType feature tags are mapped to AAT features.\n *\n * @type {string[]}\n */\n get availableFeatures() {\n return this._layoutEngine.getAvailableFeatures();\n }\n\n getAvailableFeatures(script, language) {\n return this._layoutEngine.getAvailableFeatures(script, language);\n }\n\n _getBaseGlyph(glyph, characters = []) {\n if (!this._glyphs[glyph]) {\n if (this.directory.tables.glyf) {\n this._glyphs[glyph] = new TTFGlyph(glyph, characters, this);\n\n } else if (this.directory.tables['CFF '] || this.directory.tables.CFF2) {\n this._glyphs[glyph] = new CFFGlyph(glyph, characters, this);\n }\n }\n\n return this._glyphs[glyph] || null;\n }\n\n /**\n * Returns a glyph object for the given glyph id.\n * You can pass the array of code points this glyph represents for\n * your use later, and it will be stored in the glyph object.\n *\n * @param {number} glyph\n * @param {number[]} characters\n * @return {Glyph}\n */\n getGlyph(glyph, characters = []) {\n if (!this._glyphs[glyph]) {\n if (this.directory.tables.sbix) {\n this._glyphs[glyph] = new SBIXGlyph(glyph, characters, this);\n\n } else if ((this.directory.tables.COLR) && (this.directory.tables.CPAL)) {\n this._glyphs[glyph] = new COLRGlyph(glyph, characters, this);\n\n } else {\n this._getBaseGlyph(glyph, characters);\n }\n }\n\n return this._glyphs[glyph] || null;\n }\n\n /**\n * Returns a Subset for this font.\n * @return {Subset}\n */\n createSubset() {\n if (this.directory.tables['CFF ']) {\n return new CFFSubset(this);\n }\n\n return new TTFSubset(this);\n }\n\n /**\n * Returns an object describing the available variation axes\n * that this font supports. Keys are setting tags, and values\n * contain the axis name, range, and default value.\n *\n * @type {object}\n */\n @cache\n get variationAxes() {\n let res = {};\n if (!this.fvar) {\n return res;\n }\n\n for (let axis of this.fvar.axis) {\n res[axis.axisTag.trim()] = {\n name: axis.name.en,\n min: axis.minValue,\n default: axis.defaultValue,\n max: axis.maxValue\n };\n }\n\n return res;\n }\n\n /**\n * Returns an object describing the named variation instances\n * that the font designer has specified. Keys are variation names\n * and values are the variation settings for this instance.\n *\n * @type {object}\n */\n @cache\n get namedVariations() {\n let res = {};\n if (!this.fvar) {\n return res;\n }\n\n for (let instance of this.fvar.instance) {\n let settings = {};\n for (let i = 0; i < this.fvar.axis.length; i++) {\n let axis = this.fvar.axis[i];\n settings[axis.axisTag.trim()] = instance.coord[i];\n }\n\n res[instance.name.en] = settings;\n }\n\n return res;\n }\n\n /**\n * Returns a new font with the given variation settings applied.\n * Settings can either be an instance name, or an object containing\n * variation tags as specified by the `variationAxes` property.\n *\n * @param {object} settings\n * @return {TTFFont}\n */\n getVariation(settings) {\n if (!(this.directory.tables.fvar && ((this.directory.tables.gvar && this.directory.tables.glyf) || this.directory.tables.CFF2))) {\n throw new Error('Variations require a font with the fvar, gvar and glyf, or CFF2 tables.');\n }\n\n if (typeof settings === 'string') {\n settings = this.namedVariations[settings];\n }\n\n if (typeof settings !== 'object') {\n throw new Error('Variation settings must be either a variation name or settings object.');\n }\n\n // normalize the coordinates\n let coords = this.fvar.axis.map((axis, i) => {\n let axisTag = axis.axisTag.trim();\n if (axisTag in settings) {\n return Math.max(axis.minValue, Math.min(axis.maxValue, settings[axisTag]));\n } else {\n return axis.defaultValue;\n }\n });\n\n let stream = new r.DecodeStream(this.stream.buffer);\n stream.pos = this._directoryPos;\n\n let font = new TTFFont(stream, coords);\n font._tables = this._tables;\n\n return font;\n }\n\n @cache\n get _variationProcessor() {\n if (!this.fvar) {\n return null;\n }\n\n let variationCoords = this.variationCoords;\n\n // Ignore if no variation coords and not CFF2\n if (!variationCoords && !this.CFF2) {\n return null;\n }\n\n if (!variationCoords) {\n variationCoords = this.fvar.axis.map(axis => axis.defaultValue);\n }\n\n return new GlyphVariationProcessor(this, variationCoords);\n }\n\n // Standardized format plugin API\n getFont(name) {\n return this.getVariation(name);\n }\n}\n","/**\n * This decorator caches the results of a getter or method such that\n * the results are lazily computed once, and then cached.\n * @private\n */\nexport function cache(target, key, descriptor) {\n if (descriptor.get) {\n let get = descriptor.get;\n descriptor.get = function() {\n let value = get.call(this);\n Object.defineProperty(this, key, { value });\n return value;\n };\n } else if (typeof descriptor.value === 'function') {\n let fn = descriptor.value;\n\n return {\n get() {\n let cache = new Map;\n function memoized(...args) {\n let key = args.length > 0 ? args[0] : 'value';\n if (cache.has(key)) {\n return cache.get(key);\n }\n\n let result = fn.apply(this, args);\n cache.set(key, result);\n return result;\n };\n\n Object.defineProperty(this, key, {value: memoized});\n return memoized;\n }\n };\n }\n}\n","import * as r from 'restructure';\nimport Tables from './';\n\nlet TableEntry = new r.Struct({\n tag: new r.String(4),\n checkSum: r.uint32,\n offset: new r.Pointer(r.uint32, 'void', { type: 'global' }),\n length: r.uint32\n});\n\nlet Directory = new r.Struct({\n tag: new r.String(4),\n numTables: r.uint16,\n searchRange: r.uint16,\n entrySelector: r.uint16,\n rangeShift: r.uint16,\n tables: new r.Array(TableEntry, 'numTables')\n});\n\nDirectory.process = function() {\n let tables = {};\n for (let table of this.tables) {\n tables[table.tag] = table;\n }\n\n this.tables = tables;\n};\n\nDirectory.preEncode = function() {\n if (!Array.isArray(this.tables)) {\n let tables = [];\n for (let tag in this.tables) {\n let table = this.tables[tag];\n if (table) {\n tables.push({\n tag: tag,\n checkSum: 0,\n offset: new r.VoidPointer(Tables[tag], table),\n length: Tables[tag].size(table)\n });\n }\n }\n \n this.tables = tables;\n }\n\n this.tag = 'true';\n this.numTables = this.tables.length;\n\n let maxExponentFor2 = Math.floor((Math.log(this.numTables) / Math.LN2));\n let maxPowerOf2 = Math.pow(2, maxExponentFor2);\n\n this.searchRange = maxPowerOf2 * 16;\n this.entrySelector = Math.log(maxPowerOf2) / Math.LN2;\n this.rangeShift = this.numTables * 16 - this.searchRange;\n};\n\nexport default Directory;\n","let tables = {};\nexport default tables;\n\n// Required Tables\nimport cmap from './cmap';\nimport head from './head';\nimport hhea from './hhea';\nimport hmtx from './hmtx';\nimport maxp from './maxp';\nimport name from './name';\nimport OS2 from './OS2';\nimport post from './post';\n\ntables.cmap = cmap;\ntables.head = head;\ntables.hhea = hhea;\ntables.hmtx = hmtx;\ntables.maxp = maxp;\ntables.name = name;\ntables['OS/2'] = OS2;\ntables.post = post;\n\n\n// TrueType Outlines\nimport cvt from './cvt';\nimport fpgm from './fpgm';\nimport loca from './loca';\nimport prep from './prep';\nimport glyf from './glyf';\n\ntables.fpgm = fpgm;\ntables.loca = loca;\ntables.prep = prep;\ntables['cvt '] = cvt;\ntables.glyf = glyf;\n\n\n// PostScript Outlines\nimport CFFFont from '../cff/CFFFont';\nimport VORG from './VORG';\n\ntables['CFF '] = CFFFont;\ntables['CFF2'] = CFFFont;\ntables.VORG = VORG;\n\n\n// Bitmap Glyphs\nimport EBLC from './EBLC';\nimport sbix from './sbix';\nimport COLR from './COLR';\nimport CPAL from './CPAL';\n\ntables.EBLC = EBLC;\ntables.CBLC = tables.EBLC;\ntables.sbix = sbix;\ntables.COLR = COLR;\ntables.CPAL = CPAL;\n\n\n// Advanced OpenType Tables\nimport BASE from './BASE';\nimport GDEF from './GDEF';\nimport GPOS from './GPOS';\nimport GSUB from './GSUB';\nimport JSTF from './JSTF';\n\ntables.BASE = BASE;\ntables.GDEF = GDEF;\ntables.GPOS = GPOS;\ntables.GSUB = GSUB;\ntables.JSTF = JSTF;\n\n// OpenType variations tables\nimport HVAR from './HVAR';\n\ntables.HVAR = HVAR;\n\n// Other OpenType Tables\nimport DSIG from './DSIG';\nimport gasp from './gasp';\nimport hdmx from './hdmx';\nimport kern from './kern';\nimport LTSH from './LTSH';\nimport PCLT from './PCLT';\nimport VDMX from './VDMX';\nimport vhea from './vhea';\nimport vmtx from './vmtx';\n\ntables.DSIG = DSIG;\ntables.gasp = gasp;\ntables.hdmx = hdmx;\ntables.kern = kern;\ntables.LTSH = LTSH;\ntables.PCLT = PCLT;\ntables.VDMX = VDMX;\ntables.vhea = vhea;\ntables.vmtx = vmtx;\n\n\n// Apple Advanced Typography Tables\nimport avar from './avar';\nimport bsln from './bsln';\nimport feat from './feat';\nimport fvar from './fvar';\nimport gvar from './gvar';\nimport just from './just';\nimport morx from './morx';\nimport opbd from './opbd';\n\ntables.avar = avar;\ntables.bsln = bsln;\ntables.feat = feat;\ntables.fvar = fvar;\ntables.gvar = gvar;\ntables.just = just;\ntables.morx = morx;\ntables.opbd = opbd;\n","import * as r from 'restructure';\n\nlet SubHeader = new r.Struct({\n firstCode: r.uint16,\n entryCount: r.uint16,\n idDelta: r.int16,\n idRangeOffset: r.uint16\n});\n\nlet CmapGroup = new r.Struct({\n startCharCode: r.uint32,\n endCharCode: r.uint32,\n glyphID: r.uint32\n});\n\nlet UnicodeValueRange = new r.Struct({\n startUnicodeValue: r.uint24,\n additionalCount: r.uint8\n});\n\nlet UVSMapping = new r.Struct({\n unicodeValue: r.uint24,\n glyphID: r.uint16\n});\n\nlet DefaultUVS = new r.Array(UnicodeValueRange, r.uint32);\nlet NonDefaultUVS = new r.Array(UVSMapping, r.uint32);\n\nlet VarSelectorRecord = new r.Struct({\n varSelector: r.uint24,\n defaultUVS: new r.Pointer(r.uint32, DefaultUVS, {type: 'parent'}),\n nonDefaultUVS: new r.Pointer(r.uint32, NonDefaultUVS, {type: 'parent'})\n});\n\nlet CmapSubtable = new r.VersionedStruct(r.uint16, {\n 0: { // Byte encoding\n length: r.uint16, // Total table length in bytes (set to 262 for format 0)\n language: r.uint16, // Language code for this encoding subtable, or zero if language-independent\n codeMap: new r.LazyArray(r.uint8, 256)\n },\n\n 2: { // High-byte mapping (CJK)\n length: r.uint16,\n language: r.uint16,\n subHeaderKeys: new r.Array(r.uint16, 256),\n subHeaderCount: t => Math.max.apply(Math, t.subHeaderKeys),\n subHeaders: new r.LazyArray(SubHeader, 'subHeaderCount'),\n glyphIndexArray: new r.LazyArray(r.uint16, 'subHeaderCount')\n },\n\n 4: { // Segment mapping to delta values\n length: r.uint16, // Total table length in bytes\n language: r.uint16, // Language code\n segCountX2: r.uint16,\n segCount: t => t.segCountX2 >> 1,\n searchRange: r.uint16,\n entrySelector: r.uint16,\n rangeShift: r.uint16,\n endCode: new r.LazyArray(r.uint16, 'segCount'),\n reservedPad: new r.Reserved(r.uint16), // This value should be zero\n startCode: new r.LazyArray(r.uint16, 'segCount'),\n idDelta: new r.LazyArray(r.int16, 'segCount'),\n idRangeOffset: new r.LazyArray(r.uint16, 'segCount'),\n glyphIndexArray: new r.LazyArray(r.uint16, t => (t.length - t._currentOffset) / 2)\n },\n\n 6: { // Trimmed table\n length: r.uint16,\n language: r.uint16,\n firstCode: r.uint16,\n entryCount: r.uint16,\n glyphIndices: new r.LazyArray(r.uint16, 'entryCount')\n },\n\n 8: { // mixed 16-bit and 32-bit coverage\n reserved: new r.Reserved(r.uint16),\n length: r.uint32,\n language: r.uint16,\n is32: new r.LazyArray(r.uint8, 8192),\n nGroups: r.uint32,\n groups: new r.LazyArray(CmapGroup, 'nGroups')\n },\n\n 10: { // Trimmed Array\n reserved: new r.Reserved(r.uint16),\n length: r.uint32,\n language: r.uint32,\n firstCode: r.uint32,\n entryCount: r.uint32,\n glyphIndices: new r.LazyArray(r.uint16, 'numChars')\n },\n\n 12: { // Segmented coverage\n reserved: new r.Reserved(r.uint16),\n length: r.uint32,\n language: r.uint32,\n nGroups: r.uint32,\n groups: new r.LazyArray(CmapGroup, 'nGroups')\n },\n\n 13: { // Many-to-one range mappings (same as 12 except for group.startGlyphID)\n reserved: new r.Reserved(r.uint16),\n length: r.uint32,\n language: r.uint32,\n nGroups: r.uint32,\n groups: new r.LazyArray(CmapGroup, 'nGroups')\n },\n\n 14: { // Unicode Variation Sequences\n length: r.uint32,\n numRecords: r.uint32,\n varSelectors: new r.LazyArray(VarSelectorRecord, 'numRecords')\n }\n});\n\nlet CmapEntry = new r.Struct({\n platformID: r.uint16, // Platform identifier\n encodingID: r.uint16, // Platform-specific encoding identifier\n table: new r.Pointer(r.uint32, CmapSubtable, {type: 'parent', lazy: true})\n});\n\n// character to glyph mapping\nexport default new r.Struct({\n version: r.uint16,\n numSubtables: r.uint16,\n tables: new r.Array(CmapEntry, 'numSubtables')\n});\n","import * as r from 'restructure';\n\n// font header\nexport default new r.Struct({\n version: r.int32, // 0x00010000 (version 1.0)\n revision: r.int32, // set by font manufacturer\n checkSumAdjustment: r.uint32,\n magicNumber: r.uint32, // set to 0x5F0F3CF5\n flags: r.uint16,\n unitsPerEm: r.uint16, // range from 64 to 16384\n created: new r.Array(r.int32, 2),\n modified: new r.Array(r.int32, 2),\n xMin: r.int16, // for all glyph bounding boxes\n yMin: r.int16, // for all glyph bounding boxes\n xMax: r.int16, // for all glyph bounding boxes\n yMax: r.int16, // for all glyph bounding boxes\n macStyle: new r.Bitfield(r.uint16, [\n 'bold', 'italic', 'underline', 'outline',\n 'shadow', 'condensed', 'extended'\n ]),\n lowestRecPPEM: r.uint16, // smallest readable size in pixels\n fontDirectionHint: r.int16,\n indexToLocFormat: r.int16, // 0 for short offsets, 1 for long\n glyphDataFormat: r.int16 // 0 for current format\n});\n","import * as r from 'restructure';\n\n// horizontal header\nexport default new r.Struct({\n version: r.int32,\n ascent: r.int16, // Distance from baseline of highest ascender\n descent: r.int16, // Distance from baseline of lowest descender\n lineGap: r.int16, // Typographic line gap\n advanceWidthMax: r.uint16, // Maximum advance width value in 'hmtx' table\n minLeftSideBearing: r.int16, // Maximum advance width value in 'hmtx' table\n minRightSideBearing: r.int16, // Minimum right sidebearing value\n xMaxExtent: r.int16,\n caretSlopeRise: r.int16, // Used to calculate the slope of the cursor (rise/run); 1 for vertical\n caretSlopeRun: r.int16, // 0 for vertical\n caretOffset: r.int16, // Set to 0 for non-slanted fonts\n reserved: new r.Reserved(r.int16, 4),\n metricDataFormat: r.int16, // 0 for current format\n numberOfMetrics: r.uint16 // Number of advance widths in 'hmtx' table\n});\n","import * as r from 'restructure';\n\nlet HmtxEntry = new r.Struct({\n advance: r.uint16,\n bearing: r.int16\n});\n\nexport default new r.Struct({\n metrics: new r.LazyArray(HmtxEntry, t => t.parent.hhea.numberOfMetrics),\n bearings: new r.LazyArray(r.int16, t => t.parent.maxp.numGlyphs - t.parent.hhea.numberOfMetrics)\n});\n","import * as r from 'restructure';\n\n// maxiumum profile\nexport default new r.Struct({\n version: r.int32,\n numGlyphs: r.uint16, // The number of glyphs in the font\n maxPoints: r.uint16, // Maximum points in a non-composite glyph\n maxContours: r.uint16, // Maximum contours in a non-composite glyph\n maxComponentPoints: r.uint16, // Maximum points in a composite glyph\n maxComponentContours: r.uint16, // Maximum contours in a composite glyph\n maxZones: r.uint16, // 1 if instructions do not use the twilight zone, 2 otherwise\n maxTwilightPoints: r.uint16, // Maximum points used in Z0\n maxStorage: r.uint16, // Number of Storage Area locations\n maxFunctionDefs: r.uint16, // Number of FDEFs\n maxInstructionDefs: r.uint16, // Number of IDEFs\n maxStackElements: r.uint16, // Maximum stack depth\n maxSizeOfInstructions: r.uint16, // Maximum byte count for glyph instructions\n maxComponentElements: r.uint16, // Maximum number of components referenced at “top level” for any composite glyph\n maxComponentDepth: r.uint16 // Maximum levels of recursion; 1 for simple components\n});\n","import * as r from 'restructure';\nimport {getEncoding, LANGUAGES} from '../encodings';\n\nlet NameRecord = new r.Struct({\n platformID: r.uint16,\n encodingID: r.uint16,\n languageID: r.uint16,\n nameID: r.uint16,\n length: r.uint16,\n string: new r.Pointer(r.uint16,\n new r.String('length', t => getEncoding(t.platformID, t.encodingID, t.languageID)),\n { type: 'parent', relativeTo: ctx => ctx.parent.stringOffset, allowNull: false }\n )\n});\n\nlet LangTagRecord = new r.Struct({\n length: r.uint16,\n tag: new r.Pointer(r.uint16, new r.String('length', 'utf16be'), {type: 'parent', relativeTo: ctx => ctx.stringOffset})\n});\n\nvar NameTable = new r.VersionedStruct(r.uint16, {\n 0: {\n count: r.uint16,\n stringOffset: r.uint16,\n records: new r.Array(NameRecord, 'count')\n },\n 1: {\n count: r.uint16,\n stringOffset: r.uint16,\n records: new r.Array(NameRecord, 'count'),\n langTagCount: r.uint16,\n langTags: new r.Array(LangTagRecord, 'langTagCount')\n }\n});\n\nexport default NameTable;\n\nconst NAMES = [\n 'copyright',\n 'fontFamily',\n 'fontSubfamily',\n 'uniqueSubfamily',\n 'fullName',\n 'version',\n 'postscriptName', // Note: A font may have only one PostScript name and that name must be ASCII.\n 'trademark',\n 'manufacturer',\n 'designer',\n 'description',\n 'vendorURL',\n 'designerURL',\n 'license',\n 'licenseURL',\n null, // reserved\n 'preferredFamily',\n 'preferredSubfamily',\n 'compatibleFull',\n 'sampleText',\n 'postscriptCIDFontName',\n 'wwsFamilyName',\n 'wwsSubfamilyName'\n];\n\nNameTable.process = function(stream) {\n var records = {};\n for (let record of this.records) {\n // find out what language this is for\n let language = LANGUAGES[record.platformID][record.languageID];\n\n if (language == null && this.langTags != null && record.languageID >= 0x8000) {\n language = this.langTags[record.languageID - 0x8000].tag;\n }\n\n if (language == null) {\n language = record.platformID + '-' + record.languageID;\n }\n\n // if the nameID is >= 256, it is a font feature record (AAT)\n let key = record.nameID >= 256 ? 'fontFeatures' : (NAMES[record.nameID] || record.nameID);\n if (records[key] == null) {\n records[key] = {};\n }\n\n let obj = records[key];\n if (record.nameID >= 256) {\n obj = obj[record.nameID] || (obj[record.nameID] = {});\n }\n\n if (typeof record.string === 'string' || typeof obj[language] !== 'string') {\n obj[language] = record.string;\n }\n }\n\n this.records = records;\n};\n\nNameTable.preEncode = function() {\n if (Array.isArray(this.records)) return;\n this.version = 0;\n\n let records = [];\n for (let key in this.records) {\n let val = this.records[key];\n if (key === 'fontFeatures') continue;\n\n records.push({\n platformID: 3,\n encodingID: 1,\n languageID: 0x409,\n nameID: NAMES.indexOf(key),\n length: val.en.length * 2,\n string: val.en\n });\n\n if (key === 'postscriptName') {\n records.push({\n platformID: 1,\n encodingID: 0,\n languageID: 0,\n nameID: NAMES.indexOf(key),\n length: val.en.length,\n string: val.en\n });\n }\n }\n\n this.records = records;\n this.count = records.length;\n this.stringOffset = NameTable.size(this, null, false);\n};\n","/**\n * Gets an encoding name from platform, encoding, and language ids.\n * Returned encoding names can be used in iconv-lite to decode text.\n */\nexport function getEncoding(platformID, encodingID, languageID = 0) {\n if (platformID === 1 && MAC_LANGUAGE_ENCODINGS[languageID]) {\n return MAC_LANGUAGE_ENCODINGS[languageID];\n }\n \n return ENCODINGS[platformID][encodingID];\n}\n\nconst SINGLE_BYTE_ENCODINGS = new Set(['x-mac-roman', 'x-mac-cyrillic', 'iso-8859-6', 'iso-8859-8']);\nconst MAC_ENCODINGS = {\n 'x-mac-croatian': 'ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈ƫȅ ÀÃÕŒœĐ—“”‘’÷◊©⁄€‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ',\n 'x-mac-gaelic': 'ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØḂ±≤≥ḃĊċḊḋḞḟĠġṀæøṁṖṗɼƒſṠ«»… ÀÃÕŒœ–—“”‘’ṡẛÿŸṪ€‹›Ŷŷṫ·Ỳỳ⁊ÂÊÁËÈÍÎÏÌÓÔ♣ÒÚÛÙıÝýŴŵẄẅẀẁẂẃ',\n 'x-mac-greek': 'Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦€ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ\\u00AD',\n 'x-mac-icelandic': 'ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüݰ¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ',\n 'x-mac-inuit': 'ᐃᐄᐅᐆᐊᐋᐱᐲᐳᐴᐸᐹᑉᑎᑏᑐᑑᑕᑖᑦᑭᑮᑯᑰᑲᑳᒃᒋᒌᒍᒎᒐᒑ°ᒡᒥᒦ•¶ᒧ®©™ᒨᒪᒫᒻᓂᓃᓄᓅᓇᓈᓐᓯᓰᓱᓲᓴᓵᔅᓕᓖᓗᓘᓚᓛᓪᔨᔩᔪᔫᔭ… ᔮᔾᕕᕖᕗ–—“”‘’ᕘᕙᕚᕝᕆᕇᕈᕉᕋᕌᕐᕿᖀᖁᖂᖃᖄᖅᖏᖐᖑᖒᖓᖔᖕᙱᙲᙳᙴᙵᙶᖖᖠᖡᖢᖣᖤᖥᖦᕼŁł',\n 'x-mac-ce': 'ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ',\n 'x-mac-romanian': 'ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂȘ∞±≤≥¥µ∂∑∏π∫ªºΩăș¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€‹›Țț‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ',\n 'x-mac-turkish': 'ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙˆ˜¯˘˙˚¸˝˛ˇ'\n};\n\nconst encodingCache = new Map();\n\nexport function getEncodingMapping(encoding) {\n let cached = encodingCache.get(encoding);\n if (cached) {\n return cached;\n }\n\n // These encodings aren't supported by TextDecoder.\n let mapping = MAC_ENCODINGS[encoding];\n if (mapping) {\n let res = new Map();\n for (let i = 0; i < mapping.length; i++) {\n res.set(mapping.charCodeAt(i), 0x80 + i);\n }\n\n encodingCache.set(encoding, res);\n return res;\n }\n\n // Only single byte encodings can be mapped 1:1.\n if (SINGLE_BYTE_ENCODINGS.has(encoding)) {\n // TextEncoder only supports utf8, whereas TextDecoder supports legacy encodings.\n // Use this to create a mapping of code points.\n let decoder = new TextDecoder(encoding);\n let mapping = new Uint8Array(0x80);\n for (let i = 0; i < 0x80; i++) {\n mapping[i] = 0x80 + i;\n }\n\n let res = new Map();\n let s = decoder.decode(mapping);\n for (let i = 0; i < 0x80; i++) {\n res.set(s.charCodeAt(i), 0x80 + i);\n }\n\n encodingCache.set(encoding, res);\n return res;\n }\n}\n\n// Map of platform ids to encoding ids.\nexport const ENCODINGS = [\n // unicode\n ['utf-16be', 'utf-16be', 'utf-16be', 'utf-16be', 'utf-16be', 'utf-16be', 'utf-16be'],\n \n // macintosh\n // Mappings available at http://unicode.org/Public/MAPPINGS/VENDORS/APPLE/\n // 0\tRoman 17\tMalayalam\n // 1\tJapanese\t 18\tSinhalese\n // 2\tTraditional Chinese\t 19\tBurmese\n // 3\tKorean\t 20\tKhmer\n // 4\tArabic\t 21\tThai\n // 5\tHebrew\t 22\tLaotian\n // 6\tGreek\t 23\tGeorgian\n // 7\tRussian\t 24\tArmenian\n // 8\tRSymbol\t 25\tSimplified Chinese\n // 9\tDevanagari\t 26\tTibetan\n // 10\tGurmukhi\t 27\tMongolian\n // 11\tGujarati\t 28\tGeez\n // 12\tOriya\t 29\tSlavic\n // 13\tBengali\t 30\tVietnamese\n // 14\tTamil\t 31\tSindhi\n // 15\tTelugu\t 32\t(Uninterpreted)\n // 16\tKannada\n ['x-mac-roman', 'shift-jis', 'big5', 'euc-kr', 'iso-8859-6', 'iso-8859-8',\n 'x-mac-greek', 'x-mac-cyrillic', 'x-mac-symbol', 'x-mac-devanagari', 'x-mac-gurmukhi', 'x-mac-gujarati',\n 'Oriya', 'Bengali', 'Tamil', 'Telugu', 'Kannada', 'Malayalam', 'Sinhalese',\n 'Burmese', 'Khmer', 'iso-8859-11', 'Laotian', 'Georgian', 'Armenian', 'gbk', \n 'Tibetan', 'Mongolian', 'Geez', 'x-mac-ce', 'Vietnamese', 'Sindhi'],\n \n // ISO (deprecated)\n ['ascii', null, 'iso-8859-1'],\n \n // windows\n // Docs here: http://msdn.microsoft.com/en-us/library/system.text.encoding(v=vs.110).aspx\n ['symbol', 'utf-16be', 'shift-jis', 'gb18030', 'big5', 'euc-kr', 'johab', null, null, null, 'utf-16be']\n];\n\n// Overrides for Mac scripts by language id.\n// See http://unicode.org/Public/MAPPINGS/VENDORS/APPLE/Readme.txt\nexport const MAC_LANGUAGE_ENCODINGS = {\n 15: 'x-mac-icelandic',\n 17: 'x-mac-turkish',\n 18: 'x-mac-croatian',\n 24: 'x-mac-ce',\n 25: 'x-mac-ce',\n 26: 'x-mac-ce',\n 27: 'x-mac-ce',\n 28: 'x-mac-ce',\n 30: 'x-mac-icelandic',\n 37: 'x-mac-romanian',\n 38: 'x-mac-ce',\n 39: 'x-mac-ce',\n 40: 'x-mac-ce',\n 143: 'x-mac-inuit',\n 146: 'x-mac-gaelic'\n};\n\n// Map of platform ids to BCP-47 language codes.\nexport const LANGUAGES = [\n // unicode\n [],\n \n { // macintosh\n 0: 'en', 30: 'fo', 60: 'ks', 90: 'rw',\n 1: 'fr', 31: 'fa', 61: 'ku', 91: 'rn',\n 2: 'de', 32: 'ru', 62: 'sd', 92: 'ny',\n 3: 'it', 33: 'zh', 63: 'bo', 93: 'mg',\n 4: 'nl', 34: 'nl-BE', 64: 'ne', 94: 'eo',\n 5: 'sv', 35: 'ga', 65: 'sa', 128: 'cy',\n 6: 'es', 36: 'sq', 66: 'mr', 129: 'eu',\n 7: 'da', 37: 'ro', 67: 'bn', 130: 'ca',\n 8: 'pt', 38: 'cz', 68: 'as', 131: 'la',\n 9: 'no', 39: 'sk', 69: 'gu', 132: 'qu',\n 10: 'he', 40: 'si', 70: 'pa', 133: 'gn',\n 11: 'ja', 41: 'yi', 71: 'or', 134: 'ay',\n 12: 'ar', 42: 'sr', 72: 'ml', 135: 'tt',\n 13: 'fi', 43: 'mk', 73: 'kn', 136: 'ug',\n 14: 'el', 44: 'bg', 74: 'ta', 137: 'dz',\n 15: 'is', 45: 'uk', 75: 'te', 138: 'jv',\n 16: 'mt', 46: 'be', 76: 'si', 139: 'su',\n 17: 'tr', 47: 'uz', 77: 'my', 140: 'gl',\n 18: 'hr', 48: 'kk', 78: 'km', 141: 'af',\n 19: 'zh-Hant', 49: 'az-Cyrl', 79: 'lo', 142: 'br',\n 20: 'ur', 50: 'az-Arab', 80: 'vi', 143: 'iu',\n 21: 'hi', 51: 'hy', 81: 'id', 144: 'gd',\n 22: 'th', 52: 'ka', 82: 'tl', 145: 'gv',\n 23: 'ko', 53: 'mo', 83: 'ms', 146: 'ga',\n 24: 'lt', 54: 'ky', 84: 'ms-Arab', 147: 'to',\n 25: 'pl', 55: 'tg', 85: 'am', 148: 'el-polyton',\n 26: 'hu', 56: 'tk', 86: 'ti', 149: 'kl',\n 27: 'es', 57: 'mn-CN', 87: 'om', 150: 'az',\n 28: 'lv', 58: 'mn', 88: 'so', 151: 'nn',\n 29: 'se', 59: 'ps', 89: 'sw',\n },\n \n // ISO (deprecated)\n [],\n \n { // windows \n 0x0436: 'af', 0x4009: 'en-IN', 0x0487: 'rw', 0x0432: 'tn', \n 0x041C: 'sq', 0x1809: 'en-IE', 0x0441: 'sw', 0x045B: 'si', \n 0x0484: 'gsw', 0x2009: 'en-JM', 0x0457: 'kok', 0x041B: 'sk', \n 0x045E: 'am', 0x4409: 'en-MY', 0x0412: 'ko', 0x0424: 'sl', \n 0x1401: 'ar-DZ', 0x1409: 'en-NZ', 0x0440: 'ky', 0x2C0A: 'es-AR', \n 0x3C01: 'ar-BH', 0x3409: 'en-PH', 0x0454: 'lo', 0x400A: 'es-BO', \n 0x0C01: 'ar', 0x4809: 'en-SG', 0x0426: 'lv', 0x340A: 'es-CL', \n 0x0801: 'ar-IQ', 0x1C09: 'en-ZA', 0x0427: 'lt', 0x240A: 'es-CO', \n 0x2C01: 'ar-JO', 0x2C09: 'en-TT', 0x082E: 'dsb', 0x140A: 'es-CR', \n 0x3401: 'ar-KW', 0x0809: 'en-GB', 0x046E: 'lb', 0x1C0A: 'es-DO', \n 0x3001: 'ar-LB', 0x0409: 'en', 0x042F: 'mk', 0x300A: 'es-EC', \n 0x1001: 'ar-LY', 0x3009: 'en-ZW', 0x083E: 'ms-BN', 0x440A: 'es-SV', \n 0x1801: 'ary', 0x0425: 'et', 0x043E: 'ms', 0x100A: 'es-GT', \n 0x2001: 'ar-OM', 0x0438: 'fo', 0x044C: 'ml', 0x480A: 'es-HN', \n 0x4001: 'ar-QA', 0x0464: 'fil', 0x043A: 'mt', 0x080A: 'es-MX', \n 0x0401: 'ar-SA', 0x040B: 'fi', 0x0481: 'mi', 0x4C0A: 'es-NI', \n 0x2801: 'ar-SY', 0x080C: 'fr-BE', 0x047A: 'arn', 0x180A: 'es-PA', \n 0x1C01: 'aeb', 0x0C0C: 'fr-CA', 0x044E: 'mr', 0x3C0A: 'es-PY', \n 0x3801: 'ar-AE', 0x040C: 'fr', 0x047C: 'moh', 0x280A: 'es-PE', \n 0x2401: 'ar-YE', 0x140C: 'fr-LU', 0x0450: 'mn', 0x500A: 'es-PR', \n 0x042B: 'hy', 0x180C: 'fr-MC', 0x0850: 'mn-CN', 0x0C0A: 'es', \n 0x044D: 'as', 0x100C: 'fr-CH', 0x0461: 'ne', 0x040A: 'es', \n 0x082C: 'az-Cyrl', 0x0462: 'fy', 0x0414: 'nb', 0x540A: 'es-US', \n 0x042C: 'az', 0x0456: 'gl', 0x0814: 'nn', 0x380A: 'es-UY', \n 0x046D: 'ba', 0x0437: 'ka', 0x0482: 'oc', 0x200A: 'es-VE', \n 0x042D: 'eu', 0x0C07: 'de-AT', 0x0448: 'or', 0x081D: 'sv-FI', \n 0x0423: 'be', 0x0407: 'de', 0x0463: 'ps', 0x041D: 'sv', \n 0x0845: 'bn', 0x1407: 'de-LI', 0x0415: 'pl', 0x045A: 'syr', \n 0x0445: 'bn-IN', 0x1007: 'de-LU', 0x0416: 'pt', 0x0428: 'tg', \n 0x201A: 'bs-Cyrl', 0x0807: 'de-CH', 0x0816: 'pt-PT', 0x085F: 'tzm', \n 0x141A: 'bs', 0x0408: 'el', 0x0446: 'pa', 0x0449: 'ta', \n 0x047E: 'br', 0x046F: 'kl', 0x046B: 'qu-BO', 0x0444: 'tt', \n 0x0402: 'bg', 0x0447: 'gu', 0x086B: 'qu-EC', 0x044A: 'te', \n 0x0403: 'ca', 0x0468: 'ha', 0x0C6B: 'qu', 0x041E: 'th', \n 0x0C04: 'zh-HK', 0x040D: 'he', 0x0418: 'ro', 0x0451: 'bo', \n 0x1404: 'zh-MO', 0x0439: 'hi', 0x0417: 'rm', 0x041F: 'tr', \n 0x0804: 'zh', 0x040E: 'hu', 0x0419: 'ru', 0x0442: 'tk', \n 0x1004: 'zh-SG', 0x040F: 'is', 0x243B: 'smn', 0x0480: 'ug', \n 0x0404: 'zh-TW', 0x0470: 'ig', 0x103B: 'smj-NO', 0x0422: 'uk', \n 0x0483: 'co', 0x0421: 'id', 0x143B: 'smj', 0x042E: 'hsb', \n 0x041A: 'hr', 0x045D: 'iu', 0x0C3B: 'se-FI', 0x0420: 'ur', \n 0x101A: 'hr-BA', 0x085D: 'iu-Latn', 0x043B: 'se', 0x0843: 'uz-Cyrl', \n 0x0405: 'cs', 0x083C: 'ga', 0x083B: 'se-SE', 0x0443: 'uz', \n 0x0406: 'da', 0x0434: 'xh', 0x203B: 'sms', 0x042A: 'vi', \n 0x048C: 'prs', 0x0435: 'zu', 0x183B: 'sma-NO', 0x0452: 'cy', \n 0x0465: 'dv', 0x0410: 'it', 0x1C3B: 'sms', 0x0488: 'wo', \n 0x0813: 'nl-BE', 0x0810: 'it-CH', 0x044F: 'sa', 0x0485: 'sah', \n 0x0413: 'nl', 0x0411: 'ja', 0x1C1A: 'sr-Cyrl-BA', 0x0478: 'ii', \n 0x0C09: 'en-AU', 0x044B: 'kn', 0x0C1A: 'sr', 0x046A: 'yo', \n 0x2809: 'en-BZ', 0x043F: 'kk', 0x181A: 'sr-Latn-BA', \n 0x1009: 'en-CA', 0x0453: 'km', 0x081A: 'sr-Latn', \n 0x2409: 'en-029', 0x0486: 'quc', 0x046C: 'nso', \n }\n];\n","import * as r from 'restructure';\n\nvar OS2 = new r.VersionedStruct(r.uint16, {\n header: {\n xAvgCharWidth: r.int16, // average weighted advance width of lower case letters and space\n usWeightClass: r.uint16, // visual weight of stroke in glyphs\n usWidthClass: r.uint16, // relative change from the normal aspect ratio (width to height ratio)\n fsType: new r.Bitfield(r.uint16, [ // Indicates font embedding licensing rights\n null, 'noEmbedding', 'viewOnly', 'editable', null,\n null, null, null, 'noSubsetting', 'bitmapOnly'\n ]),\n ySubscriptXSize: r.int16, // recommended horizontal size in pixels for subscripts\n ySubscriptYSize: r.int16, // recommended vertical size in pixels for subscripts\n ySubscriptXOffset: r.int16, // recommended horizontal offset for subscripts\n ySubscriptYOffset: r.int16, // recommended vertical offset form the baseline for subscripts\n ySuperscriptXSize: r.int16, // recommended horizontal size in pixels for superscripts\n ySuperscriptYSize: r.int16, // recommended vertical size in pixels for superscripts\n ySuperscriptXOffset: r.int16, // recommended horizontal offset for superscripts\n ySuperscriptYOffset: r.int16, // recommended vertical offset from the baseline for superscripts\n yStrikeoutSize: r.int16, // width of the strikeout stroke\n yStrikeoutPosition: r.int16, // position of the strikeout stroke relative to the baseline\n sFamilyClass: r.int16, // classification of font-family design\n panose: new r.Array(r.uint8, 10), // describe the visual characteristics of a given typeface\n ulCharRange: new r.Array(r.uint32, 4),\n vendorID: new r.String(4), // four character identifier for the font vendor\n fsSelection: new r.Bitfield(r.uint16, [ // bit field containing information about the font\n 'italic', 'underscore', 'negative', 'outlined', 'strikeout',\n 'bold', 'regular', 'useTypoMetrics', 'wws', 'oblique'\n ]),\n usFirstCharIndex: r.uint16, // The minimum Unicode index in this font\n usLastCharIndex: r.uint16 // The maximum Unicode index in this font\n },\n\n // The Apple version of this table ends here, but the Microsoft one continues on...\n 0: {},\n\n 1: {\n typoAscender: r.int16,\n typoDescender: r.int16,\n typoLineGap: r.int16,\n winAscent: r.uint16,\n winDescent: r.uint16,\n codePageRange: new r.Array(r.uint32, 2)\n },\n\n 2: {\n // these should be common with version 1 somehow\n typoAscender: r.int16,\n typoDescender: r.int16,\n typoLineGap: r.int16,\n winAscent: r.uint16,\n winDescent: r.uint16,\n codePageRange: new r.Array(r.uint32, 2),\n\n xHeight: r.int16,\n capHeight: r.int16,\n defaultChar: r.uint16,\n breakChar: r.uint16,\n maxContent: r.uint16\n },\n\n 5: {\n typoAscender: r.int16,\n typoDescender: r.int16,\n typoLineGap: r.int16,\n winAscent: r.uint16,\n winDescent: r.uint16,\n codePageRange: new r.Array(r.uint32, 2),\n\n xHeight: r.int16,\n capHeight: r.int16,\n defaultChar: r.uint16,\n breakChar: r.uint16,\n maxContent: r.uint16,\n\n usLowerOpticalPointSize: r.uint16,\n usUpperOpticalPointSize: r.uint16\n }\n});\n\nlet versions = OS2.versions;\nversions[3] = versions[4] = versions[2];\n\nexport default OS2;\n","import * as r from 'restructure';\n\n// PostScript information\nexport default new r.VersionedStruct(r.fixed32, {\n header: { // these fields exist at the top of all versions\n italicAngle: r.fixed32, // Italic angle in counter-clockwise degrees from the vertical.\n underlinePosition: r.int16, // Suggested distance of the top of the underline from the baseline\n underlineThickness: r.int16, // Suggested values for the underline thickness\n isFixedPitch: r.uint32, // Whether the font is monospaced\n minMemType42: r.uint32, // Minimum memory usage when a TrueType font is downloaded as a Type 42 font\n maxMemType42: r.uint32, // Maximum memory usage when a TrueType font is downloaded as a Type 42 font\n minMemType1: r.uint32, // Minimum memory usage when a TrueType font is downloaded as a Type 1 font\n maxMemType1: r.uint32 // Maximum memory usage when a TrueType font is downloaded as a Type 1 font\n },\n\n 1: {}, // version 1 has no additional fields\n\n 2: {\n numberOfGlyphs: r.uint16,\n glyphNameIndex: new r.Array(r.uint16, 'numberOfGlyphs'),\n names: new r.Array(new r.String(r.uint8))\n },\n\n 2.5: {\n numberOfGlyphs: r.uint16,\n offsets: new r.Array(r.uint8, 'numberOfGlyphs')\n },\n\n 3: {}, // version 3 has no additional fields\n\n 4: {\n map: new r.Array(r.uint32, t => t.parent.maxp.numGlyphs)\n }\n});\n","import * as r from 'restructure';\n\n// An array of predefined values accessible by instructions\nexport default new r.Struct({\n controlValues: new r.Array(r.int16)\n});\n","import * as r from 'restructure';\n\n// A list of instructions that are executed once when a font is first used.\n// These instructions are known as the font program. The main use of this table\n// is for the definition of functions that are used in many different glyph programs.\nexport default new r.Struct({\n instructions: new r.Array(r.uint8)\n});\n","import * as r from 'restructure';\n\nlet loca = new r.VersionedStruct('head.indexToLocFormat', {\n 0: {\n offsets: new r.Array(r.uint16)\n },\n 1: {\n offsets: new r.Array(r.uint32)\n }\n});\n\nloca.process = function() {\n if (this.version === 0 && !this._processed) {\n for (let i = 0; i < this.offsets.length; i++) {\n this.offsets[i] <<= 1;\n }\n this._processed = true;\n }\n};\n\nloca.preEncode = function() {\n if (this.version === 0 && this._processed !== false) {\n for (let i = 0; i < this.offsets.length; i++) {\n this.offsets[i] >>>= 1;\n }\n this._processed = false;\n }\n};\n\nexport default loca;\n","import * as r from 'restructure';\n\n// Set of instructions executed whenever the point size or font transformation change\nexport default new r.Struct({\n controlValueProgram: new r.Array(r.uint8)\n});\n","import * as r from 'restructure';\n\n// only used for encoding\nexport default new r.Array(new r.Buffer);\n","import * as r from 'restructure';\nimport CFFIndex from './CFFIndex';\nimport CFFTop from './CFFTop';\nimport CFFPrivateDict from './CFFPrivateDict';\nimport standardStrings from './CFFStandardStrings';\n\nclass CFFFont {\n constructor(stream) {\n this.stream = stream;\n this.decode();\n }\n\n static decode(stream) {\n return new CFFFont(stream);\n }\n\n decode() {\n let start = this.stream.pos;\n let top = CFFTop.decode(this.stream);\n for (let key in top) {\n let val = top[key];\n this[key] = val;\n }\n\n if (this.version < 2) {\n if (this.topDictIndex.length !== 1) {\n throw new Error(\"Only a single font is allowed in CFF\");\n }\n\n this.topDict = this.topDictIndex[0];\n }\n\n this.isCIDFont = this.topDict.ROS != null;\n return this;\n }\n\n string(sid) {\n if (this.version >= 2) {\n return null;\n }\n\n if (sid < standardStrings.length) {\n return standardStrings[sid];\n }\n\n return this.stringIndex[sid - standardStrings.length];\n }\n\n get postscriptName() {\n if (this.version < 2) {\n return this.nameIndex[0];\n }\n\n return null;\n }\n\n get fullName() {\n return this.string(this.topDict.FullName);\n }\n\n get familyName() {\n return this.string(this.topDict.FamilyName);\n }\n\n getCharString(glyph) {\n this.stream.pos = this.topDict.CharStrings[glyph].offset;\n return this.stream.readBuffer(this.topDict.CharStrings[glyph].length);\n }\n\n getGlyphName(gid) {\n // CFF2 glyph names are in the post table.\n if (this.version >= 2) {\n return null;\n }\n\n // CID-keyed fonts don't have glyph names\n if (this.isCIDFont) {\n return null;\n }\n\n let { charset } = this.topDict;\n if (Array.isArray(charset)) {\n return charset[gid];\n }\n\n if (gid === 0) {\n return '.notdef';\n }\n\n gid -= 1;\n\n switch (charset.version) {\n case 0:\n return this.string(charset.glyphs[gid]);\n\n case 1:\n case 2:\n for (let i = 0; i < charset.ranges.length; i++) {\n let range = charset.ranges[i];\n if (range.offset <= gid && gid <= range.offset + range.nLeft) {\n return this.string(range.first + (gid - range.offset));\n }\n }\n break;\n }\n\n return null;\n }\n\n fdForGlyph(gid) {\n if (!this.topDict.FDSelect) {\n return null;\n }\n\n switch (this.topDict.FDSelect.version) {\n case 0:\n return this.topDict.FDSelect.fds[gid];\n\n case 3:\n case 4:\n let { ranges } = this.topDict.FDSelect;\n let low = 0;\n let high = ranges.length - 1;\n\n while (low <= high) {\n let mid = (low + high) >> 1;\n\n if (gid < ranges[mid].first) {\n high = mid - 1;\n } else if (mid < high && gid >= ranges[mid + 1].first) {\n low = mid + 1;\n } else {\n return ranges[mid].fd;\n }\n }\n default:\n throw new Error(`Unknown FDSelect version: ${this.topDict.FDSelect.version}`);\n }\n }\n\n privateDictForGlyph(gid) {\n if (this.topDict.FDSelect) {\n let fd = this.fdForGlyph(gid);\n if (this.topDict.FDArray[fd]) {\n return this.topDict.FDArray[fd].Private;\n }\n\n return null;\n }\n\n if (this.version < 2) {\n return this.topDict.Private;\n }\n\n return this.topDict.FDArray[0].Private;\n }\n}\n\nexport default CFFFont;\n","import * as r from 'restructure';\n\nexport default class CFFIndex {\n constructor(type) {\n this.type = type;\n }\n\n getCFFVersion(ctx) {\n while (ctx && !ctx.hdrSize) {\n ctx = ctx.parent;\n }\n\n return ctx ? ctx.version : -1;\n }\n\n decode(stream, parent) {\n let version = this.getCFFVersion(parent);\n let count = version >= 2\n ? stream.readUInt32BE()\n : stream.readUInt16BE();\n\n if (count === 0) {\n return [];\n }\n\n let offSize = stream.readUInt8();\n let offsetType;\n if (offSize === 1) {\n offsetType = r.uint8;\n } else if (offSize === 2) {\n offsetType = r.uint16;\n } else if (offSize === 3) {\n offsetType = r.uint24;\n } else if (offSize === 4) {\n offsetType = r.uint32;\n } else {\n throw new Error(`Bad offset size in CFFIndex: ${offSize} ${stream.pos}`);\n }\n\n let ret = [];\n let startPos = stream.pos + ((count + 1) * offSize) - 1;\n\n let start = offsetType.decode(stream);\n for (let i = 0; i < count; i++) {\n let end = offsetType.decode(stream);\n\n if (this.type != null) {\n let pos = stream.pos;\n stream.pos = startPos + start;\n\n parent.length = end - start;\n ret.push(this.type.decode(stream, parent));\n stream.pos = pos;\n } else {\n ret.push({\n offset: startPos + start,\n length: end - start\n });\n }\n\n start = end;\n }\n\n stream.pos = startPos + start;\n return ret;\n }\n\n size(arr, parent) {\n let size = 2;\n if (arr.length === 0) {\n return size;\n }\n\n let type = this.type || new r.Buffer;\n\n // find maximum offset to detminine offset type\n let offset = 1;\n for (let i = 0; i < arr.length; i++) {\n let item = arr[i];\n offset += type.size(item, parent);\n }\n\n let offsetType;\n if (offset <= 0xff) {\n offsetType = r.uint8;\n } else if (offset <= 0xffff) {\n offsetType = r.uint16;\n } else if (offset <= 0xffffff) {\n offsetType = r.uint24;\n } else if (offset <= 0xffffffff) {\n offsetType = r.uint32;\n } else {\n throw new Error(\"Bad offset in CFFIndex\");\n }\n\n size += 1 + offsetType.size() * (arr.length + 1);\n size += offset - 1;\n\n return size;\n }\n\n encode(stream, arr, parent) {\n stream.writeUInt16BE(arr.length);\n if (arr.length === 0) {\n return;\n }\n\n let type = this.type || new r.Buffer;\n\n // find maximum offset to detminine offset type\n let sizes = [];\n let offset = 1;\n for (let item of arr) {\n let s = type.size(item, parent);\n sizes.push(s);\n offset += s;\n }\n\n let offsetType;\n if (offset <= 0xff) {\n offsetType = r.uint8;\n } else if (offset <= 0xffff) {\n offsetType = r.uint16;\n } else if (offset <= 0xffffff) {\n offsetType = r.uint24;\n } else if (offset <= 0xffffffff) {\n offsetType = r.uint32;\n } else {\n throw new Error(\"Bad offset in CFFIndex\");\n }\n\n // write offset size\n stream.writeUInt8(offsetType.size());\n\n // write elements\n offset = 1;\n offsetType.encode(stream, offset);\n\n for (let size of sizes) {\n offset += size;\n offsetType.encode(stream, offset);\n }\n\n for (let item of arr) {\n type.encode(stream, item, parent);\n }\n\n return;\n }\n}\n","import * as r from 'restructure';\nimport { resolveLength } from 'restructure';\nimport CFFDict from './CFFDict';\nimport CFFIndex from './CFFIndex';\nimport CFFPointer from './CFFPointer';\nimport CFFPrivateDict from './CFFPrivateDict';\nimport StandardStrings from './CFFStandardStrings';\nimport { StandardEncoding, ExpertEncoding } from './CFFEncodings';\nimport { ISOAdobeCharset, ExpertCharset, ExpertSubsetCharset } from './CFFCharsets';\nimport { ItemVariationStore } from '../tables/variations';\n\n// Checks if an operand is an index of a predefined value,\n// otherwise delegates to the provided type.\nclass PredefinedOp {\n constructor(predefinedOps, type) {\n this.predefinedOps = predefinedOps;\n this.type = type;\n }\n\n decode(stream, parent, operands) {\n if (this.predefinedOps[operands[0]]) {\n return this.predefinedOps[operands[0]];\n }\n\n return this.type.decode(stream, parent, operands);\n }\n\n size(value, ctx) {\n return this.type.size(value, ctx);\n }\n\n encode(stream, value, ctx) {\n let index = this.predefinedOps.indexOf(value);\n if (index !== -1) {\n return index;\n }\n\n return this.type.encode(stream, value, ctx);\n }\n}\n\nclass CFFEncodingVersion extends r.Number {\n constructor() {\n super('UInt8');\n }\n\n decode(stream) {\n return r.uint8.decode(stream) & 0x7f;\n }\n}\n\nlet Range1 = new r.Struct({\n first: r.uint16,\n nLeft: r.uint8\n});\n\nlet Range2 = new r.Struct({\n first: r.uint16,\n nLeft: r.uint16\n});\n\nlet CFFCustomEncoding = new r.VersionedStruct(new CFFEncodingVersion(), {\n 0: {\n nCodes: r.uint8,\n codes: new r.Array(r.uint8, 'nCodes')\n },\n\n 1: {\n nRanges: r.uint8,\n ranges: new r.Array(Range1, 'nRanges')\n }\n\n // TODO: supplement?\n});\n\nlet CFFEncoding = new PredefinedOp([ StandardEncoding, ExpertEncoding ], new CFFPointer(CFFCustomEncoding, { lazy: true }));\n\n// Decodes an array of ranges until the total\n// length is equal to the provided length.\nclass RangeArray extends r.Array {\n decode(stream, parent) {\n let length = resolveLength(this.length, stream, parent);\n let count = 0;\n let res = [];\n while (count < length) {\n let range = this.type.decode(stream, parent);\n range.offset = count;\n count += range.nLeft + 1;\n res.push(range);\n }\n\n return res;\n }\n}\n\nlet CFFCustomCharset = new r.VersionedStruct(r.uint8, {\n 0: {\n glyphs: new r.Array(r.uint16, t => t.parent.CharStrings.length - 1)\n },\n\n 1: {\n ranges: new RangeArray(Range1, t => t.parent.CharStrings.length - 1)\n },\n\n 2: {\n ranges: new RangeArray(Range2, t => t.parent.CharStrings.length - 1)\n }\n});\n\nlet CFFCharset = new PredefinedOp([ ISOAdobeCharset, ExpertCharset, ExpertSubsetCharset ], new CFFPointer(CFFCustomCharset, {lazy: true}));\n\nlet FDRange3 = new r.Struct({\n first: r.uint16,\n fd: r.uint8\n});\n\nlet FDRange4 = new r.Struct({\n first: r.uint32,\n fd: r.uint16\n});\n\nlet FDSelect = new r.VersionedStruct(r.uint8, {\n 0: {\n fds: new r.Array(r.uint8, t => t.parent.CharStrings.length)\n },\n\n 3: {\n nRanges: r.uint16,\n ranges: new r.Array(FDRange3, 'nRanges'),\n sentinel: r.uint16\n },\n\n 4: {\n nRanges: r.uint32,\n ranges: new r.Array(FDRange4, 'nRanges'),\n sentinel: r.uint32\n }\n});\n\nlet ptr = new CFFPointer(CFFPrivateDict);\nclass CFFPrivateOp {\n decode(stream, parent, operands) {\n parent.length = operands[0];\n return ptr.decode(stream, parent, [operands[1]]);\n }\n\n size(dict, ctx) {\n return [CFFPrivateDict.size(dict, ctx, false), ptr.size(dict, ctx)[0]];\n }\n\n encode(stream, dict, ctx) {\n return [CFFPrivateDict.size(dict, ctx, false), ptr.encode(stream, dict, ctx)[0]];\n }\n}\n\nlet FontDict = new CFFDict([\n // key name type(s) default\n [18, 'Private', new CFFPrivateOp, null],\n [[12, 38], 'FontName', 'sid', null],\n [[12, 7], 'FontMatrix', 'array', [0.001, 0, 0, 0.001, 0, 0]],\n [[12, 5], 'PaintType', 'number', 0],\n]);\n\nlet CFFTopDict = new CFFDict([\n // key name type(s) default\n [[12, 30], 'ROS', ['sid', 'sid', 'number'], null],\n\n [0, 'version', 'sid', null],\n [1, 'Notice', 'sid', null],\n [[12, 0], 'Copyright', 'sid', null],\n [2, 'FullName', 'sid', null],\n [3, 'FamilyName', 'sid', null],\n [4, 'Weight', 'sid', null],\n [[12, 1], 'isFixedPitch', 'boolean', false],\n [[12, 2], 'ItalicAngle', 'number', 0],\n [[12, 3], 'UnderlinePosition', 'number', -100],\n [[12, 4], 'UnderlineThickness', 'number', 50],\n [[12, 5], 'PaintType', 'number', 0],\n [[12, 6], 'CharstringType', 'number', 2],\n [[12, 7], 'FontMatrix', 'array', [0.001, 0, 0, 0.001, 0, 0]],\n [13, 'UniqueID', 'number', null],\n [5, 'FontBBox', 'array', [0, 0, 0, 0]],\n [[12, 8], 'StrokeWidth', 'number', 0],\n [14, 'XUID', 'array', null],\n [15, 'charset', CFFCharset, ISOAdobeCharset],\n [16, 'Encoding', CFFEncoding, StandardEncoding],\n [17, 'CharStrings', new CFFPointer(new CFFIndex), null],\n [18, 'Private', new CFFPrivateOp, null],\n [[12, 20], 'SyntheticBase', 'number', null],\n [[12, 21], 'PostScript', 'sid', null],\n [[12, 22], 'BaseFontName', 'sid', null],\n [[12, 23], 'BaseFontBlend', 'delta', null],\n\n // CID font specific\n [[12, 31], 'CIDFontVersion', 'number', 0],\n [[12, 32], 'CIDFontRevision', 'number', 0],\n [[12, 33], 'CIDFontType', 'number', 0],\n [[12, 34], 'CIDCount', 'number', 8720],\n [[12, 35], 'UIDBase', 'number', null],\n [[12, 37], 'FDSelect', new CFFPointer(FDSelect), null],\n [[12, 36], 'FDArray', new CFFPointer(new CFFIndex(FontDict)), null],\n [[12, 38], 'FontName', 'sid', null]\n]);\n\nlet VariationStore = new r.Struct({\n length: r.uint16,\n itemVariationStore: ItemVariationStore\n})\n\nlet CFF2TopDict = new CFFDict([\n [[12, 7], 'FontMatrix', 'array', [0.001, 0, 0, 0.001, 0, 0]],\n [17, 'CharStrings', new CFFPointer(new CFFIndex), null],\n [[12, 37], 'FDSelect', new CFFPointer(FDSelect), null],\n [[12, 36], 'FDArray', new CFFPointer(new CFFIndex(FontDict)), null],\n [24, 'vstore', new CFFPointer(VariationStore), null],\n [25, 'maxstack', 'number', 193]\n]);\n\nlet CFFTop = new r.VersionedStruct(r.fixed16, {\n 1: {\n hdrSize: r.uint8,\n offSize: r.uint8,\n nameIndex: new CFFIndex(new r.String('length')),\n topDictIndex: new CFFIndex(CFFTopDict),\n stringIndex: new CFFIndex(new r.String('length')),\n globalSubrIndex: new CFFIndex\n },\n\n 2: {\n hdrSize: r.uint8,\n length: r.uint16,\n topDict: CFF2TopDict,\n globalSubrIndex: new CFFIndex\n }\n});\n\nexport default CFFTop;\n","import isEqual from 'fast-deep-equal';\nimport * as r from 'restructure';\nimport CFFOperand from './CFFOperand';\nimport { PropertyDescriptor } from 'restructure';\n\nexport default class CFFDict {\n constructor(ops = []) {\n this.ops = ops;\n this.fields = {};\n for (let field of ops) {\n let key = Array.isArray(field[0]) ? field[0][0] << 8 | field[0][1] : field[0];\n this.fields[key] = field;\n }\n }\n\n decodeOperands(type, stream, ret, operands) {\n if (Array.isArray(type)) {\n return operands.map((op, i) => this.decodeOperands(type[i], stream, ret, [op]));\n } else if (type.decode != null) {\n return type.decode(stream, ret, operands);\n } else {\n switch (type) {\n case 'number':\n case 'offset':\n case 'sid':\n return operands[0];\n case 'boolean':\n return !!operands[0];\n default:\n return operands;\n }\n }\n }\n\n encodeOperands(type, stream, ctx, operands) {\n if (Array.isArray(type)) {\n return operands.map((op, i) => this.encodeOperands(type[i], stream, ctx, op)[0]);\n } else if (type.encode != null) {\n return type.encode(stream, operands, ctx);\n } else if (typeof operands === 'number') {\n return [operands];\n } else if (typeof operands === 'boolean') {\n return [+operands];\n } else if (Array.isArray(operands)) {\n return operands;\n } else {\n return [operands];\n }\n }\n\n decode(stream, parent) {\n let end = stream.pos + parent.length;\n let ret = {};\n let operands = [];\n\n // define hidden properties\n Object.defineProperties(ret, {\n parent: { value: parent },\n _startOffset: { value: stream.pos }\n });\n\n // fill in defaults\n for (let key in this.fields) {\n let field = this.fields[key];\n ret[field[1]] = field[3];\n }\n\n while (stream.pos < end) {\n let b = stream.readUInt8();\n if (b < 28) {\n if (b === 12) {\n b = (b << 8) | stream.readUInt8();\n }\n\n let field = this.fields[b];\n if (!field) {\n throw new Error(`Unknown operator ${b}`);\n }\n\n let val = this.decodeOperands(field[2], stream, ret, operands);\n if (val != null) {\n if (val instanceof PropertyDescriptor) {\n Object.defineProperty(ret, field[1], val);\n } else {\n ret[field[1]] = val;\n }\n }\n\n operands = [];\n } else {\n operands.push(CFFOperand.decode(stream, b));\n }\n }\n\n return ret;\n }\n\n size(dict, parent, includePointers = true) {\n let ctx = {\n parent,\n val: dict,\n pointerSize: 0,\n startOffset: parent.startOffset || 0\n };\n\n let len = 0;\n\n for (let k in this.fields) {\n let field = this.fields[k];\n let val = dict[field[1]];\n if (val == null || isEqual(val, field[3])) {\n continue;\n }\n\n let operands = this.encodeOperands(field[2], null, ctx, val);\n for (let op of operands) {\n len += CFFOperand.size(op);\n }\n\n let key = Array.isArray(field[0]) ? field[0] : [field[0]];\n len += key.length;\n }\n\n if (includePointers) {\n len += ctx.pointerSize;\n }\n\n return len;\n }\n\n encode(stream, dict, parent) {\n let ctx = {\n pointers: [],\n startOffset: stream.pos,\n parent,\n val: dict,\n pointerSize: 0\n };\n\n ctx.pointerOffset = stream.pos + this.size(dict, ctx, false);\n\n for (let field of this.ops) {\n let val = dict[field[1]];\n if (val == null || isEqual(val, field[3])) {\n continue;\n }\n\n let operands = this.encodeOperands(field[2], stream, ctx, val);\n for (let op of operands) {\n CFFOperand.encode(stream, op);\n }\n\n let key = Array.isArray(field[0]) ? field[0] : [field[0]];\n for (let op of key) {\n stream.writeUInt8(op);\n }\n }\n\n let i = 0;\n while (i < ctx.pointers.length) {\n let ptr = ctx.pointers[i++];\n ptr.type.encode(stream, ptr.val, ptr.parent);\n }\n\n return;\n }\n}\n","const FLOAT_EOF = 0xf;\nconst FLOAT_LOOKUP = [\n '0', '1', '2', '3', '4', '5', '6', '7',\n '8', '9', '.', 'E', 'E-', null, '-'\n];\n\nconst FLOAT_ENCODE_LOOKUP = {\n '.': 10,\n 'E': 11,\n 'E-': 12,\n '-': 14\n};\n\nexport default class CFFOperand {\n static decode(stream, value) {\n if (32 <= value && value <= 246) {\n return value - 139;\n }\n\n if (247 <= value && value <= 250) {\n return (value - 247) * 256 + stream.readUInt8() + 108;\n }\n\n if (251 <= value && value <= 254) {\n return -(value - 251) * 256 - stream.readUInt8() - 108;\n }\n\n if (value === 28) {\n return stream.readInt16BE();\n }\n\n if (value === 29) {\n return stream.readInt32BE();\n }\n\n if (value === 30) {\n let str = '';\n while (true) {\n let b = stream.readUInt8();\n\n let n1 = b >> 4;\n if (n1 === FLOAT_EOF) { break; }\n str += FLOAT_LOOKUP[n1];\n\n let n2 = b & 15;\n if (n2 === FLOAT_EOF) { break; }\n str += FLOAT_LOOKUP[n2];\n }\n\n return parseFloat(str);\n }\n\n return null;\n }\n\n static size(value) {\n // if the value needs to be forced to the largest size (32 bit)\n // e.g. for unknown pointers, set to 32768\n if (value.forceLarge) {\n value = 32768;\n }\n\n if ((value | 0) !== value) { // floating point\n let str = '' + value;\n return 1 + Math.ceil((str.length + 1) / 2);\n\n } else if (-107 <= value && value <= 107) {\n return 1;\n\n } else if (108 <= value && value <= 1131 || -1131 <= value && value <= -108) {\n return 2;\n\n } else if (-32768 <= value && value <= 32767) {\n return 3;\n\n } else {\n return 5;\n }\n }\n\n static encode(stream, value) {\n // if the value needs to be forced to the largest size (32 bit)\n // e.g. for unknown pointers, save the old value and set to 32768\n let val = Number(value);\n\n if (value.forceLarge) {\n stream.writeUInt8(29);\n return stream.writeInt32BE(val);\n\n } else if ((val | 0) !== val) { // floating point\n stream.writeUInt8(30);\n\n let str = '' + val;\n for (let i = 0; i < str.length; i += 2) {\n let c1 = str[i];\n let n1 = FLOAT_ENCODE_LOOKUP[c1] || +c1;\n\n if (i === str.length - 1) {\n var n2 = FLOAT_EOF;\n } else {\n let c2 = str[i + 1];\n var n2 = FLOAT_ENCODE_LOOKUP[c2] || +c2;\n }\n\n stream.writeUInt8((n1 << 4) | (n2 & 15));\n }\n\n if (n2 !== FLOAT_EOF) {\n return stream.writeUInt8((FLOAT_EOF << 4));\n }\n\n } else if (-107 <= val && val <= 107) {\n return stream.writeUInt8(val + 139);\n\n } else if (108 <= val && val <= 1131) {\n val -= 108;\n stream.writeUInt8((val >> 8) + 247);\n return stream.writeUInt8(val & 0xff);\n\n } else if (-1131 <= val && val <= -108) {\n val = -val - 108;\n stream.writeUInt8((val >> 8) + 251);\n return stream.writeUInt8(val & 0xff);\n\n } else if (-32768 <= val && val <= 32767) {\n stream.writeUInt8(28);\n return stream.writeInt16BE(val);\n\n } else {\n stream.writeUInt8(29);\n return stream.writeInt32BE(val);\n }\n }\n}\n","import * as r from 'restructure';\n\nexport default class CFFPointer extends r.Pointer {\n constructor(type, options = {}) {\n if (options.type == null) {\n options.type = 'global';\n }\n\n super(null, type, options);\n }\n\n decode(stream, parent, operands) {\n this.offsetType = {\n decode: () => operands[0]\n };\n\n return super.decode(stream, parent, operands);\n }\n\n encode(stream, value, ctx) {\n if (!stream) {\n // compute the size (so ctx.pointerSize is correct)\n this.offsetType = {\n size: () => 0\n };\n\n this.size(value, ctx);\n return [new Ptr(0)];\n }\n\n let ptr = null;\n this.offsetType = {\n encode: (stream, val) => ptr = val\n };\n\n super.encode(stream, value, ctx);\n return [new Ptr(ptr)];\n }\n}\n\nclass Ptr {\n constructor(val) {\n this.val = val;\n this.forceLarge = true;\n }\n\n valueOf() {\n return this.val;\n }\n}\n","import CFFDict from './CFFDict';\nimport CFFIndex from './CFFIndex';\nimport CFFPointer from './CFFPointer';\n\nclass CFFBlendOp {\n static decode(stream, parent, operands) {\n let numBlends = operands.pop();\n\n // TODO: actually blend. For now just consume the deltas\n // since we don't use any of the values anyway.\n while (operands.length > numBlends) {\n operands.pop();\n }\n }\n}\n\nexport default new CFFDict([\n // key name type default\n [6, 'BlueValues', 'delta', null],\n [7, 'OtherBlues', 'delta', null],\n [8, 'FamilyBlues', 'delta', null],\n [9, 'FamilyOtherBlues', 'delta', null],\n [[12, 9], 'BlueScale', 'number', 0.039625],\n [[12, 10], 'BlueShift', 'number', 7],\n [[12, 11], 'BlueFuzz', 'number', 1],\n [10, 'StdHW', 'number', null],\n [11, 'StdVW', 'number', null],\n [[12, 12], 'StemSnapH', 'delta', null],\n [[12, 13], 'StemSnapV', 'delta', null],\n [[12, 14], 'ForceBold', 'boolean', false],\n [[12, 17], 'LanguageGroup', 'number', 0],\n [[12, 18], 'ExpansionFactor', 'number', 0.06],\n [[12, 19], 'initialRandomSeed', 'number', 0],\n [20, 'defaultWidthX', 'number', 0],\n [21, 'nominalWidthX', 'number', 0],\n [22, 'vsindex', 'number', 0],\n [23, 'blend', CFFBlendOp, null],\n [19, 'Subrs', new CFFPointer(new CFFIndex, {type: 'local'}), null]\n]);\n","// Automatically generated from Appendix A of the CFF specification; do\n// not edit. Length should be 391.\nexport default [\n \".notdef\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\",\n \"percent\", \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\",\n \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\",\n \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\",\n \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\",\n \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\",\n \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\",\n \"bracketright\", \"asciicircum\", \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\",\n \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\",\n \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\",\n \"asciitilde\", \"exclamdown\", \"cent\", \"sterling\", \"fraction\", \"yen\",\n \"florin\", \"section\", \"currency\", \"quotesingle\", \"quotedblleft\",\n \"guillemotleft\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"endash\",\n \"dagger\", \"daggerdbl\", \"periodcentered\", \"paragraph\", \"bullet\",\n \"quotesinglbase\", \"quotedblbase\", \"quotedblright\", \"guillemotright\",\n \"ellipsis\", \"perthousand\", \"questiondown\", \"grave\", \"acute\", \"circumflex\",\n \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"ring\", \"cedilla\",\n \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"AE\", \"ordfeminine\", \"Lslash\",\n \"Oslash\", \"OE\", \"ordmasculine\", \"ae\", \"dotlessi\", \"lslash\", \"oslash\", \"oe\",\n \"germandbls\", \"onesuperior\", \"logicalnot\", \"mu\", \"trademark\", \"Eth\",\n \"onehalf\", \"plusminus\", \"Thorn\", \"onequarter\", \"divide\", \"brokenbar\",\n \"degree\", \"thorn\", \"threequarters\", \"twosuperior\", \"registered\", \"minus\",\n \"eth\", \"multiply\", \"threesuperior\", \"copyright\", \"Aacute\", \"Acircumflex\",\n \"Adieresis\", \"Agrave\", \"Aring\", \"Atilde\", \"Ccedilla\", \"Eacute\",\n \"Ecircumflex\", \"Edieresis\", \"Egrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\",\n \"Igrave\", \"Ntilde\", \"Oacute\", \"Ocircumflex\", \"Odieresis\", \"Ograve\",\n \"Otilde\", \"Scaron\", \"Uacute\", \"Ucircumflex\", \"Udieresis\", \"Ugrave\",\n \"Yacute\", \"Ydieresis\", \"Zcaron\", \"aacute\", \"acircumflex\", \"adieresis\",\n \"agrave\", \"aring\", \"atilde\", \"ccedilla\", \"eacute\", \"ecircumflex\",\n \"edieresis\", \"egrave\", \"iacute\", \"icircumflex\", \"idieresis\", \"igrave\",\n \"ntilde\", \"oacute\", \"ocircumflex\", \"odieresis\", \"ograve\", \"otilde\",\n \"scaron\", \"uacute\", \"ucircumflex\", \"udieresis\", \"ugrave\", \"yacute\",\n \"ydieresis\", \"zcaron\", \"exclamsmall\", \"Hungarumlautsmall\",\n \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\",\n \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\",\n \"onedotenleader\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\",\n \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\",\n \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"commasuperior\",\n \"threequartersemdash\", \"periodsuperior\", \"questionsmall\", \"asuperior\",\n \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\",\n \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\",\n \"ssuperior\", \"tsuperior\", \"ff\", \"ffi\", \"ffl\", \"parenleftinferior\",\n \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\",\n \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\",\n \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\",\n \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\",\n \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\",\n \"onefitted\", \"rupiah\", \"Tildesmall\", \"exclamdownsmall\", \"centoldstyle\",\n \"Lslashsmall\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\",\n \"Caronsmall\", \"Dotaccentsmall\", \"Macronsmall\", \"figuredash\",\n \"hypheninferior\", \"Ogoneksmall\", \"Ringsmall\", \"Cedillasmall\",\n \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"foursuperior\",\n \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\",\n \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\",\n \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\",\n \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\",\n \"dollarinferior\", \"periodinferior\", \"commainferior\", \"Agravesmall\",\n \"Aacutesmall\", \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\",\n \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\",\n \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\",\n \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\",\n \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\",\n \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\",\n \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\",\n \"Ydieresissmall\", \"001.000\", \"001.001\", \"001.002\", \"001.003\", \"Black\",\n \"Bold\", \"Book\", \"Light\", \"Medium\", \"Regular\", \"Roman\", \"Semibold\"\n];\n","export let StandardEncoding = [\n '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n '', '', '', '', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quoteright',\n 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two',\n 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater',\n 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S',\n 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore',\n 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',\n 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', '', '', '', '', '', '', '', '',\n '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n 'exclamdown', 'cent', 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency', 'quotesingle',\n 'quotedblleft', 'guillemotleft', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', '', 'endash', 'dagger',\n 'daggerdbl', 'periodcentered', '', 'paragraph', 'bullet', 'quotesinglbase', 'quotedblbase', 'quotedblright',\n 'guillemotright', 'ellipsis', 'perthousand', '', 'questiondown', '', 'grave', 'acute', 'circumflex', 'tilde',\n 'macron', 'breve', 'dotaccent', 'dieresis', '', 'ring', 'cedilla', '', 'hungarumlaut', 'ogonek', 'caron',\n 'emdash', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'AE', '', 'ordfeminine', '', '', '',\n '', 'Lslash', 'Oslash', 'OE', 'ordmasculine', '', '', '', '', '', 'ae', '', '', '', 'dotlessi', '', '',\n 'lslash', 'oslash', 'oe', 'germandbls'\n];\n\nexport let ExpertEncoding = [\n '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n '', '', '', '', 'space', 'exclamsmall', 'Hungarumlautsmall', '', 'dollaroldstyle', 'dollarsuperior',\n 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader',\n 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle',\n 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon',\n 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'questionsmall', '', 'asuperior',\n 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', '', '', 'isuperior', '', '', 'lsuperior', 'msuperior',\n 'nsuperior', 'osuperior', '', '', 'rsuperior', 'ssuperior', 'tsuperior', '', 'ff', 'fi', 'fl', 'ffi', 'ffl',\n 'parenleftinferior', '', 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall',\n 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall',\n 'Msmall', 'Nsmall', 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall',\n 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', 'Tildesmall', '', '', '', '', '', '', '',\n '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n 'exclamdownsmall', 'centoldstyle', 'Lslashsmall', '', '', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall',\n 'Brevesmall', 'Caronsmall', '', 'Dotaccentsmall', '', '', 'Macronsmall', '', '', 'figuredash', 'hypheninferior',\n '', '', 'Ogoneksmall', 'Ringsmall', 'Cedillasmall', '', '', '', 'onequarter', 'onehalf', 'threequarters',\n 'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', '',\n '', 'zerosuperior', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior',\n 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior',\n 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior',\n 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior', 'Agravesmall',\n 'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall', 'AEsmall', 'Ccedillasmall',\n 'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall',\n 'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall', 'Ogravesmall', 'Oacutesmall',\n 'Ocircumflexsmall', 'Otildesmall', 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall',\n 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall', 'Ydieresissmall'\n];\n","export let ISOAdobeCharset = [\n '.notdef', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar',\n 'percent', 'ampersand', 'quoteright', 'parenleft', 'parenright',\n 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero',\n 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight',\n 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question',\n 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',\n 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',\n 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore',\n 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',\n 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',\n 'braceleft', 'bar', 'braceright', 'asciitilde', 'exclamdown', 'cent',\n 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency',\n 'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft',\n 'guilsinglright', 'fi', 'fl', 'endash', 'dagger', 'daggerdbl',\n 'periodcentered', 'paragraph', 'bullet', 'quotesinglbase',\n 'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis',\n 'perthousand', 'questiondown', 'grave', 'acute', 'circumflex', 'tilde',\n 'macron', 'breve', 'dotaccent', 'dieresis', 'ring', 'cedilla',\n 'hungarumlaut', 'ogonek', 'caron', 'emdash', 'AE', 'ordfeminine',\n 'Lslash', 'Oslash', 'OE', 'ordmasculine', 'ae', 'dotlessi', 'lslash',\n 'oslash', 'oe', 'germandbls', 'onesuperior', 'logicalnot', 'mu',\n 'trademark', 'Eth', 'onehalf', 'plusminus', 'Thorn', 'onequarter',\n 'divide', 'brokenbar', 'degree', 'thorn', 'threequarters', 'twosuperior',\n 'registered', 'minus', 'eth', 'multiply', 'threesuperior', 'copyright',\n 'Aacute', 'Acircumflex', 'Adieresis', 'Agrave', 'Aring', 'Atilde',\n 'Ccedilla', 'Eacute', 'Ecircumflex', 'Edieresis', 'Egrave', 'Iacute',\n 'Icircumflex', 'Idieresis', 'Igrave', 'Ntilde', 'Oacute', 'Ocircumflex',\n 'Odieresis', 'Ograve', 'Otilde', 'Scaron', 'Uacute', 'Ucircumflex',\n 'Udieresis', 'Ugrave', 'Yacute', 'Ydieresis', 'Zcaron', 'aacute',\n 'acircumflex', 'adieresis', 'agrave', 'aring', 'atilde', 'ccedilla',\n 'eacute', 'ecircumflex', 'edieresis', 'egrave', 'iacute', 'icircumflex',\n 'idieresis', 'igrave', 'ntilde', 'oacute', 'ocircumflex', 'odieresis',\n 'ograve', 'otilde', 'scaron', 'uacute', 'ucircumflex', 'udieresis',\n 'ugrave', 'yacute', 'ydieresis', 'zcaron'\n];\n\nexport let ExpertCharset = [\n '.notdef', 'space', 'exclamsmall', 'Hungarumlautsmall', 'dollaroldstyle',\n 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior',\n 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma',\n 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle',\n 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle',\n 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle',\n 'colon', 'semicolon', 'commasuperior', 'threequartersemdash',\n 'periodsuperior', 'questionsmall', 'asuperior', 'bsuperior',\n 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior',\n 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior',\n 'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior',\n 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall',\n 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall',\n 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall',\n 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall',\n 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary',\n 'onefitted', 'rupiah', 'Tildesmall', 'exclamdownsmall', 'centoldstyle',\n 'Lslashsmall', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall',\n 'Brevesmall', 'Caronsmall', 'Dotaccentsmall', 'Macronsmall',\n 'figuredash', 'hypheninferior', 'Ogoneksmall', 'Ringsmall',\n 'Cedillasmall', 'onequarter', 'onehalf', 'threequarters',\n 'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths',\n 'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior',\n 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior',\n 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior',\n 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior',\n 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior',\n 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior',\n 'periodinferior', 'commainferior', 'Agravesmall', 'Aacutesmall',\n 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall',\n 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall',\n 'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall',\n 'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall',\n 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall',\n 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall',\n 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall',\n 'Ydieresissmall'\n];\n\nexport let ExpertSubsetCharset = [\n '.notdef', 'space', 'dollaroldstyle', 'dollarsuperior',\n 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader',\n 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction',\n 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle',\n 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle',\n 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior',\n 'threequartersemdash', 'periodsuperior', 'asuperior', 'bsuperior',\n 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior',\n 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior',\n 'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior',\n 'parenrightinferior', 'hyphensuperior', 'colonmonetary', 'onefitted',\n 'rupiah', 'centoldstyle', 'figuredash', 'hypheninferior', 'onequarter',\n 'onehalf', 'threequarters', 'oneeighth', 'threeeighths', 'fiveeighths',\n 'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior',\n 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior',\n 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior',\n 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior',\n 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior',\n 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior',\n 'periodinferior', 'commainferior'\n];\n","import {Feature} from './opentype';\nimport * as r from 'restructure';\n\n/*******************\n * Variation Store *\n *******************/\n\nlet F2DOT14 = new r.Fixed(16, 'BE', 14);\nlet RegionAxisCoordinates = new r.Struct({\n startCoord: F2DOT14,\n peakCoord: F2DOT14,\n endCoord: F2DOT14\n});\n\nlet VariationRegionList = new r.Struct({\n axisCount: r.uint16,\n regionCount: r.uint16,\n variationRegions: new r.Array(new r.Array(RegionAxisCoordinates, 'axisCount'), 'regionCount')\n});\n\nlet DeltaSet = new r.Struct({\n shortDeltas: new r.Array(r.int16, t => t.parent.shortDeltaCount),\n regionDeltas: new r.Array(r.int8, t => t.parent.regionIndexCount - t.parent.shortDeltaCount),\n deltas: t => t.shortDeltas.concat(t.regionDeltas)\n});\n\nlet ItemVariationData = new r.Struct({\n itemCount: r.uint16,\n shortDeltaCount: r.uint16,\n regionIndexCount: r.uint16,\n regionIndexes: new r.Array(r.uint16, 'regionIndexCount'),\n deltaSets: new r.Array(DeltaSet, 'itemCount')\n});\n\nexport let ItemVariationStore = new r.Struct({\n format: r.uint16,\n variationRegionList: new r.Pointer(r.uint32, VariationRegionList),\n variationDataCount: r.uint16,\n itemVariationData: new r.Array(new r.Pointer(r.uint32, ItemVariationData), 'variationDataCount')\n});\n\n/**********************\n * Feature Variations *\n **********************/\n\nlet ConditionTable = new r.VersionedStruct(r.uint16, {\n 1: {\n axisIndex: r.uint16,\n axisIndex: r.uint16,\n filterRangeMinValue: F2DOT14,\n filterRangeMaxValue: F2DOT14\n }\n});\n\nlet ConditionSet = new r.Struct({\n conditionCount: r.uint16,\n conditionTable: new r.Array(new r.Pointer(r.uint32, ConditionTable), 'conditionCount')\n});\n\nlet FeatureTableSubstitutionRecord = new r.Struct({\n featureIndex: r.uint16,\n alternateFeatureTable: new r.Pointer(r.uint32, Feature, {type: 'parent'})\n});\n\nlet FeatureTableSubstitution = new r.Struct({\n version: r.fixed32,\n substitutionCount: r.uint16,\n substitutions: new r.Array(FeatureTableSubstitutionRecord, 'substitutionCount')\n});\n\nlet FeatureVariationRecord = new r.Struct({\n conditionSet: new r.Pointer(r.uint32, ConditionSet, {type: 'parent'}),\n featureTableSubstitution: new r.Pointer(r.uint32, FeatureTableSubstitution, {type: 'parent'})\n});\n\nexport let FeatureVariations = new r.Struct({\n majorVersion: r.uint16,\n minorVersion: r.uint16,\n featureVariationRecordCount: r.uint32,\n featureVariationRecords: new r.Array(FeatureVariationRecord, 'featureVariationRecordCount')\n});\n","import * as r from 'restructure';\n\n//########################\n// Scripts and Languages #\n//########################\n\nlet LangSysTable = new r.Struct({\n reserved: new r.Reserved(r.uint16),\n reqFeatureIndex: r.uint16,\n featureCount: r.uint16,\n featureIndexes: new r.Array(r.uint16, 'featureCount')\n});\n\nlet LangSysRecord = new r.Struct({\n tag: new r.String(4),\n langSys: new r.Pointer(r.uint16, LangSysTable, { type: 'parent' })\n});\n\nlet Script = new r.Struct({\n defaultLangSys: new r.Pointer(r.uint16, LangSysTable),\n count: r.uint16,\n langSysRecords: new r.Array(LangSysRecord, 'count')\n});\n\nlet ScriptRecord = new r.Struct({\n tag: new r.String(4),\n script: new r.Pointer(r.uint16, Script, { type: 'parent' })\n});\n\nexport let ScriptList = new r.Array(ScriptRecord, r.uint16);\n\n//#######################\n// Features and Lookups #\n//#######################\n\nlet FeatureParams = new r.Struct({\n version: r.uint16, // should be set to 0 according OT spec\n nameID: r.uint16, //OT spec: UI Name ID or uiLabelNameId\n});\n\nexport let Feature = new r.Struct({\n featureParams: new r.Pointer(r.uint16, FeatureParams),\n lookupCount: r.uint16,\n lookupListIndexes: new r.Array(r.uint16, 'lookupCount')\n});\n\nlet FeatureRecord = new r.Struct({\n tag: new r.String(4),\n feature: new r.Pointer(r.uint16, Feature, { type: 'parent' })\n});\n\nexport let FeatureList = new r.Array(FeatureRecord, r.uint16);\n\nlet LookupFlags = new r.Struct({\n markAttachmentType: r.uint8,\n flags: new r.Bitfield(r.uint8, [\n 'rightToLeft', 'ignoreBaseGlyphs', 'ignoreLigatures',\n 'ignoreMarks', 'useMarkFilteringSet'\n ])\n});\n\nexport function LookupList(SubTable) {\n let Lookup = new r.Struct({\n lookupType: r.uint16,\n flags: LookupFlags,\n subTableCount: r.uint16,\n subTables: new r.Array(new r.Pointer(r.uint16, SubTable), 'subTableCount'),\n markFilteringSet: new r.Optional(r.uint16, t => t.flags.flags.useMarkFilteringSet)\n });\n\n return new r.LazyArray(new r.Pointer(r.uint16, Lookup), r.uint16);\n}\n\n//#################\n// Coverage Table #\n//#################\n\nlet RangeRecord = new r.Struct({\n start: r.uint16,\n end: r.uint16,\n startCoverageIndex: r.uint16\n});\n\nexport let Coverage = new r.VersionedStruct(r.uint16, {\n 1: {\n glyphCount: r.uint16,\n glyphs: new r.Array(r.uint16, 'glyphCount')\n },\n 2: {\n rangeCount: r.uint16,\n rangeRecords: new r.Array(RangeRecord, 'rangeCount')\n }\n});\n\n//#########################\n// Class Definition Table #\n//#########################\n\nlet ClassRangeRecord = new r.Struct({\n start: r.uint16,\n end: r.uint16,\n class: r.uint16\n});\n\nexport let ClassDef = new r.VersionedStruct(r.uint16, {\n 1: { // Class array\n startGlyph: r.uint16,\n glyphCount: r.uint16,\n classValueArray: new r.Array(r.uint16, 'glyphCount')\n },\n 2: { // Class ranges\n classRangeCount: r.uint16,\n classRangeRecord: new r.Array(ClassRangeRecord, 'classRangeCount')\n }\n});\n\n//###############\n// Device Table #\n//###############\n\nexport let Device = new r.Struct({\n a: r.uint16, // startSize for hinting Device, outerIndex for VariationIndex\n b: r.uint16, // endSize for Device, innerIndex for VariationIndex\n deltaFormat: r.uint16\n});\n\n//#############################################\n// Contextual Substitution/Positioning Tables #\n//#############################################\n\nlet LookupRecord = new r.Struct({\n sequenceIndex: r.uint16,\n lookupListIndex: r.uint16\n});\n\nlet Rule = new r.Struct({\n glyphCount: r.uint16,\n lookupCount: r.uint16,\n input: new r.Array(r.uint16, t => t.glyphCount - 1),\n lookupRecords: new r.Array(LookupRecord, 'lookupCount')\n});\n\nlet RuleSet = new r.Array(new r.Pointer(r.uint16, Rule), r.uint16);\n\nlet ClassRule = new r.Struct({\n glyphCount: r.uint16,\n lookupCount: r.uint16,\n classes: new r.Array(r.uint16, t => t.glyphCount - 1),\n lookupRecords: new r.Array(LookupRecord, 'lookupCount')\n});\n\nlet ClassSet = new r.Array(new r.Pointer(r.uint16, ClassRule), r.uint16);\n\nexport let Context = new r.VersionedStruct(r.uint16, {\n 1: { // Simple context\n coverage: new r.Pointer(r.uint16, Coverage),\n ruleSetCount: r.uint16,\n ruleSets: new r.Array(new r.Pointer(r.uint16, RuleSet), 'ruleSetCount')\n },\n 2: { // Class-based context\n coverage: new r.Pointer(r.uint16, Coverage),\n classDef: new r.Pointer(r.uint16, ClassDef),\n classSetCnt: r.uint16,\n classSet: new r.Array(new r.Pointer(r.uint16, ClassSet), 'classSetCnt')\n },\n 3: {\n glyphCount: r.uint16,\n lookupCount: r.uint16,\n coverages: new r.Array(new r.Pointer(r.uint16, Coverage), 'glyphCount'),\n lookupRecords: new r.Array(LookupRecord, 'lookupCount')\n }\n});\n\n//######################################################\n// Chaining Contextual Substitution/Positioning Tables #\n//######################################################\n\nlet ChainRule = new r.Struct({\n backtrackGlyphCount: r.uint16,\n backtrack: new r.Array(r.uint16, 'backtrackGlyphCount'),\n inputGlyphCount: r.uint16,\n input: new r.Array(r.uint16, t => t.inputGlyphCount - 1),\n lookaheadGlyphCount: r.uint16,\n lookahead: new r.Array(r.uint16, 'lookaheadGlyphCount'),\n lookupCount: r.uint16,\n lookupRecords: new r.Array(LookupRecord, 'lookupCount')\n});\n\nlet ChainRuleSet = new r.Array(new r.Pointer(r.uint16, ChainRule), r.uint16);\n\nexport let ChainingContext = new r.VersionedStruct(r.uint16, {\n 1: { // Simple context glyph substitution\n coverage: new r.Pointer(r.uint16, Coverage),\n chainCount: r.uint16,\n chainRuleSets: new r.Array(new r.Pointer(r.uint16, ChainRuleSet), 'chainCount')\n },\n\n 2: { // Class-based chaining context\n coverage: new r.Pointer(r.uint16, Coverage),\n backtrackClassDef: new r.Pointer(r.uint16, ClassDef),\n inputClassDef: new r.Pointer(r.uint16, ClassDef),\n lookaheadClassDef: new r.Pointer(r.uint16, ClassDef),\n chainCount: r.uint16,\n chainClassSet: new r.Array(new r.Pointer(r.uint16, ChainRuleSet), 'chainCount')\n },\n\n 3: { // Coverage-based chaining context\n backtrackGlyphCount: r.uint16,\n backtrackCoverage: new r.Array(new r.Pointer(r.uint16, Coverage), 'backtrackGlyphCount'),\n inputGlyphCount: r.uint16,\n inputCoverage: new r.Array(new r.Pointer(r.uint16, Coverage), 'inputGlyphCount'),\n lookaheadGlyphCount: r.uint16,\n lookaheadCoverage: new r.Array(new r.Pointer(r.uint16, Coverage), 'lookaheadGlyphCount'),\n lookupCount: r.uint16,\n lookupRecords: new r.Array(LookupRecord, 'lookupCount')\n }\n});\n","import * as r from 'restructure';\n\nlet VerticalOrigin = new r.Struct({\n glyphIndex: r.uint16,\n vertOriginY: r.int16\n});\n\nexport default new r.Struct({\n majorVersion: r.uint16,\n minorVersion: r.uint16,\n defaultVertOriginY: r.int16,\n numVertOriginYMetrics: r.uint16,\n metrics: new r.Array(VerticalOrigin, 'numVertOriginYMetrics')\n});\n","import * as r from 'restructure';\nimport {BigMetrics} from './EBDT';\n\nlet SBitLineMetrics = new r.Struct({\n ascender: r.int8,\n descender: r.int8,\n widthMax: r.uint8,\n caretSlopeNumerator: r.int8,\n caretSlopeDenominator: r.int8,\n caretOffset: r.int8,\n minOriginSB: r.int8,\n minAdvanceSB: r.int8,\n maxBeforeBL: r.int8,\n minAfterBL: r.int8,\n pad: new r.Reserved(r.int8, 2)\n});\n\nlet CodeOffsetPair = new r.Struct({\n glyphCode: r.uint16,\n offset: r.uint16\n});\n\nlet IndexSubtable = new r.VersionedStruct(r.uint16, {\n header: {\n imageFormat: r.uint16,\n imageDataOffset: r.uint32\n },\n\n 1: {\n offsetArray: new r.Array(r.uint32, t => t.parent.lastGlyphIndex - t.parent.firstGlyphIndex + 1)\n },\n\n 2: {\n imageSize: r.uint32,\n bigMetrics: BigMetrics\n },\n\n 3: {\n offsetArray: new r.Array(r.uint16, t => t.parent.lastGlyphIndex - t.parent.firstGlyphIndex + 1)\n },\n\n 4: {\n numGlyphs: r.uint32,\n glyphArray: new r.Array(CodeOffsetPair, t => t.numGlyphs + 1)\n },\n\n 5: {\n imageSize: r.uint32,\n bigMetrics: BigMetrics,\n numGlyphs: r.uint32,\n glyphCodeArray: new r.Array(r.uint16, 'numGlyphs')\n }\n});\n\nlet IndexSubtableArray = new r.Struct({\n firstGlyphIndex: r.uint16,\n lastGlyphIndex: r.uint16,\n subtable: new r.Pointer(r.uint32, IndexSubtable)\n});\n\nlet BitmapSizeTable = new r.Struct({\n indexSubTableArray: new r.Pointer(r.uint32, new r.Array(IndexSubtableArray, 1), { type: 'parent' }),\n indexTablesSize: r.uint32,\n numberOfIndexSubTables: r.uint32,\n colorRef: r.uint32,\n hori: SBitLineMetrics,\n vert: SBitLineMetrics,\n startGlyphIndex: r.uint16,\n endGlyphIndex: r.uint16,\n ppemX: r.uint8,\n ppemY: r.uint8,\n bitDepth: r.uint8,\n flags: new r.Bitfield(r.uint8, ['horizontal', 'vertical'])\n});\n\nexport default new r.Struct({\n version: r.uint32, // 0x00020000\n numSizes: r.uint32,\n sizes: new r.Array(BitmapSizeTable, 'numSizes')\n});\n","import * as r from 'restructure';\n\nexport let BigMetrics = new r.Struct({\n height: r.uint8,\n width: r.uint8,\n horiBearingX: r.int8,\n horiBearingY: r.int8,\n horiAdvance: r.uint8,\n vertBearingX: r.int8,\n vertBearingY: r.int8,\n vertAdvance: r.uint8\n});\n\nexport let SmallMetrics = new r.Struct({\n height: r.uint8,\n width: r.uint8,\n bearingX: r.int8,\n bearingY: r.int8,\n advance: r.uint8\n});\n\nlet EBDTComponent = new r.Struct({\n glyph: r.uint16,\n xOffset: r.int8,\n yOffset: r.int8\n});\n\nclass ByteAligned {}\n\nclass BitAligned {}\n\nexport let glyph = new r.VersionedStruct('version', {\n 1: {\n metrics: SmallMetrics,\n data: ByteAligned\n },\n\n 2: {\n metrics: SmallMetrics,\n data: BitAligned\n },\n\n // format 3 is deprecated\n // format 4 is not supported by Microsoft\n\n 5: {\n data: BitAligned\n },\n\n 6: {\n metrics: BigMetrics,\n data: ByteAligned\n },\n\n 7: {\n metrics: BigMetrics,\n data: BitAligned\n },\n\n 8: {\n metrics: SmallMetrics,\n pad: new r.Reserved(r.uint8),\n numComponents: r.uint16,\n components: new r.Array(EBDTComponent, 'numComponents')\n },\n\n 9: {\n metrics: BigMetrics,\n pad: new r.Reserved(r.uint8),\n numComponents: r.uint16,\n components: new r.Array(EBDTComponent, 'numComponents')\n },\n\n 17: {\n metrics: SmallMetrics,\n dataLen: r.uint32,\n data: new r.Buffer('dataLen')\n },\n\n 18: {\n metrics: BigMetrics,\n dataLen: r.uint32,\n data: new r.Buffer('dataLen')\n },\n\n 19: {\n dataLen: r.uint32,\n data: new r.Buffer('dataLen')\n }\n});\n\n","import * as r from 'restructure';\n\nlet ImageTable = new r.Struct({\n ppem: r.uint16,\n resolution: r.uint16,\n imageOffsets: new r.Array(new r.Pointer(r.uint32, 'void'), t => t.parent.parent.maxp.numGlyphs + 1)\n});\n\n// This is the Apple sbix table, used by the \"Apple Color Emoji\" font.\n// It includes several image tables with images for each bitmap glyph\n// of several different sizes.\nexport default new r.Struct({\n version: r.uint16,\n flags: new r.Bitfield(r.uint16, ['renderOutlines']),\n numImgTables: r.uint32,\n imageTables: new r.Array(new r.Pointer(r.uint32, ImageTable), 'numImgTables')\n});\n","import * as r from 'restructure';\n\nlet LayerRecord = new r.Struct({\n gid: r.uint16, // Glyph ID of layer glyph (must be in z-order from bottom to top).\n paletteIndex: r.uint16 // Index value to use in the appropriate palette. This value must\n}); // be less than numPaletteEntries in the CPAL table, except for\n // the special case noted below. Each palette entry is 16 bits.\n // A palette index of 0xFFFF is a special case indicating that\n // the text foreground color should be used.\n\nlet BaseGlyphRecord = new r.Struct({\n gid: r.uint16, // Glyph ID of reference glyph. This glyph is for reference only\n // and is not rendered for color.\n firstLayerIndex: r.uint16, // Index (from beginning of the Layer Records) to the layer record.\n // There will be numLayers consecutive entries for this base glyph.\n numLayers: r.uint16\n});\n\nexport default new r.Struct({\n version: r.uint16,\n numBaseGlyphRecords: r.uint16,\n baseGlyphRecord: new r.Pointer(r.uint32, new r.Array(BaseGlyphRecord, 'numBaseGlyphRecords')),\n layerRecords: new r.Pointer(r.uint32, new r.Array(LayerRecord, 'numLayerRecords'), { lazy: true }),\n numLayerRecords: r.uint16\n});\n","import * as r from 'restructure';\n\nlet ColorRecord = new r.Struct({\n blue: r.uint8,\n green: r.uint8,\n red: r.uint8,\n alpha: r.uint8\n});\n\nexport default new r.VersionedStruct(r.uint16, {\n header: {\n numPaletteEntries: r.uint16,\n numPalettes: r.uint16,\n numColorRecords: r.uint16,\n colorRecords: new r.Pointer(r.uint32, new r.Array(ColorRecord, 'numColorRecords')),\n colorRecordIndices: new r.Array(r.uint16, 'numPalettes'),\n },\n 0: {},\n 1: {\n offsetPaletteTypeArray: new r.Pointer(r.uint32, new r.Array(r.uint32, 'numPalettes')),\n offsetPaletteLabelArray: new r.Pointer(r.uint32, new r.Array(r.uint16, 'numPalettes')),\n offsetPaletteEntryLabelArray: new r.Pointer(r.uint32, new r.Array(r.uint16, 'numPaletteEntries'))\n }\n});\n","import * as r from 'restructure';\nimport {ScriptList, FeatureList, LookupList, Coverage, ClassDef, Device} from './opentype';\nimport {ItemVariationStore} from './variations';\n\nlet BaseCoord = new r.VersionedStruct(r.uint16, {\n 1: { // Design units only\n coordinate: r.int16 // X or Y value, in design units\n },\n\n 2: { // Design units plus contour point\n coordinate: r.int16, // X or Y value, in design units\n referenceGlyph: r.uint16, // GlyphID of control glyph\n baseCoordPoint: r.uint16 // Index of contour point on the referenceGlyph\n },\n\n 3: { // Design units plus Device table\n coordinate: r.int16, // X or Y value, in design units\n deviceTable: new r.Pointer(r.uint16, Device) // Device table for X or Y value\n }\n});\n\nlet BaseValues = new r.Struct({\n defaultIndex: r.uint16, // Index of default baseline for this script-same index in the BaseTagList\n baseCoordCount: r.uint16,\n baseCoords: new r.Array(new r.Pointer(r.uint16, BaseCoord), 'baseCoordCount')\n});\n\nlet FeatMinMaxRecord = new r.Struct({\n tag: new r.String(4), // 4-byte feature identification tag-must match FeatureTag in FeatureList\n minCoord: new r.Pointer(r.uint16, BaseCoord, {type: 'parent'}), // May be NULL\n maxCoord: new r.Pointer(r.uint16, BaseCoord, {type: 'parent'}) // May be NULL\n});\n\nlet MinMax = new r.Struct({\n minCoord: new r.Pointer(r.uint16, BaseCoord), // May be NULL\n maxCoord: new r.Pointer(r.uint16, BaseCoord), // May be NULL\n featMinMaxCount: r.uint16, // May be 0\n featMinMaxRecords: new r.Array(FeatMinMaxRecord, 'featMinMaxCount') // In alphabetical order\n});\n\nlet BaseLangSysRecord = new r.Struct({\n tag: new r.String(4), // 4-byte language system identification tag\n minMax: new r.Pointer(r.uint16, MinMax, {type: 'parent'})\n});\n\nlet BaseScript = new r.Struct({\n baseValues: new r.Pointer(r.uint16, BaseValues), // May be NULL\n defaultMinMax: new r.Pointer(r.uint16, MinMax), // May be NULL\n baseLangSysCount: r.uint16, // May be 0\n baseLangSysRecords: new r.Array(BaseLangSysRecord, 'baseLangSysCount') // in alphabetical order by BaseLangSysTag\n});\n\nlet BaseScriptRecord = new r.Struct({\n tag: new r.String(4), // 4-byte script identification tag\n script: new r.Pointer(r.uint16, BaseScript, {type: 'parent'})\n});\n\nlet BaseScriptList = new r.Array(BaseScriptRecord, r.uint16);\n\n// Array of 4-byte baseline identification tags-must be in alphabetical order\nlet BaseTagList = new r.Array(new r.String(4), r.uint16);\n\nlet Axis = new r.Struct({\n baseTagList: new r.Pointer(r.uint16, BaseTagList), // May be NULL\n baseScriptList: new r.Pointer(r.uint16, BaseScriptList)\n});\n\nexport default new r.VersionedStruct(r.uint32, {\n header: {\n horizAxis: new r.Pointer(r.uint16, Axis), // May be NULL\n vertAxis: new r.Pointer(r.uint16, Axis) // May be NULL\n },\n\n 0x00010000: {},\n 0x00010001: {\n itemVariationStore: new r.Pointer(r.uint32, ItemVariationStore)\n }\n});\n","import * as r from 'restructure';\nimport {ScriptList, FeatureList, LookupList, Coverage, ClassDef, Device} from './opentype';\nimport {ItemVariationStore} from './variations';\n\nlet AttachPoint = new r.Array(r.uint16, r.uint16);\nlet AttachList = new r.Struct({\n coverage: new r.Pointer(r.uint16, Coverage),\n glyphCount: r.uint16,\n attachPoints: new r.Array(new r.Pointer(r.uint16, AttachPoint), 'glyphCount')\n});\n\nlet CaretValue = new r.VersionedStruct(r.uint16, {\n 1: { // Design units only\n coordinate: r.int16\n },\n\n 2: { // Contour point\n caretValuePoint: r.uint16\n },\n\n 3: { // Design units plus Device table\n coordinate: r.int16,\n deviceTable: new r.Pointer(r.uint16, Device)\n }\n});\n\nlet LigGlyph = new r.Array(new r.Pointer(r.uint16, CaretValue), r.uint16);\n\nlet LigCaretList = new r.Struct({\n coverage: new r.Pointer(r.uint16, Coverage),\n ligGlyphCount: r.uint16,\n ligGlyphs: new r.Array(new r.Pointer(r.uint16, LigGlyph), 'ligGlyphCount')\n});\n\nlet MarkGlyphSetsDef = new r.Struct({\n markSetTableFormat: r.uint16,\n markSetCount: r.uint16,\n coverage: new r.Array(new r.Pointer(r.uint32, Coverage), 'markSetCount')\n});\n\nexport default new r.VersionedStruct(r.uint32, {\n header: {\n glyphClassDef: new r.Pointer(r.uint16, ClassDef),\n attachList: new r.Pointer(r.uint16, AttachList),\n ligCaretList: new r.Pointer(r.uint16, LigCaretList),\n markAttachClassDef: new r.Pointer(r.uint16, ClassDef)\n },\n\n 0x00010000: {},\n 0x00010002: {\n markGlyphSetsDef: new r.Pointer(r.uint16, MarkGlyphSetsDef)\n },\n 0x00010003: {\n markGlyphSetsDef: new r.Pointer(r.uint16, MarkGlyphSetsDef),\n itemVariationStore: new r.Pointer(r.uint32, ItemVariationStore)\n }\n});\n","import * as r from 'restructure';\nimport {ScriptList, FeatureList, LookupList, Coverage, ClassDef, Device, Context, ChainingContext} from './opentype';\nimport {FeatureVariations} from './variations';\n\nlet ValueFormat = new r.Bitfield(r.uint16, [\n 'xPlacement', 'yPlacement',\n 'xAdvance', 'yAdvance',\n 'xPlaDevice', 'yPlaDevice',\n 'xAdvDevice', 'yAdvDevice'\n]);\n\nlet types = {\n xPlacement: r.int16,\n yPlacement: r.int16,\n xAdvance: r.int16,\n yAdvance: r.int16,\n xPlaDevice: new r.Pointer(r.uint16, Device, { type: 'global', relativeTo: ctx => ctx.rel }),\n yPlaDevice: new r.Pointer(r.uint16, Device, { type: 'global', relativeTo: ctx => ctx.rel }),\n xAdvDevice: new r.Pointer(r.uint16, Device, { type: 'global', relativeTo: ctx => ctx.rel }),\n yAdvDevice: new r.Pointer(r.uint16, Device, { type: 'global', relativeTo: ctx => ctx.rel })\n};\n\nclass ValueRecord {\n constructor(key = 'valueFormat') {\n this.key = key;\n }\n\n buildStruct(parent) {\n let struct = parent;\n while (!struct[this.key] && struct.parent) {\n struct = struct.parent;\n }\n\n if (!struct[this.key]) return;\n\n let fields = {};\n fields.rel = () => struct._startOffset;\n\n let format = struct[this.key];\n for (let key in format) {\n if (format[key]) {\n fields[key] = types[key];\n }\n }\n\n return new r.Struct(fields);\n }\n\n size(val, ctx) {\n return this.buildStruct(ctx).size(val, ctx);\n }\n\n decode(stream, parent) {\n let res = this.buildStruct(parent).decode(stream, parent);\n delete res.rel;\n return res;\n }\n}\n\nlet PairValueRecord = new r.Struct({\n secondGlyph: r.uint16,\n value1: new ValueRecord('valueFormat1'),\n value2: new ValueRecord('valueFormat2')\n});\n\nlet PairSet = new r.Array(PairValueRecord, r.uint16);\n\nlet Class2Record = new r.Struct({\n value1: new ValueRecord('valueFormat1'),\n value2: new ValueRecord('valueFormat2')\n});\n\nlet Anchor = new r.VersionedStruct(r.uint16, {\n 1: { // Design units only\n xCoordinate: r.int16,\n yCoordinate: r.int16\n },\n\n 2: { // Design units plus contour point\n xCoordinate: r.int16,\n yCoordinate: r.int16,\n anchorPoint: r.uint16\n },\n\n 3: { // Design units plus Device tables\n xCoordinate: r.int16,\n yCoordinate: r.int16,\n xDeviceTable: new r.Pointer(r.uint16, Device),\n yDeviceTable: new r.Pointer(r.uint16, Device)\n }\n});\n\nlet EntryExitRecord = new r.Struct({\n entryAnchor: new r.Pointer(r.uint16, Anchor, {type: 'parent'}),\n exitAnchor: new r.Pointer(r.uint16, Anchor, {type: 'parent'})\n});\n\nlet MarkRecord = new r.Struct({\n class: r.uint16,\n markAnchor: new r.Pointer(r.uint16, Anchor, {type: 'parent'})\n});\n\nlet MarkArray = new r.Array(MarkRecord, r.uint16);\n\nlet BaseRecord = new r.Array(new r.Pointer(r.uint16, Anchor), t => t.parent.classCount);\nlet BaseArray = new r.Array(BaseRecord, r.uint16);\n\nlet ComponentRecord = new r.Array(new r.Pointer(r.uint16, Anchor), t => t.parent.parent.classCount);\nlet LigatureAttach = new r.Array(ComponentRecord, r.uint16);\nlet LigatureArray = new r.Array(new r.Pointer(r.uint16, LigatureAttach), r.uint16);\n\nlet GPOSLookup = new r.VersionedStruct('lookupType', {\n 1: new r.VersionedStruct(r.uint16, { // Single Adjustment\n 1: { // Single positioning value\n coverage: new r.Pointer(r.uint16, Coverage),\n valueFormat: ValueFormat,\n value: new ValueRecord()\n },\n 2: {\n coverage: new r.Pointer(r.uint16, Coverage),\n valueFormat: ValueFormat,\n valueCount: r.uint16,\n values: new r.LazyArray(new ValueRecord(), 'valueCount')\n }\n }),\n\n 2: new r.VersionedStruct(r.uint16, { // Pair Adjustment Positioning\n 1: { // Adjustments for glyph pairs\n coverage: new r.Pointer(r.uint16, Coverage),\n valueFormat1: ValueFormat,\n valueFormat2: ValueFormat,\n pairSetCount: r.uint16,\n pairSets: new r.LazyArray(new r.Pointer(r.uint16, PairSet), 'pairSetCount')\n },\n\n 2: { // Class pair adjustment\n coverage: new r.Pointer(r.uint16, Coverage),\n valueFormat1: ValueFormat,\n valueFormat2: ValueFormat,\n classDef1: new r.Pointer(r.uint16, ClassDef),\n classDef2: new r.Pointer(r.uint16, ClassDef),\n class1Count: r.uint16,\n class2Count: r.uint16,\n classRecords: new r.LazyArray(new r.LazyArray(Class2Record, 'class2Count'), 'class1Count')\n }\n }),\n\n 3: { // Cursive Attachment Positioning\n format: r.uint16,\n coverage: new r.Pointer(r.uint16, Coverage),\n entryExitCount: r.uint16,\n entryExitRecords: new r.Array(EntryExitRecord, 'entryExitCount')\n },\n\n 4: { // MarkToBase Attachment Positioning\n format: r.uint16,\n markCoverage: new r.Pointer(r.uint16, Coverage),\n baseCoverage: new r.Pointer(r.uint16, Coverage),\n classCount: r.uint16,\n markArray: new r.Pointer(r.uint16, MarkArray),\n baseArray: new r.Pointer(r.uint16, BaseArray)\n },\n\n 5: { // MarkToLigature Attachment Positioning\n format: r.uint16,\n markCoverage: new r.Pointer(r.uint16, Coverage),\n ligatureCoverage: new r.Pointer(r.uint16, Coverage),\n classCount: r.uint16,\n markArray: new r.Pointer(r.uint16, MarkArray),\n ligatureArray: new r.Pointer(r.uint16, LigatureArray)\n },\n\n 6: { // MarkToMark Attachment Positioning\n format: r.uint16,\n mark1Coverage: new r.Pointer(r.uint16, Coverage),\n mark2Coverage: new r.Pointer(r.uint16, Coverage),\n classCount: r.uint16,\n mark1Array: new r.Pointer(r.uint16, MarkArray),\n mark2Array: new r.Pointer(r.uint16, BaseArray)\n },\n\n 7: Context, // Contextual positioning\n 8: ChainingContext, // Chaining contextual positioning\n\n 9: { // Extension Positioning\n posFormat: r.uint16,\n lookupType: r.uint16, // cannot also be 9\n extension: new r.Pointer(r.uint32, null)\n }\n});\n\n// Fix circular reference\nGPOSLookup.versions[9].extension.type = GPOSLookup;\n\nexport default new r.VersionedStruct(r.uint32, {\n header: {\n scriptList: new r.Pointer(r.uint16, ScriptList),\n featureList: new r.Pointer(r.uint16, FeatureList),\n lookupList: new r.Pointer(r.uint16, new LookupList(GPOSLookup))\n },\n\n 0x00010000: {},\n 0x00010001: {\n featureVariations: new r.Pointer(r.uint32, FeatureVariations)\n }\n});\n\n// export GPOSLookup for JSTF table\nexport { GPOSLookup };\n","import * as r from 'restructure';\nimport {ScriptList, FeatureList, LookupList, Coverage, ClassDef, Device, Context, ChainingContext} from './opentype';\nimport {FeatureVariations} from './variations';\n\nlet Sequence = new r.Array(r.uint16, r.uint16);\nlet AlternateSet = Sequence;\n\nlet Ligature = new r.Struct({\n glyph: r.uint16,\n compCount: r.uint16,\n components: new r.Array(r.uint16, t => t.compCount - 1)\n});\n\nlet LigatureSet = new r.Array(new r.Pointer(r.uint16, Ligature), r.uint16);\n\nlet GSUBLookup = new r.VersionedStruct('lookupType', {\n 1: new r.VersionedStruct(r.uint16, {// Single Substitution\n 1: {\n coverage: new r.Pointer(r.uint16, Coverage),\n deltaGlyphID: r.int16\n },\n 2: {\n coverage: new r.Pointer(r.uint16, Coverage),\n glyphCount: r.uint16,\n substitute: new r.LazyArray(r.uint16, 'glyphCount')\n }\n }),\n\n 2: { // Multiple Substitution\n substFormat: r.uint16,\n coverage: new r.Pointer(r.uint16, Coverage),\n count: r.uint16,\n sequences: new r.LazyArray(new r.Pointer(r.uint16, Sequence), 'count')\n },\n\n 3: { // Alternate Substitution\n substFormat: r.uint16,\n coverage: new r.Pointer(r.uint16, Coverage),\n count: r.uint16,\n alternateSet: new r.LazyArray(new r.Pointer(r.uint16, AlternateSet), 'count')\n },\n\n 4: { // Ligature Substitution\n substFormat: r.uint16,\n coverage: new r.Pointer(r.uint16, Coverage),\n count: r.uint16,\n ligatureSets: new r.LazyArray(new r.Pointer(r.uint16, LigatureSet), 'count')\n },\n\n 5: Context, // Contextual Substitution\n 6: ChainingContext, // Chaining Contextual Substitution\n\n 7: { // Extension Substitution\n substFormat: r.uint16,\n lookupType: r.uint16, // cannot also be 7\n extension: new r.Pointer(r.uint32, null)\n },\n\n 8: { // Reverse Chaining Contextual Single Substitution\n substFormat: r.uint16,\n coverage: new r.Pointer(r.uint16, Coverage),\n backtrackCoverage: new r.Array(new r.Pointer(r.uint16, Coverage), 'backtrackGlyphCount'),\n lookaheadGlyphCount: r.uint16,\n lookaheadCoverage: new r.Array(new r.Pointer(r.uint16, Coverage), 'lookaheadGlyphCount'),\n glyphCount: r.uint16,\n substitutes: new r.Array(r.uint16, 'glyphCount')\n }\n});\n\n// Fix circular reference\nGSUBLookup.versions[7].extension.type = GSUBLookup;\n\nexport default new r.VersionedStruct(r.uint32, {\n header: {\n scriptList: new r.Pointer(r.uint16, ScriptList),\n featureList: new r.Pointer(r.uint16, FeatureList),\n lookupList: new r.Pointer(r.uint16, new LookupList(GSUBLookup))\n },\n\n 0x00010000: {},\n 0x00010001: {\n featureVariations: new r.Pointer(r.uint32, FeatureVariations)\n }\n});\n","import * as r from 'restructure';\nimport { ScriptList, FeatureList, LookupList, Coverage, ClassDef, Device } from './opentype';\nimport { GPOSLookup } from './GPOS';\n\nlet JstfGSUBModList = new r.Array(r.uint16, r.uint16);\n\nlet JstfPriority = new r.Struct({\n shrinkageEnableGSUB: new r.Pointer(r.uint16, JstfGSUBModList),\n shrinkageDisableGSUB: new r.Pointer(r.uint16, JstfGSUBModList),\n shrinkageEnableGPOS: new r.Pointer(r.uint16, JstfGSUBModList),\n shrinkageDisableGPOS: new r.Pointer(r.uint16, JstfGSUBModList),\n shrinkageJstfMax: new r.Pointer(r.uint16, new LookupList(GPOSLookup)),\n extensionEnableGSUB: new r.Pointer(r.uint16, JstfGSUBModList),\n extensionDisableGSUB: new r.Pointer(r.uint16, JstfGSUBModList),\n extensionEnableGPOS: new r.Pointer(r.uint16, JstfGSUBModList),\n extensionDisableGPOS: new r.Pointer(r.uint16, JstfGSUBModList),\n extensionJstfMax: new r.Pointer(r.uint16, new LookupList(GPOSLookup))\n});\n\nlet JstfLangSys = new r.Array(new r.Pointer(r.uint16, JstfPriority), r.uint16);\n\nlet JstfLangSysRecord = new r.Struct({\n tag: new r.String(4),\n jstfLangSys: new r.Pointer(r.uint16, JstfLangSys)\n});\n\nlet JstfScript = new r.Struct({\n extenderGlyphs: new r.Pointer(r.uint16, new r.Array(r.uint16, r.uint16)), // array of glyphs to extend line length\n defaultLangSys: new r.Pointer(r.uint16, JstfLangSys),\n langSysCount: r.uint16,\n langSysRecords: new r.Array(JstfLangSysRecord, 'langSysCount')\n});\n\nlet JstfScriptRecord = new r.Struct({\n tag: new r.String(4),\n script: new r.Pointer(r.uint16, JstfScript, {type: 'parent'})\n});\n\nexport default new r.Struct({\n version: r.uint32, // should be 0x00010000\n scriptCount: r.uint16,\n scriptList: new r.Array(JstfScriptRecord, 'scriptCount')\n});\n","import * as r from 'restructure';\nimport { resolveLength } from 'restructure';\nimport { ItemVariationStore } from './variations';\n\n// TODO: add this to restructure\nclass VariableSizeNumber {\n constructor(size) {\n this._size = size;\n }\n\n decode(stream, parent) {\n switch (this.size(0, parent)) {\n case 1: return stream.readUInt8();\n case 2: return stream.readUInt16BE();\n case 3: return stream.readUInt24BE();\n case 4: return stream.readUInt32BE();\n }\n }\n\n size(val, parent) {\n return resolveLength(this._size, null, parent);\n }\n}\n\nlet MapDataEntry = new r.Struct({\n entry: new VariableSizeNumber(t => ((t.parent.entryFormat & 0x0030) >> 4) + 1),\n outerIndex: t => t.entry >> ((t.parent.entryFormat & 0x000F) + 1),\n innerIndex: t => t.entry & ((1 << ((t.parent.entryFormat & 0x000F) + 1)) - 1)\n});\n\nlet DeltaSetIndexMap = new r.Struct({\n entryFormat: r.uint16,\n mapCount: r.uint16,\n mapData: new r.Array(MapDataEntry, 'mapCount')\n});\n\nexport default new r.Struct({\n majorVersion: r.uint16,\n minorVersion: r.uint16,\n itemVariationStore: new r.Pointer(r.uint32, ItemVariationStore),\n advanceWidthMapping: new r.Pointer(r.uint32, DeltaSetIndexMap),\n LSBMapping: new r.Pointer(r.uint32, DeltaSetIndexMap),\n RSBMapping: new r.Pointer(r.uint32, DeltaSetIndexMap)\n});\n","import * as r from 'restructure';\n\nlet Signature = new r.Struct({\n format: r.uint32,\n length: r.uint32,\n offset: r.uint32\n});\n\nlet SignatureBlock = new r.Struct({\n reserved: new r.Reserved(r.uint16, 2),\n cbSignature: r.uint32, // Length (in bytes) of the PKCS#7 packet in pbSignature\n signature: new r.Buffer('cbSignature')\n});\n\nexport default new r.Struct({\n ulVersion: r.uint32, // Version number of the DSIG table (0x00000001)\n usNumSigs: r.uint16, // Number of signatures in the table\n usFlag: r.uint16, // Permission flags\n signatures: new r.Array(Signature, 'usNumSigs'),\n signatureBlocks: new r.Array(SignatureBlock, 'usNumSigs')\n});\n","import * as r from 'restructure';\n\nlet GaspRange = new r.Struct({\n rangeMaxPPEM: r.uint16, // Upper limit of range, in ppem\n rangeGaspBehavior: new r.Bitfield(r.uint16, [ // Flags describing desired rasterizer behavior\n 'grayscale', 'gridfit',\n 'symmetricSmoothing', 'symmetricGridfit' // only in version 1, for ClearType\n ])\n});\n\nexport default new r.Struct({\n version: r.uint16, // set to 0\n numRanges: r.uint16,\n gaspRanges: new r.Array(GaspRange, 'numRanges') // Sorted by ppem\n});\n","import * as r from 'restructure';\n\nlet DeviceRecord = new r.Struct({\n pixelSize: r.uint8,\n maximumWidth: r.uint8,\n widths: new r.Array(r.uint8, t => t.parent.parent.maxp.numGlyphs)\n});\n\n// The Horizontal Device Metrics table stores integer advance widths scaled to particular pixel sizes\nexport default new r.Struct({\n version: r.uint16,\n numRecords: r.int16,\n sizeDeviceRecord: r.int32,\n records: new r.Array(DeviceRecord, 'numRecords')\n});\n","import * as r from 'restructure';\n\nlet KernPair = new r.Struct({\n left: r.uint16,\n right: r.uint16,\n value: r.int16\n});\n\nlet ClassTable = new r.Struct({\n firstGlyph: r.uint16,\n nGlyphs: r.uint16,\n offsets: new r.Array(r.uint16, 'nGlyphs'),\n max: t => t.offsets.length && Math.max.apply(Math, t.offsets)\n});\n\nlet Kern2Array = new r.Struct({\n off: t => t._startOffset - t.parent.parent._startOffset,\n len: t => (((t.parent.leftTable.max - t.off) / t.parent.rowWidth) + 1) * (t.parent.rowWidth / 2),\n values: new r.LazyArray(r.int16, 'len')\n});\n\nlet KernSubtable = new r.VersionedStruct('format', {\n 0: {\n nPairs: r.uint16,\n searchRange: r.uint16,\n entrySelector: r.uint16,\n rangeShift: r.uint16,\n pairs: new r.Array(KernPair, 'nPairs')\n },\n\n 2: {\n rowWidth: r.uint16,\n leftTable: new r.Pointer(r.uint16, ClassTable, {type: 'parent'}),\n rightTable: new r.Pointer(r.uint16, ClassTable, {type: 'parent'}),\n array: new r.Pointer(r.uint16, Kern2Array, {type: 'parent'})\n },\n\n 3: {\n glyphCount: r.uint16,\n kernValueCount: r.uint8,\n leftClassCount: r.uint8,\n rightClassCount: r.uint8,\n flags: r.uint8,\n kernValue: new r.Array(r.int16, 'kernValueCount'),\n leftClass: new r.Array(r.uint8, 'glyphCount'),\n rightClass: new r.Array(r.uint8, 'glyphCount'),\n kernIndex: new r.Array(r.uint8, t => t.leftClassCount * t.rightClassCount)\n }\n});\n\nlet KernTable = new r.VersionedStruct('version', {\n 0: { // Microsoft uses this format\n subVersion: r.uint16, // Microsoft has an extra sub-table version number\n length: r.uint16, // Length of the subtable, in bytes\n format: r.uint8, // Format of subtable\n coverage: new r.Bitfield(r.uint8, [\n 'horizontal', // 1 if table has horizontal data, 0 if vertical\n 'minimum', // If set to 1, the table has minimum values. If set to 0, the table has kerning values.\n 'crossStream', // If set to 1, kerning is perpendicular to the flow of the text\n 'override' // If set to 1 the value in this table replaces the accumulated value\n ]),\n subtable: KernSubtable,\n padding: new r.Reserved(r.uint8, t => t.length - t._currentOffset)\n },\n 1: { // Apple uses this format\n length: r.uint32,\n coverage: new r.Bitfield(r.uint8, [\n null, null, null, null, null,\n 'variation', // Set if table has variation kerning values\n 'crossStream', // Set if table has cross-stream kerning values\n 'vertical' // Set if table has vertical kerning values\n ]),\n format: r.uint8,\n tupleIndex: r.uint16,\n subtable: KernSubtable,\n padding: new r.Reserved(r.uint8, t => t.length - t._currentOffset)\n }\n});\n\nexport default new r.VersionedStruct(r.uint16, {\n 0: { // Microsoft Version\n nTables: r.uint16,\n tables: new r.Array(KernTable, 'nTables')\n },\n\n 1: { // Apple Version\n reserved: new r.Reserved(r.uint16), // the other half of the version number\n nTables: r.uint32,\n tables: new r.Array(KernTable, 'nTables')\n }\n});\n","import * as r from 'restructure';\n\n// Linear Threshold table\n// Records the ppem for each glyph at which the scaling becomes linear again,\n// despite instructions effecting the advance width\nexport default new r.Struct({\n version: r.uint16,\n numGlyphs: r.uint16,\n yPels: new r.Array(r.uint8, 'numGlyphs')\n});\n","import * as r from 'restructure';\n\n// PCL 5 Table\n// NOTE: The PCLT table is strongly discouraged for OpenType fonts with TrueType outlines\nexport default new r.Struct({\n version: r.uint16,\n fontNumber: r.uint32,\n pitch: r.uint16,\n xHeight: r.uint16,\n style: r.uint16,\n typeFamily: r.uint16,\n capHeight: r.uint16,\n symbolSet: r.uint16,\n typeface: new r.String(16),\n characterComplement: new r.String(8),\n fileName: new r.String(6),\n strokeWeight: new r.String(1),\n widthType: new r.String(1),\n serifStyle: r.uint8,\n reserved: new r.Reserved(r.uint8)\n});\n","import * as r from 'restructure';\n\n// VDMX tables contain ascender/descender overrides for certain (usually small)\n// sizes. This is needed in order to match font metrics on Windows.\n\nlet Ratio = new r.Struct({\n bCharSet: r.uint8, // Character set\n xRatio: r.uint8, // Value to use for x-Ratio\n yStartRatio: r.uint8, // Starting y-Ratio value\n yEndRatio: r.uint8 // Ending y-Ratio value\n});\n\nlet vTable = new r.Struct({\n yPelHeight: r.uint16, // yPelHeight to which values apply\n yMax: r.int16, // Maximum value (in pels) for this yPelHeight\n yMin: r.int16 // Minimum value (in pels) for this yPelHeight\n});\n\nlet VdmxGroup = new r.Struct({\n recs: r.uint16, // Number of height records in this group\n startsz: r.uint8, // Starting yPelHeight\n endsz: r.uint8, // Ending yPelHeight\n entries: new r.Array(vTable, 'recs') // The VDMX records\n});\n\nexport default new r.Struct({\n version: r.uint16, // Version number (0 or 1)\n numRecs: r.uint16, // Number of VDMX groups present\n numRatios: r.uint16, // Number of aspect ratio groupings\n ratioRanges: new r.Array(Ratio, 'numRatios'), // Ratio ranges\n offsets: new r.Array(r.uint16, 'numRatios'), // Offset to the VDMX group for this ratio range\n groups: new r.Array(VdmxGroup, 'numRecs') // The actual VDMX groupings\n});\n","import * as r from 'restructure';\n\n// Vertical Header Table\nexport default new r.Struct({\n version: r.uint16, // Version number of the Vertical Header Table\n ascent: r.int16, // The vertical typographic ascender for this font\n descent: r.int16, // The vertical typographic descender for this font\n lineGap: r.int16, // The vertical typographic line gap for this font\n advanceHeightMax: r.int16, // The maximum advance height measurement found in the font\n minTopSideBearing: r.int16, // The minimum top side bearing measurement found in the font\n minBottomSideBearing: r.int16, // The minimum bottom side bearing measurement found in the font\n yMaxExtent: r.int16,\n caretSlopeRise: r.int16, // Caret slope (rise/run)\n caretSlopeRun: r.int16,\n caretOffset: r.int16, // Set value equal to 0 for nonslanted fonts\n reserved: new r.Reserved(r.int16, 4),\n metricDataFormat: r.int16, // Set to 0\n numberOfMetrics: r.uint16 // Number of advance heights in the Vertical Metrics table\n});\n","import * as r from 'restructure';\n\nlet VmtxEntry = new r.Struct({\n advance: r.uint16, // The advance height of the glyph\n bearing: r.int16 // The top sidebearing of the glyph\n});\n\n// Vertical Metrics Table\nexport default new r.Struct({\n metrics: new r.LazyArray(VmtxEntry, t => t.parent.vhea.numberOfMetrics),\n bearings: new r.LazyArray(r.int16, t => t.parent.maxp.numGlyphs - t.parent.vhea.numberOfMetrics)\n});\n","import * as r from 'restructure';\n\nlet shortFrac = new r.Fixed(16, 'BE', 14);\n\nlet Correspondence = new r.Struct({\n fromCoord: shortFrac,\n toCoord: shortFrac\n});\n\nlet Segment = new r.Struct({\n pairCount: r.uint16,\n correspondence: new r.Array(Correspondence, 'pairCount')\n});\n\nexport default new r.Struct({\n version: r.fixed32,\n axisCount: r.uint32,\n segment: new r.Array(Segment, 'axisCount')\n});\n","import * as r from 'restructure';\nimport { LookupTable } from './aat';\n\nlet BslnSubtable = new r.VersionedStruct('format', {\n 0: { // Distance-based, no mapping\n deltas: new r.Array(r.int16, 32)\n },\n\n 1: { // Distance-based, with mapping\n deltas: new r.Array(r.int16, 32),\n mappingData: new LookupTable(r.uint16)\n },\n\n 2: { // Control point-based, no mapping\n standardGlyph: r.uint16,\n controlPoints: new r.Array(r.uint16, 32)\n },\n\n 3: { // Control point-based, with mapping\n standardGlyph: r.uint16,\n controlPoints: new r.Array(r.uint16, 32),\n mappingData: new LookupTable(r.uint16)\n }\n});\n\nexport default new r.Struct({\n version: r.fixed32,\n format: r.uint16,\n defaultBaseline: r.uint16,\n subtable: BslnSubtable\n});\n","import * as r from 'restructure';\n\nclass UnboundedArrayAccessor {\n constructor(type, stream, parent) {\n this.type = type;\n this.stream = stream;\n this.parent = parent;\n this.base = this.stream.pos;\n this._items = [];\n }\n\n getItem(index) {\n if (this._items[index] == null) {\n let pos = this.stream.pos;\n this.stream.pos = this.base + this.type.size(null, this.parent) * index;\n this._items[index] = this.type.decode(this.stream, this.parent);\n this.stream.pos = pos;\n }\n\n return this._items[index];\n }\n\n inspect() {\n return `[UnboundedArray ${this.type.constructor.name}]`;\n }\n}\n\nexport class UnboundedArray extends r.Array {\n constructor(type) {\n super(type, 0);\n }\n\n decode(stream, parent) {\n return new UnboundedArrayAccessor(this.type, stream, parent);\n }\n}\n\nexport let LookupTable = function(ValueType = r.uint16) {\n // Helper class that makes internal structures invisible to pointers\n class Shadow {\n constructor(type) {\n this.type = type;\n }\n\n decode(stream, ctx) {\n ctx = ctx.parent.parent;\n return this.type.decode(stream, ctx);\n }\n\n size(val, ctx) {\n ctx = ctx.parent.parent;\n return this.type.size(val, ctx);\n }\n\n encode(stream, val, ctx) {\n ctx = ctx.parent.parent;\n return this.type.encode(stream, val, ctx);\n }\n }\n\n ValueType = new Shadow(ValueType);\n\n let BinarySearchHeader = new r.Struct({\n unitSize: r.uint16,\n nUnits: r.uint16,\n searchRange: r.uint16,\n entrySelector: r.uint16,\n rangeShift: r.uint16\n });\n\n let LookupSegmentSingle = new r.Struct({\n lastGlyph: r.uint16,\n firstGlyph: r.uint16,\n value: ValueType\n });\n\n let LookupSegmentArray = new r.Struct({\n lastGlyph: r.uint16,\n firstGlyph: r.uint16,\n values: new r.Pointer(r.uint16, new r.Array(ValueType, t => t.lastGlyph - t.firstGlyph + 1), {type: 'parent'})\n });\n\n let LookupSingle = new r.Struct({\n glyph: r.uint16,\n value: ValueType\n });\n\n return new r.VersionedStruct(r.uint16, {\n 0: {\n values: new UnboundedArray(ValueType) // length == number of glyphs maybe?\n },\n 2: {\n binarySearchHeader: BinarySearchHeader,\n segments: new r.Array(LookupSegmentSingle, t => t.binarySearchHeader.nUnits)\n },\n 4: {\n binarySearchHeader: BinarySearchHeader,\n segments: new r.Array(LookupSegmentArray, t => t.binarySearchHeader.nUnits)\n },\n 6: {\n binarySearchHeader: BinarySearchHeader,\n segments: new r.Array(LookupSingle, t => t.binarySearchHeader.nUnits)\n },\n 8: {\n firstGlyph: r.uint16,\n count: r.uint16,\n values: new r.Array(ValueType, 'count')\n }\n });\n};\n\nexport function StateTable(entryData = {}, lookupType = r.uint16) {\n let entry = Object.assign({\n newState: r.uint16,\n flags: r.uint16\n }, entryData);\n\n let Entry = new r.Struct(entry);\n let StateArray = new UnboundedArray(new r.Array(r.uint16, t => t.nClasses));\n\n let StateHeader = new r.Struct({\n nClasses: r.uint32,\n classTable: new r.Pointer(r.uint32, new LookupTable(lookupType)),\n stateArray: new r.Pointer(r.uint32, StateArray),\n entryTable: new r.Pointer(r.uint32, new UnboundedArray(Entry))\n });\n\n return StateHeader;\n}\n\n// This is the old version of the StateTable structure\nexport function StateTable1(entryData = {}, lookupType = r.uint16) {\n let ClassLookupTable = new r.Struct({\n version() { return 8; }, // simulate LookupTable\n firstGlyph: r.uint16,\n values: new r.Array(r.uint8, r.uint16)\n });\n\n let entry = Object.assign({\n newStateOffset: r.uint16,\n // convert offset to stateArray index\n newState: t => (t.newStateOffset - (t.parent.stateArray.base - t.parent._startOffset)) / t.parent.nClasses,\n flags: r.uint16\n }, entryData);\n\n let Entry = new r.Struct(entry);\n let StateArray = new UnboundedArray(new r.Array(r.uint8, t => t.nClasses));\n\n let StateHeader1 = new r.Struct({\n nClasses: r.uint16,\n classTable: new r.Pointer(r.uint16, ClassLookupTable),\n stateArray: new r.Pointer(r.uint16, StateArray),\n entryTable: new r.Pointer(r.uint16, new UnboundedArray(Entry))\n });\n\n return StateHeader1;\n}\n","import * as r from 'restructure';\n\nlet Setting = new r.Struct({\n setting: r.uint16,\n nameIndex: r.int16,\n name: t => t.parent.parent.parent.name.records.fontFeatures[t.nameIndex]\n});\n\nlet FeatureName = new r.Struct({\n feature: r.uint16,\n nSettings: r.uint16,\n settingTable: new r.Pointer(r.uint32, new r.Array(Setting, 'nSettings'), { type: 'parent' }),\n featureFlags: new r.Bitfield(r.uint8, [\n null, null, null, null, null, null,\n 'hasDefault', 'exclusive'\n ]),\n defaultSetting: r.uint8,\n nameIndex: r.int16,\n name: t => t.parent.parent.name.records.fontFeatures[t.nameIndex]\n});\n\nexport default new r.Struct({\n version: r.fixed32,\n featureNameCount: r.uint16,\n reserved1: new r.Reserved(r.uint16),\n reserved2: new r.Reserved(r.uint32),\n featureNames: new r.Array(FeatureName, 'featureNameCount')\n});\n","import * as r from 'restructure';\n\nlet Axis = new r.Struct({\n axisTag: new r.String(4),\n minValue: r.fixed32,\n defaultValue: r.fixed32,\n maxValue: r.fixed32,\n flags: r.uint16,\n nameID: r.uint16,\n name: t => t.parent.parent.name.records.fontFeatures[t.nameID]\n});\n\nlet Instance = new r.Struct({\n nameID: r.uint16,\n name: t => t.parent.parent.name.records.fontFeatures[t.nameID],\n flags: r.uint16,\n coord: new r.Array(r.fixed32, t => t.parent.axisCount),\n postscriptNameID: new r.Optional(r.uint16, t => t.parent.instanceSize - t._currentOffset > 0)\n});\n\nexport default new r.Struct({\n version: r.fixed32,\n offsetToData: r.uint16,\n countSizePairs: r.uint16,\n axisCount: r.uint16,\n axisSize: r.uint16,\n instanceCount: r.uint16,\n instanceSize: r.uint16,\n axis: new r.Array(Axis, 'axisCount'),\n instance: new r.Array(Instance, 'instanceCount')\n});\n","import * as r from 'restructure';\n\nlet shortFrac = new r.Fixed(16, 'BE', 14);\nclass Offset {\n static decode(stream, parent) {\n // In short format, offsets are multiplied by 2.\n // This doesn't seem to be documented by Apple, but it\n // is implemented this way in Freetype.\n return parent.flags\n ? stream.readUInt32BE()\n : stream.readUInt16BE() * 2;\n }\n}\n\nlet gvar = new r.Struct({\n version: r.uint16,\n reserved: new r.Reserved(r.uint16),\n axisCount: r.uint16,\n globalCoordCount: r.uint16,\n globalCoords: new r.Pointer(r.uint32, new r.Array(new r.Array(shortFrac, 'axisCount'), 'globalCoordCount')),\n glyphCount: r.uint16,\n flags: r.uint16,\n offsetToData: r.uint32,\n offsets: new r.Array(new r.Pointer(Offset, 'void', { relativeTo: ctx => ctx.offsetToData, allowNull: false }), t => t.glyphCount + 1)\n});\n\nexport default gvar;\n","import * as r from 'restructure';\nimport { LookupTable, StateTable1 } from './aat';\n\nlet ClassTable = new r.Struct({\n length: r.uint16,\n coverage: r.uint16,\n subFeatureFlags: r.uint32,\n stateTable: new StateTable1\n});\n\nlet WidthDeltaRecord = new r.Struct({\n justClass: r.uint32,\n beforeGrowLimit: r.fixed32,\n beforeShrinkLimit: r.fixed32,\n afterGrowLimit: r.fixed32,\n afterShrinkLimit: r.fixed32,\n growFlags: r.uint16,\n shrinkFlags: r.uint16\n});\n\nlet WidthDeltaCluster = new r.Array(WidthDeltaRecord, r.uint32);\n\nlet ActionData = new r.VersionedStruct('actionType', {\n 0: { // Decomposition action\n lowerLimit: r.fixed32,\n upperLimit: r.fixed32,\n order: r.uint16,\n glyphs: new r.Array(r.uint16, r.uint16)\n },\n\n 1: { // Unconditional add glyph action\n addGlyph: r.uint16\n },\n\n 2: { // Conditional add glyph action\n substThreshold: r.fixed32,\n addGlyph: r.uint16,\n substGlyph: r.uint16\n },\n\n 3: {}, // Stretch glyph action (no data, not supported by CoreText)\n\n 4: { // Ductile glyph action (not supported by CoreText)\n variationAxis: r.uint32,\n minimumLimit: r.fixed32,\n noStretchValue: r.fixed32,\n maximumLimit: r.fixed32\n },\n\n 5: { // Repeated add glyph action\n flags: r.uint16,\n glyph: r.uint16\n }\n});\n\nlet Action = new r.Struct({\n actionClass: r.uint16,\n actionType: r.uint16,\n actionLength: r.uint32,\n actionData: ActionData,\n padding: new r.Reserved(r.uint8, t => t.actionLength - t._currentOffset)\n});\n\nlet PostcompensationAction = new r.Array(Action, r.uint32);\nlet PostCompensationTable = new r.Struct({\n lookupTable: new LookupTable(new r.Pointer(r.uint16, PostcompensationAction))\n});\n\nlet JustificationTable = new r.Struct({\n classTable: new r.Pointer(r.uint16, ClassTable, { type: 'parent' }),\n wdcOffset: r.uint16,\n postCompensationTable: new r.Pointer(r.uint16, PostCompensationTable, { type: 'parent' }),\n widthDeltaClusters: new LookupTable(new r.Pointer(r.uint16, WidthDeltaCluster, { type: 'parent', relativeTo: ctx => ctx.wdcOffset }))\n});\n\nexport default new r.Struct({\n version: r.uint32,\n format: r.uint16,\n horizontal: new r.Pointer(r.uint16, JustificationTable),\n vertical: new r.Pointer(r.uint16, JustificationTable)\n});\n","import * as r from 'restructure';\nimport { UnboundedArray, LookupTable, StateTable } from './aat';\n\nlet LigatureData = {\n action: r.uint16\n};\n\nlet ContextualData = {\n markIndex: r.uint16,\n currentIndex: r.uint16\n};\n\nlet InsertionData = {\n currentInsertIndex: r.uint16,\n markedInsertIndex: r.uint16\n};\n\nlet SubstitutionTable = new r.Struct({\n items: new UnboundedArray(new r.Pointer(r.uint32, new LookupTable))\n});\n\nlet SubtableData = new r.VersionedStruct('type', {\n 0: { // Indic Rearrangement Subtable\n stateTable: new StateTable\n },\n\n 1: { // Contextual Glyph Substitution Subtable\n stateTable: new StateTable(ContextualData),\n substitutionTable: new r.Pointer(r.uint32, SubstitutionTable)\n },\n\n 2: { // Ligature subtable\n stateTable: new StateTable(LigatureData),\n ligatureActions: new r.Pointer(r.uint32, new UnboundedArray(r.uint32)),\n components: new r.Pointer(r.uint32, new UnboundedArray(r.uint16)),\n ligatureList: new r.Pointer(r.uint32, new UnboundedArray(r.uint16))\n },\n\n 4: { // Non-contextual Glyph Substitution Subtable\n lookupTable: new LookupTable\n },\n\n 5: { // Glyph Insertion Subtable\n stateTable: new StateTable(InsertionData),\n insertionActions: new r.Pointer(r.uint32, new UnboundedArray(r.uint16))\n }\n});\n\nlet Subtable = new r.Struct({\n length: r.uint32,\n coverage: r.uint24,\n type: r.uint8,\n subFeatureFlags: r.uint32,\n table: SubtableData,\n padding: new r.Reserved(r.uint8, t => t.length - t._currentOffset)\n});\n\nlet FeatureEntry = new r.Struct({\n featureType: r.uint16,\n featureSetting: r.uint16,\n enableFlags: r.uint32,\n disableFlags: r.uint32\n});\n\nlet MorxChain = new r.Struct({\n defaultFlags: r.uint32,\n chainLength: r.uint32,\n nFeatureEntries: r.uint32,\n nSubtables: r.uint32,\n features: new r.Array(FeatureEntry, 'nFeatureEntries'),\n subtables: new r.Array(Subtable, 'nSubtables')\n});\n\nexport default new r.Struct({\n version: r.uint16,\n unused: new r.Reserved(r.uint16),\n nChains: r.uint32,\n chains: new r.Array(MorxChain, 'nChains')\n});\n","import * as r from 'restructure';\nimport { LookupTable } from './aat';\n\nlet OpticalBounds = new r.Struct({\n left: r.int16,\n top: r.int16,\n right: r.int16,\n bottom: r.int16\n});\n\nexport default new r.Struct({\n version: r.fixed32,\n format: r.uint16,\n lookupTable: new LookupTable(OpticalBounds)\n});\n","import { binarySearch } from './utils';\nimport { encodingExists, getEncoding, getEncodingMapping } from './encodings';\nimport { cache } from './decorators';\nimport { range } from './utils';\n\nexport default class CmapProcessor {\n constructor(cmapTable) {\n // Attempt to find a Unicode cmap first\n this.encoding = null;\n this.cmap = this.findSubtable(cmapTable, [\n // 32-bit subtables\n [3, 10],\n [0, 6],\n [0, 4],\n\n // 16-bit subtables\n [3, 1],\n [0, 3],\n [0, 2],\n [0, 1],\n [0, 0]\n ]);\n\n // If not unicode cmap was found, take the first table with a supported encoding.\n if (!this.cmap) {\n for (let cmap of cmapTable.tables) {\n let encoding = getEncoding(cmap.platformID, cmap.encodingID, cmap.table.language - 1);\n let mapping = getEncodingMapping(encoding);\n if (mapping) {\n this.cmap = cmap.table;\n this.encoding = mapping;\n }\n }\n }\n\n if (!this.cmap) {\n throw new Error(\"Could not find a supported cmap table\");\n }\n\n this.uvs = this.findSubtable(cmapTable, [[0, 5]]);\n if (this.uvs && this.uvs.version !== 14) {\n this.uvs = null;\n }\n }\n\n findSubtable(cmapTable, pairs) {\n for (let [platformID, encodingID] of pairs) {\n for (let cmap of cmapTable.tables) {\n if (cmap.platformID === platformID && cmap.encodingID === encodingID) {\n return cmap.table;\n }\n }\n }\n\n return null;\n }\n\n lookup(codepoint, variationSelector) {\n // If there is no Unicode cmap in this font, we need to re-encode\n // the codepoint in the encoding that the cmap supports.\n if (this.encoding) {\n codepoint = this.encoding.get(codepoint) || codepoint;\n\n // Otherwise, try to get a Unicode variation selector for this codepoint if one is provided.\n } else if (variationSelector) {\n let gid = this.getVariationSelector(codepoint, variationSelector);\n if (gid) {\n return gid;\n }\n }\n\n let cmap = this.cmap;\n switch (cmap.version) {\n case 0:\n return cmap.codeMap.get(codepoint) || 0;\n\n case 4: {\n let min = 0;\n let max = cmap.segCount - 1;\n while (min <= max) {\n let mid = (min + max) >> 1;\n\n if (codepoint < cmap.startCode.get(mid)) {\n max = mid - 1;\n } else if (codepoint > cmap.endCode.get(mid)) {\n min = mid + 1;\n } else {\n let rangeOffset = cmap.idRangeOffset.get(mid);\n let gid;\n\n if (rangeOffset === 0) {\n gid = codepoint + cmap.idDelta.get(mid);\n } else {\n let index = rangeOffset / 2 + (codepoint - cmap.startCode.get(mid)) - (cmap.segCount - mid);\n gid = cmap.glyphIndexArray.get(index) || 0;\n if (gid !== 0) {\n gid += cmap.idDelta.get(mid);\n }\n }\n\n return gid & 0xffff;\n }\n }\n\n return 0;\n }\n\n case 8:\n throw new Error('TODO: cmap format 8');\n\n case 6:\n case 10:\n return cmap.glyphIndices.get(codepoint - cmap.firstCode) || 0;\n\n case 12:\n case 13: {\n let min = 0;\n let max = cmap.nGroups - 1;\n while (min <= max) {\n let mid = (min + max) >> 1;\n let group = cmap.groups.get(mid);\n\n if (codepoint < group.startCharCode) {\n max = mid - 1;\n } else if (codepoint > group.endCharCode) {\n min = mid + 1;\n } else {\n if (cmap.version === 12) {\n return group.glyphID + (codepoint - group.startCharCode);\n } else {\n return group.glyphID;\n }\n }\n }\n\n return 0;\n }\n\n case 14:\n throw new Error('TODO: cmap format 14');\n\n default:\n throw new Error(`Unknown cmap format ${cmap.version}`);\n }\n }\n\n getVariationSelector(codepoint, variationSelector) {\n if (!this.uvs) {\n return 0;\n }\n\n let selectors = this.uvs.varSelectors.toArray();\n let i = binarySearch(selectors, x => variationSelector - x.varSelector);\n let sel = selectors[i];\n\n if (i !== -1 && sel.defaultUVS) {\n i = binarySearch(sel.defaultUVS, x =>\n codepoint < x.startUnicodeValue ? -1 : codepoint > x.startUnicodeValue + x.additionalCount ? +1 : 0\n );\n }\n\n if (i !== -1 && sel.nonDefaultUVS) {\n i = binarySearch(sel.nonDefaultUVS, x => codepoint - x.unicodeValue);\n if (i !== -1) {\n return sel.nonDefaultUVS[i].glyphID;\n }\n }\n\n return 0;\n }\n\n @cache\n getCharacterSet() {\n let cmap = this.cmap;\n switch (cmap.version) {\n case 0:\n return range(0, cmap.codeMap.length);\n\n case 4: {\n let res = [];\n let endCodes = cmap.endCode.toArray();\n for (let i = 0; i < endCodes.length; i++) {\n let tail = endCodes[i] + 1;\n let start = cmap.startCode.get(i);\n res.push(...range(start, tail));\n }\n\n return res;\n }\n\n case 8:\n throw new Error('TODO: cmap format 8');\n\n case 6:\n case 10:\n return range(cmap.firstCode, cmap.firstCode + cmap.glyphIndices.length);\n\n case 12:\n case 13: {\n let res = [];\n for (let group of cmap.groups.toArray()) {\n res.push(...range(group.startCharCode, group.endCharCode + 1));\n }\n\n return res;\n }\n\n case 14:\n throw new Error('TODO: cmap format 14');\n\n default:\n throw new Error(`Unknown cmap format ${cmap.version}`);\n }\n }\n\n @cache\n codePointsForGlyph(gid) {\n let cmap = this.cmap;\n switch (cmap.version) {\n case 0: {\n let res = [];\n for (let i = 0; i < 256; i++) {\n if (cmap.codeMap.get(i) === gid) {\n res.push(i);\n }\n }\n\n return res;\n }\n\n case 4: {\n let res = [];\n for (let i = 0; i < cmap.segCount; i++) {\n let end = cmap.endCode.get(i);\n let start = cmap.startCode.get(i);\n let rangeOffset = cmap.idRangeOffset.get(i);\n let delta = cmap.idDelta.get(i);\n\n for (var c = start; c <= end; c++) {\n let g = 0;\n if (rangeOffset === 0) {\n g = c + delta;\n } else {\n let index = rangeOffset / 2 + (c - start) - (cmap.segCount - i);\n g = cmap.glyphIndexArray.get(index) || 0;\n if (g !== 0) {\n g += delta;\n }\n }\n\n if (g === gid) {\n res.push(c);\n }\n }\n }\n\n return res;\n }\n\n case 12: {\n let res = [];\n for (let group of cmap.groups.toArray()) {\n if (gid >= group.glyphID && gid <= group.glyphID + (group.endCharCode - group.startCharCode)) {\n res.push(group.startCharCode + (gid - group.glyphID));\n }\n }\n\n return res;\n }\n\n case 13: {\n let res = [];\n for (let group of cmap.groups.toArray()) {\n if (gid === group.glyphID) {\n res.push(...range(group.startCharCode, group.endCharCode + 1));\n }\n }\n\n return res;\n }\n\n default:\n throw new Error(`Unknown cmap format ${cmap.version}`);\n }\n }\n}\n","export function binarySearch(arr, cmp) {\n let min = 0;\n let max = arr.length - 1;\n while (min <= max) {\n let mid = (min + max) >> 1;\n let res = cmp(arr[mid]);\n\n if (res < 0) {\n max = mid - 1;\n } else if (res > 0) {\n min = mid + 1;\n } else {\n return mid;\n }\n }\n\n return -1;\n}\n\nexport function range(index, end) {\n let range = [];\n while (index < end) {\n range.push(index++);\n }\n return range;\n}\n\nexport const asciiDecoder = new TextDecoder('ascii');\n\n// Based on https://github.com/niklasvh/base64-arraybuffer. MIT license.\nconst CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nconst LOOKUP = new Uint8Array(256);\nfor (let i = 0; i < CHARS.length; i++) {\n LOOKUP[CHARS.charCodeAt(i)] = i;\n}\n\nexport function decodeBase64(base64) {\n let bufferLength = base64.length * 0.75;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n let bytes = new Uint8Array(bufferLength);\n let p = 0;\n\n for (let i = 0, len = base64.length; i < len; i += 4) {\n let encoded1 = LOOKUP[base64.charCodeAt(i)];\n let encoded2 = LOOKUP[base64.charCodeAt(i + 1)];\n let encoded3 = LOOKUP[base64.charCodeAt(i + 2)];\n let encoded4 = LOOKUP[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return bytes;\n}\n","import KernProcessor from './KernProcessor';\nimport UnicodeLayoutEngine from './UnicodeLayoutEngine';\nimport GlyphRun from './GlyphRun';\nimport GlyphPosition from './GlyphPosition';\nimport * as Script from './Script';\nimport AATLayoutEngine from '../aat/AATLayoutEngine';\nimport OTLayoutEngine from '../opentype/OTLayoutEngine';\n\nexport default class LayoutEngine {\n constructor(font) {\n this.font = font;\n this.unicodeLayoutEngine = null;\n this.kernProcessor = null;\n\n // Choose an advanced layout engine. We try the AAT morx table first since more\n // scripts are currently supported because the shaping logic is built into the font.\n if (this.font.morx) {\n this.engine = new AATLayoutEngine(this.font);\n\n } else if (this.font.GSUB || this.font.GPOS) {\n this.engine = new OTLayoutEngine(this.font);\n }\n }\n\n layout(string, features, script, language, direction) {\n // Make the features parameter optional\n if (typeof features === 'string') {\n direction = language;\n language = script;\n script = features;\n features = [];\n }\n\n // Map string to glyphs if needed\n if (typeof string === 'string') {\n // Attempt to detect the script from the string if not provided.\n if (script == null) {\n script = Script.forString(string);\n }\n\n var glyphs = this.font.glyphsForString(string);\n } else {\n // Attempt to detect the script from the glyph code points if not provided.\n if (script == null) {\n let codePoints = [];\n for (let glyph of string) {\n codePoints.push(...glyph.codePoints);\n }\n\n script = Script.forCodePoints(codePoints);\n }\n\n var glyphs = string;\n }\n\n let glyphRun = new GlyphRun(glyphs, features, script, language, direction);\n\n // Return early if there are no glyphs\n if (glyphs.length === 0) {\n glyphRun.positions = [];\n return glyphRun;\n }\n\n // Setup the advanced layout engine\n if (this.engine && this.engine.setup) {\n this.engine.setup(glyphRun);\n }\n\n // Substitute and position the glyphs\n this.substitute(glyphRun);\n this.position(glyphRun);\n\n this.hideDefaultIgnorables(glyphRun.glyphs, glyphRun.positions);\n\n // Let the layout engine clean up any state it might have\n if (this.engine && this.engine.cleanup) {\n this.engine.cleanup();\n }\n\n return glyphRun;\n }\n\n substitute(glyphRun) {\n // Call the advanced layout engine to make substitutions\n if (this.engine && this.engine.substitute) {\n this.engine.substitute(glyphRun);\n }\n }\n\n position(glyphRun) {\n // Get initial glyph positions\n glyphRun.positions = glyphRun.glyphs.map(glyph => new GlyphPosition(glyph.advanceWidth));\n let positioned = null;\n\n // Call the advanced layout engine. Returns the features applied.\n if (this.engine && this.engine.position) {\n positioned = this.engine.position(glyphRun);\n }\n\n // if there is no GPOS table, use unicode properties to position marks.\n if (!positioned && (!this.engine || this.engine.fallbackPosition)) {\n if (!this.unicodeLayoutEngine) {\n this.unicodeLayoutEngine = new UnicodeLayoutEngine(this.font);\n }\n\n this.unicodeLayoutEngine.positionGlyphs(glyphRun.glyphs, glyphRun.positions);\n }\n\n // if kerning is not supported by GPOS, do kerning with the TrueType/AAT kern table\n if ((!positioned || !positioned.kern) && glyphRun.features.kern !== false && this.font.kern) {\n if (!this.kernProcessor) {\n this.kernProcessor = new KernProcessor(this.font);\n }\n\n this.kernProcessor.process(glyphRun.glyphs, glyphRun.positions);\n glyphRun.features.kern = true;\n }\n }\n\n hideDefaultIgnorables(glyphs, positions) {\n let space = this.font.glyphForCodePoint(0x20);\n for (let i = 0; i < glyphs.length; i++) {\n if (this.isDefaultIgnorable(glyphs[i].codePoints[0])) {\n glyphs[i] = space;\n positions[i].xAdvance = 0;\n positions[i].yAdvance = 0;\n }\n }\n }\n\n isDefaultIgnorable(ch) {\n // From DerivedCoreProperties.txt in the Unicode database,\n // minus U+115F, U+1160, U+3164 and U+FFA0, which is what\n // Harfbuzz and Uniscribe do.\n let plane = ch >> 16;\n if (plane === 0) {\n // BMP\n switch (ch >> 8) {\n \tcase 0x00: return ch === 0x00AD;\n \tcase 0x03: return ch === 0x034F;\n \tcase 0x06: return ch === 0x061C;\n \tcase 0x17: return 0x17B4 <= ch && ch <= 0x17B5;\n \tcase 0x18: return 0x180B <= ch && ch <= 0x180E;\n \tcase 0x20: return (0x200B <= ch && ch <= 0x200F) || (0x202A <= ch && ch <= 0x202E) || (0x2060 <= ch && ch <= 0x206F);\n \tcase 0xFE: return (0xFE00 <= ch && ch <= 0xFE0F) || ch === 0xFEFF;\n \tcase 0xFF: return 0xFFF0 <= ch && ch <= 0xFFF8;\n \tdefault: return false;\n }\n } else {\n // Other planes\n switch (plane) {\n \tcase 0x01: return (0x1BCA0 <= ch && ch <= 0x1BCA3) || (0x1D173 <= ch && ch <= 0x1D17A);\n \tcase 0x0E: return 0xE0000 <= ch && ch <= 0xE0FFF;\n \tdefault: return false;\n }\n }\n }\n\n getAvailableFeatures(script, language) {\n let features = [];\n\n if (this.engine) {\n features.push(...this.engine.getAvailableFeatures(script, language));\n }\n\n if (this.font.kern && features.indexOf('kern') === -1) {\n features.push('kern');\n }\n\n return features;\n }\n\n stringsForGlyph(gid) {\n let result = new Set;\n\n let codePoints = this.font._cmapProcessor.codePointsForGlyph(gid);\n for (let codePoint of codePoints) {\n result.add(String.fromCodePoint(codePoint));\n }\n\n if (this.engine && this.engine.stringsForGlyph) {\n for (let string of this.engine.stringsForGlyph(gid)) {\n result.add(string);\n }\n }\n\n return Array.from(result);\n }\n}\n","import {binarySearch} from '../utils';\n\nexport default class KernProcessor {\n constructor(font) {\n this.kern = font.kern;\n }\n\n process(glyphs, positions) {\n for (let glyphIndex = 0; glyphIndex < glyphs.length - 1; glyphIndex++) {\n let left = glyphs[glyphIndex].id;\n let right = glyphs[glyphIndex + 1].id;\n positions[glyphIndex].xAdvance += this.getKerning(left, right);\n }\n }\n\n getKerning(left, right) {\n let res = 0;\n\n for (let table of this.kern.tables) {\n if (table.coverage.crossStream) {\n continue;\n }\n\n switch (table.version) {\n case 0:\n if (!table.coverage.horizontal) {\n continue;\n }\n\n break;\n case 1:\n if (table.coverage.vertical || table.coverage.variation) {\n continue;\n }\n\n break;\n default:\n throw new Error(`Unsupported kerning table version ${table.version}`);\n }\n\n let val = 0;\n let s = table.subtable;\n switch (table.format) {\n case 0:\n let pairIdx = binarySearch(s.pairs, function (pair) {\n return (left - pair.left) || (right - pair.right);\n });\n\n if (pairIdx >= 0) {\n val = s.pairs[pairIdx].value;\n }\n\n break;\n\n case 2:\n let leftOffset = 0, rightOffset = 0;\n if (left >= s.leftTable.firstGlyph && left < s.leftTable.firstGlyph + s.leftTable.nGlyphs) {\n leftOffset = s.leftTable.offsets[left - s.leftTable.firstGlyph];\n } else {\n leftOffset = s.array.off;\n }\n\n if (right >= s.rightTable.firstGlyph && right < s.rightTable.firstGlyph + s.rightTable.nGlyphs) {\n rightOffset = s.rightTable.offsets[right - s.rightTable.firstGlyph];\n }\n\n let index = (leftOffset + rightOffset - s.array.off) / 2;\n val = s.array.values.get(index);\n break;\n\n case 3:\n if (left >= s.glyphCount || right >= s.glyphCount) {\n return 0;\n }\n\n val = s.kernValue[s.kernIndex[s.leftClass[left] * s.rightClassCount + s.rightClass[right]]];\n break;\n\n default:\n throw new Error(`Unsupported kerning sub-table format ${table.format}`);\n }\n\n // Microsoft supports the override flag, which resets the result\n // Otherwise, the sum of the results from all subtables is returned\n if (table.coverage.override) {\n res = val;\n } else {\n res += val;\n }\n }\n\n return res;\n }\n}\n","import {getCombiningClass} from 'unicode-properties';\n\n/**\n * This class is used when GPOS does not define 'mark' or 'mkmk' features\n * for positioning marks relative to base glyphs. It uses the unicode\n * combining class property to position marks.\n *\n * Based on code from Harfbuzz, thanks!\n * https://github.com/behdad/harfbuzz/blob/master/src/hb-ot-shape-fallback.cc\n */\nexport default class UnicodeLayoutEngine {\n constructor(font) {\n this.font = font;\n }\n\n positionGlyphs(glyphs, positions) {\n // find each base + mark cluster, and position the marks relative to the base\n let clusterStart = 0;\n let clusterEnd = 0;\n for (let index = 0; index < glyphs.length; index++) {\n let glyph = glyphs[index];\n if (glyph.isMark) { // TODO: handle ligatures\n clusterEnd = index;\n } else {\n if (clusterStart !== clusterEnd) {\n this.positionCluster(glyphs, positions, clusterStart, clusterEnd);\n }\n\n clusterStart = clusterEnd = index;\n }\n }\n\n if (clusterStart !== clusterEnd) {\n this.positionCluster(glyphs, positions, clusterStart, clusterEnd);\n }\n\n return positions;\n }\n\n positionCluster(glyphs, positions, clusterStart, clusterEnd) {\n let base = glyphs[clusterStart];\n let baseBox = base.cbox.copy();\n\n // adjust bounding box for ligature glyphs\n if (base.codePoints.length > 1) {\n // LTR. TODO: RTL support.\n baseBox.minX += ((base.codePoints.length - 1) * baseBox.width) / base.codePoints.length;\n }\n\n let xOffset = -positions[clusterStart].xAdvance;\n let yOffset = 0;\n let yGap = this.font.unitsPerEm / 16;\n\n // position each of the mark glyphs relative to the base glyph\n for (let index = clusterStart + 1; index <= clusterEnd; index++) {\n let mark = glyphs[index];\n let markBox = mark.cbox;\n let position = positions[index];\n\n let combiningClass = this.getCombiningClass(mark.codePoints[0]);\n\n if (combiningClass !== 'Not_Reordered') {\n position.xOffset = position.yOffset = 0;\n\n // x positioning\n switch (combiningClass) {\n case 'Double_Above':\n case 'Double_Below':\n // LTR. TODO: RTL support.\n position.xOffset += baseBox.minX - markBox.width / 2 - markBox.minX;\n break;\n\n case 'Attached_Below_Left':\n case 'Below_Left':\n case 'Above_Left':\n // left align\n position.xOffset += baseBox.minX - markBox.minX;\n break;\n\n case 'Attached_Above_Right':\n case 'Below_Right':\n case 'Above_Right':\n // right align\n position.xOffset += baseBox.maxX - markBox.width - markBox.minX;\n break;\n\n default: // Attached_Below, Attached_Above, Below, Above, other\n // center align\n position.xOffset += baseBox.minX + (baseBox.width - markBox.width) / 2 - markBox.minX;\n }\n\n // y positioning\n switch (combiningClass) {\n case 'Double_Below':\n case 'Below_Left':\n case 'Below':\n case 'Below_Right':\n case 'Attached_Below_Left':\n case 'Attached_Below':\n // add a small gap between the glyphs if they are not attached\n if (combiningClass === 'Attached_Below_Left' || combiningClass === 'Attached_Below') {\n baseBox.minY += yGap;\n }\n\n position.yOffset = -baseBox.minY - markBox.maxY;\n baseBox.minY += markBox.height;\n break;\n\n case 'Double_Above':\n case 'Above_Left':\n case 'Above':\n case 'Above_Right':\n case 'Attached_Above':\n case 'Attached_Above_Right':\n // add a small gap between the glyphs if they are not attached\n if (combiningClass === 'Attached_Above' || combiningClass === 'Attached_Above_Right') {\n baseBox.maxY += yGap;\n }\n\n position.yOffset = baseBox.maxY - markBox.minY;\n baseBox.maxY += markBox.height;\n break;\n }\n\n position.xAdvance = position.yAdvance = 0;\n position.xOffset += xOffset;\n position.yOffset += yOffset;\n\n } else {\n xOffset -= position.xAdvance;\n yOffset -= position.yAdvance;\n }\n }\n\n return;\n }\n\n getCombiningClass(codePoint) {\n let combiningClass = getCombiningClass(codePoint);\n\n // Thai / Lao need some per-character work\n if ((codePoint & ~0xff) === 0x0e00) {\n if (combiningClass === 'Not_Reordered') {\n switch (codePoint) {\n case 0x0e31:\n case 0x0e34:\n case 0x0e35:\n case 0x0e36:\n case 0x0e37:\n case 0x0e47:\n case 0x0e4c:\n case 0x0e3d:\n case 0x0e4e:\n return 'Above_Right';\n\n case 0x0eb1:\n case 0x0eb4:\n case 0x0eb5:\n case 0x0eb6:\n case 0x0eb7:\n case 0x0ebb:\n case 0x0ecc:\n case 0x0ecd:\n return 'Above';\n\n case 0x0ebc:\n return 'Below';\n }\n } else if (codePoint === 0x0e3a) { // virama\n return 'Below_Right';\n }\n }\n\n switch (combiningClass) {\n // Hebrew\n\n case 'CCC10': // sheva\n case 'CCC11': // hataf segol\n case 'CCC12': // hataf patah\n case 'CCC13': // hataf qamats\n case 'CCC14': // hiriq\n case 'CCC15': // tsere\n case 'CCC16': // segol\n case 'CCC17': // patah\n case 'CCC18': // qamats\n case 'CCC20': // qubuts\n case 'CCC22': // meteg\n return 'Below';\n\n case 'CCC23': // rafe\n return 'Attached_Above';\n\n case 'CCC24': // shin dot\n return 'Above_Right';\n\n case 'CCC25': // sin dot\n case 'CCC19': // holam\n return 'Above_Left';\n\n case 'CCC26': // point varika\n return 'Above';\n\n case 'CCC21': // dagesh\n break;\n\n // Arabic and Syriac\n\n case 'CCC27': // fathatan\n case 'CCC28': // dammatan\n case 'CCC30': // fatha\n case 'CCC31': // damma\n case 'CCC33': // shadda\n case 'CCC34': // sukun\n case 'CCC35': // superscript alef\n case 'CCC36': // superscript alaph\n return 'Above';\n\n case 'CCC29': // kasratan\n case 'CCC32': // kasra\n return 'Below';\n\n // Thai\n\n case 'CCC103': // sara u / sara uu\n return 'Below_Right';\n\n case 'CCC107': // mai\n return 'Above_Right';\n\n // Lao\n\n case 'CCC118': // sign u / sign uu\n return 'Below';\n\n case 'CCC122': // mai\n return 'Above';\n\n // Tibetan\n\n case 'CCC129': // sign aa\n case 'CCC132': // sign u\n return 'Below';\n\n case 'CCC130': // sign i\n return 'Above';\n }\n\n return combiningClass;\n }\n}\n","import BBox from '../glyph/BBox';\nimport * as Script from '../layout/Script';\n\n/**\n * Represents a run of Glyph and GlyphPosition objects.\n * Returned by the font layout method.\n */\nexport default class GlyphRun {\n constructor(glyphs, features, script, language, direction) {\n /**\n * An array of Glyph objects in the run\n * @type {Glyph[]}\n */\n this.glyphs = glyphs;\n\n /**\n * An array of GlyphPosition objects for each glyph in the run\n * @type {GlyphPosition[]}\n */\n this.positions = null;\n\n /**\n * The script that was requested for shaping. This was either passed in or detected automatically.\n * @type {string}\n */\n this.script = script;\n\n /**\n * The language requested for shaping, as passed in. If `null`, the default language for the\n * script was used.\n * @type {string}\n */\n this.language = language || null;\n\n /**\n * The direction requested for shaping, as passed in (either ltr or rtl).\n * If `null`, the default direction of the script is used.\n * @type {string}\n */\n this.direction = direction || Script.direction(script);\n\n /**\n * The features requested during shaping. This is a combination of user\n * specified features and features chosen by the shaper.\n * @type {object}\n */\n this.features = {};\n\n // Convert features to an object\n if (Array.isArray(features)) {\n for (let tag of features) {\n this.features[tag] = true;\n }\n } else if (typeof features === 'object') {\n this.features = features;\n }\n }\n\n /**\n * The total advance width of the run.\n * @type {number}\n */\n get advanceWidth() {\n let width = 0;\n for (let position of this.positions) {\n width += position.xAdvance;\n }\n\n return width;\n }\n\n /**\n * The total advance height of the run.\n * @type {number}\n */\n get advanceHeight() {\n let height = 0;\n for (let position of this.positions) {\n height += position.yAdvance;\n }\n\n return height;\n }\n\n /**\n * The bounding box containing all glyphs in the run.\n * @type {BBox}\n */\n get bbox() {\n let bbox = new BBox;\n\n let x = 0;\n let y = 0;\n for (let index = 0; index < this.glyphs.length; index++) {\n let glyph = this.glyphs[index];\n let p = this.positions[index];\n let b = glyph.bbox;\n\n bbox.addPoint(b.minX + x + p.xOffset, b.minY + y + p.yOffset);\n bbox.addPoint(b.maxX + x + p.xOffset, b.maxY + y + p.yOffset);\n\n x += p.xAdvance;\n y += p.yAdvance;\n }\n\n return bbox;\n }\n}\n","/**\n * Represents a glyph bounding box\n */\nexport default class BBox {\n constructor(minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity) {\n /**\n * The minimum X position in the bounding box\n * @type {number}\n */\n this.minX = minX;\n\n /**\n * The minimum Y position in the bounding box\n * @type {number}\n */\n this.minY = minY;\n\n /**\n * The maxmimum X position in the bounding box\n * @type {number}\n */\n this.maxX = maxX;\n\n /**\n * The maxmimum Y position in the bounding box\n * @type {number}\n */\n this.maxY = maxY;\n }\n\n /**\n * The width of the bounding box\n * @type {number}\n */\n get width() {\n return this.maxX - this.minX;\n }\n\n /**\n * The height of the bounding box\n * @type {number}\n */\n get height() {\n return this.maxY - this.minY;\n }\n\n addPoint(x, y) {\n if (Math.abs(x) !== Infinity) {\n if (x < this.minX) {\n this.minX = x;\n }\n\n if (x > this.maxX) {\n this.maxX = x;\n }\n }\n\n if (Math.abs(y) !== Infinity) {\n if (y < this.minY) {\n this.minY = y;\n }\n\n if (y > this.maxY) {\n this.maxY = y;\n }\n }\n }\n\n copy() {\n return new BBox(this.minX, this.minY, this.maxX, this.maxY);\n }\n}\n","import {getScript} from 'unicode-properties';\n\n// This maps the Unicode Script property to an OpenType script tag\n// Data from http://www.microsoft.com/typography/otspec/scripttags.htm\n// and http://www.unicode.org/Public/UNIDATA/PropertyValueAliases.txt.\nconst UNICODE_SCRIPTS = {\n Caucasian_Albanian: 'aghb',\n Arabic: 'arab',\n Imperial_Aramaic: 'armi',\n Armenian: 'armn',\n Avestan: 'avst',\n Balinese: 'bali',\n Bamum: 'bamu',\n Bassa_Vah: 'bass',\n Batak: 'batk',\n Bengali: ['bng2', 'beng'],\n Bopomofo: 'bopo',\n Brahmi: 'brah',\n Braille: 'brai',\n Buginese: 'bugi',\n Buhid: 'buhd',\n Chakma: 'cakm',\n Canadian_Aboriginal: 'cans',\n Carian: 'cari',\n Cham: 'cham',\n Cherokee: 'cher',\n Coptic: 'copt',\n Cypriot: 'cprt',\n Cyrillic: 'cyrl',\n Devanagari: ['dev2', 'deva'],\n Deseret: 'dsrt',\n Duployan: 'dupl',\n Egyptian_Hieroglyphs: 'egyp',\n Elbasan: 'elba',\n Ethiopic: 'ethi',\n Georgian: 'geor',\n Glagolitic: 'glag',\n Gothic: 'goth',\n Grantha: 'gran',\n Greek: 'grek',\n Gujarati: ['gjr2', 'gujr'],\n Gurmukhi: ['gur2', 'guru'],\n Hangul: 'hang',\n Han: 'hani',\n Hanunoo: 'hano',\n Hebrew: 'hebr',\n Hiragana: 'hira',\n Pahawh_Hmong: 'hmng',\n Katakana_Or_Hiragana: 'hrkt',\n Old_Italic: 'ital',\n Javanese: 'java',\n Kayah_Li: 'kali',\n Katakana: 'kana',\n Kharoshthi: 'khar',\n Khmer: 'khmr',\n Khojki: 'khoj',\n Kannada: ['knd2', 'knda'],\n Kaithi: 'kthi',\n Tai_Tham: 'lana',\n Lao: 'lao ',\n Latin: 'latn',\n Lepcha: 'lepc',\n Limbu: 'limb',\n Linear_A: 'lina',\n Linear_B: 'linb',\n Lisu: 'lisu',\n Lycian: 'lyci',\n Lydian: 'lydi',\n Mahajani: 'mahj',\n Mandaic: 'mand',\n Manichaean: 'mani',\n Mende_Kikakui: 'mend',\n Meroitic_Cursive: 'merc',\n Meroitic_Hieroglyphs: 'mero',\n Malayalam: ['mlm2', 'mlym'],\n Modi: 'modi',\n Mongolian: 'mong',\n Mro: 'mroo',\n Meetei_Mayek: 'mtei',\n Myanmar: ['mym2', 'mymr'],\n Old_North_Arabian: 'narb',\n Nabataean: 'nbat',\n Nko: 'nko ',\n Ogham: 'ogam',\n Ol_Chiki: 'olck',\n Old_Turkic: 'orkh',\n Oriya: ['ory2', 'orya'],\n Osmanya: 'osma',\n Palmyrene: 'palm',\n Pau_Cin_Hau: 'pauc',\n Old_Permic: 'perm',\n Phags_Pa: 'phag',\n Inscriptional_Pahlavi: 'phli',\n Psalter_Pahlavi: 'phlp',\n Phoenician: 'phnx',\n Miao: 'plrd',\n Inscriptional_Parthian: 'prti',\n Rejang: 'rjng',\n Runic: 'runr',\n Samaritan: 'samr',\n Old_South_Arabian: 'sarb',\n Saurashtra: 'saur',\n Shavian: 'shaw',\n Sharada: 'shrd',\n Siddham: 'sidd',\n Khudawadi: 'sind',\n Sinhala: 'sinh',\n Sora_Sompeng: 'sora',\n Sundanese: 'sund',\n Syloti_Nagri: 'sylo',\n Syriac: 'syrc',\n Tagbanwa: 'tagb',\n Takri: 'takr',\n Tai_Le: 'tale',\n New_Tai_Lue: 'talu',\n Tamil: ['tml2', 'taml'],\n Tai_Viet: 'tavt',\n Telugu: ['tel2', 'telu'],\n Tifinagh: 'tfng',\n Tagalog: 'tglg',\n Thaana: 'thaa',\n Thai: 'thai',\n Tibetan: 'tibt',\n Tirhuta: 'tirh',\n Ugaritic: 'ugar',\n Vai: 'vai ',\n Warang_Citi: 'wara',\n Old_Persian: 'xpeo',\n Cuneiform: 'xsux',\n Yi: 'yi ',\n Inherited: 'zinh',\n Common: 'zyyy',\n Unknown: 'zzzz'\n};\n\nconst OPENTYPE_SCRIPTS = {};\nfor (let script in UNICODE_SCRIPTS) {\n let tag = UNICODE_SCRIPTS[script];\n if (Array.isArray(tag)) {\n for (let t of tag) {\n OPENTYPE_SCRIPTS[t] = script;\n }\n } else {\n OPENTYPE_SCRIPTS[tag] = script;\n }\n}\n\nexport function fromUnicode(script) {\n return UNICODE_SCRIPTS[script];\n}\n\nexport function fromOpenType(tag) {\n return OPENTYPE_SCRIPTS[tag];\n}\n\nexport function forString(string) {\n let len = string.length;\n let idx = 0;\n while (idx < len) {\n let code = string.charCodeAt(idx++);\n\n // Check if this is a high surrogate\n if (0xd800 <= code && code <= 0xdbff && idx < len) {\n let next = string.charCodeAt(idx);\n\n // Check if this is a low surrogate\n if (0xdc00 <= next && next <= 0xdfff) {\n idx++;\n code = ((code & 0x3FF) << 10) + (next & 0x3FF) + 0x10000;\n }\n }\n\n let script = getScript(code);\n if (script !== 'Common' && script !== 'Inherited' && script !== 'Unknown') {\n return UNICODE_SCRIPTS[script];\n }\n }\n\n return UNICODE_SCRIPTS.Unknown;\n}\n\nexport function forCodePoints(codePoints) {\n for (let i = 0; i < codePoints.length; i++) {\n let codePoint = codePoints[i];\n let script = getScript(codePoint);\n if (script !== 'Common' && script !== 'Inherited' && script !== 'Unknown') {\n return UNICODE_SCRIPTS[script];\n }\n }\n\n return UNICODE_SCRIPTS.Unknown;\n}\n\n// The scripts in this map are written from right to left\nconst RTL = {\n arab: true, // Arabic\n hebr: true, // Hebrew\n syrc: true, // Syriac\n thaa: true, // Thaana\n cprt: true, // Cypriot Syllabary\n khar: true, // Kharosthi\n phnx: true, // Phoenician\n 'nko ': true, // N'Ko\n lydi: true, // Lydian\n avst: true, // Avestan\n armi: true, // Imperial Aramaic\n phli: true, // Inscriptional Pahlavi\n prti: true, // Inscriptional Parthian\n sarb: true, // Old South Arabian\n orkh: true, // Old Turkic, Orkhon Runic\n samr: true, // Samaritan\n mand: true, // Mandaic, Mandaean\n merc: true, // Meroitic Cursive\n mero: true, // Meroitic Hieroglyphs\n\n // Unicode 7.0 (not listed on http://www.microsoft.com/typography/otspec/scripttags.htm)\n mani: true, // Manichaean\n mend: true, // Mende Kikakui\n nbat: true, // Nabataean\n narb: true, // Old North Arabian\n palm: true, // Palmyrene\n phlp: true // Psalter Pahlavi\n};\n\nexport function direction(script) {\n if (RTL[script]) {\n return 'rtl';\n }\n\n return 'ltr';\n}\n","/**\n * Represents positioning information for a glyph in a GlyphRun.\n */\nexport default class GlyphPosition {\n constructor(xAdvance = 0, yAdvance = 0, xOffset = 0, yOffset = 0) {\n /**\n * The amount to move the virtual pen in the X direction after rendering this glyph.\n * @type {number}\n */\n this.xAdvance = xAdvance;\n\n /**\n * The amount to move the virtual pen in the Y direction after rendering this glyph.\n * @type {number}\n */\n this.yAdvance = yAdvance;\n\n /**\n * The offset from the pen position in the X direction at which to render this glyph.\n * @type {number}\n */\n this.xOffset = xOffset;\n\n /**\n * The offset from the pen position in the Y direction at which to render this glyph.\n * @type {number}\n */\n this.yOffset = yOffset;\n }\n}\n","import * as AATFeatureMap from './AATFeatureMap';\nimport * as Script from '../layout/Script';\nimport AATMorxProcessor from './AATMorxProcessor';\n\nexport default class AATLayoutEngine {\n constructor(font) {\n this.font = font;\n this.morxProcessor = new AATMorxProcessor(font);\n this.fallbackPosition = false;\n }\n\n substitute(glyphRun) {\n // AAT expects the glyphs to be in visual order prior to morx processing,\n // so reverse the glyphs if the script is right-to-left.\n if (glyphRun.direction === 'rtl') {\n glyphRun.glyphs.reverse();\n }\n\n this.morxProcessor.process(glyphRun.glyphs, AATFeatureMap.mapOTToAAT(glyphRun.features));\n }\n\n getAvailableFeatures(script, language) {\n return AATFeatureMap.mapAATToOT(this.morxProcessor.getSupportedFeatures());\n }\n\n stringsForGlyph(gid) {\n let glyphStrings = this.morxProcessor.generateInputs(gid);\n let result = new Set;\n\n for (let glyphs of glyphStrings) {\n this._addStrings(glyphs, 0, result, '');\n }\n\n return result;\n }\n\n _addStrings(glyphs, index, strings, string) {\n let codePoints = this.font._cmapProcessor.codePointsForGlyph(glyphs[index]);\n\n for (let codePoint of codePoints) {\n let s = string + String.fromCodePoint(codePoint);\n if (index < glyphs.length - 1) {\n this._addStrings(glyphs, index + 1, strings, s);\n } else {\n strings.add(s);\n }\n }\n }\n}\n","// see https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html\n// and /System/Library/Frameworks/CoreText.framework/Versions/A/Headers/SFNTLayoutTypes.h on a Mac\nconst features = {\n allTypographicFeatures: {\n code: 0,\n exclusive: false,\n allTypeFeatures: 0\n },\n ligatures: {\n code: 1,\n exclusive: false,\n requiredLigatures: 0,\n commonLigatures: 2,\n rareLigatures: 4,\n // logos: 6\n rebusPictures: 8,\n diphthongLigatures: 10,\n squaredLigatures: 12,\n abbrevSquaredLigatures: 14,\n symbolLigatures: 16,\n contextualLigatures: 18,\n historicalLigatures: 20\n },\n cursiveConnection: {\n code: 2,\n exclusive: true,\n unconnected: 0,\n partiallyConnected: 1,\n cursive: 2\n },\n letterCase: {\n code: 3,\n exclusive: true\n },\n // upperAndLowerCase: 0 # deprecated\n // allCaps: 1 # deprecated\n // allLowerCase: 2 # deprecated\n // smallCaps: 3 # deprecated\n // initialCaps: 4 # deprecated\n // initialCapsAndSmallCaps: 5 # deprecated\n verticalSubstitution: {\n code: 4,\n exclusive: false,\n substituteVerticalForms: 0\n },\n linguisticRearrangement: {\n code: 5,\n exclusive: false,\n linguisticRearrangement: 0\n },\n numberSpacing: {\n code: 6,\n exclusive: true,\n monospacedNumbers: 0,\n proportionalNumbers: 1,\n thirdWidthNumbers: 2,\n quarterWidthNumbers: 3\n },\n smartSwash: {\n code: 8,\n exclusive: false,\n wordInitialSwashes: 0,\n wordFinalSwashes: 2,\n // lineInitialSwashes: 4\n // lineFinalSwashes: 6\n nonFinalSwashes: 8\n },\n diacritics: {\n code: 9,\n exclusive: true,\n showDiacritics: 0,\n hideDiacritics: 1,\n decomposeDiacritics: 2\n },\n verticalPosition: {\n code: 10,\n exclusive: true,\n normalPosition: 0,\n superiors: 1,\n inferiors: 2,\n ordinals: 3,\n scientificInferiors: 4\n },\n fractions: {\n code: 11,\n exclusive: true,\n noFractions: 0,\n verticalFractions: 1,\n diagonalFractions: 2\n },\n overlappingCharacters: {\n code: 13,\n exclusive: false,\n preventOverlap: 0\n },\n typographicExtras: {\n code: 14,\n exclusive: false,\n // hyphensToEmDash: 0\n // hyphenToEnDash: 2\n slashedZero: 4\n },\n // formInterrobang: 6\n // smartQuotes: 8\n // periodsToEllipsis: 10\n mathematicalExtras: {\n code: 15,\n exclusive: false,\n // hyphenToMinus: 0\n // asteristoMultiply: 2\n // slashToDivide: 4\n // inequalityLigatures: 6\n // exponents: 8\n mathematicalGreek: 10\n },\n ornamentSets: {\n code: 16,\n exclusive: true,\n noOrnaments: 0,\n dingbats: 1,\n piCharacters: 2,\n fleurons: 3,\n decorativeBorders: 4,\n internationalSymbols: 5,\n mathSymbols: 6\n },\n characterAlternatives: {\n code: 17,\n exclusive: true,\n noAlternates: 0\n },\n // user defined options\n designComplexity: {\n code: 18,\n exclusive: true,\n designLevel1: 0,\n designLevel2: 1,\n designLevel3: 2,\n designLevel4: 3,\n designLevel5: 4\n },\n styleOptions: {\n code: 19,\n exclusive: true,\n noStyleOptions: 0,\n displayText: 1,\n engravedText: 2,\n illuminatedCaps: 3,\n titlingCaps: 4,\n tallCaps: 5\n },\n characterShape: {\n code: 20,\n exclusive: true,\n traditionalCharacters: 0,\n simplifiedCharacters: 1,\n JIS1978Characters: 2,\n JIS1983Characters: 3,\n JIS1990Characters: 4,\n traditionalAltOne: 5,\n traditionalAltTwo: 6,\n traditionalAltThree: 7,\n traditionalAltFour: 8,\n traditionalAltFive: 9,\n expertCharacters: 10,\n JIS2004Characters: 11,\n hojoCharacters: 12,\n NLCCharacters: 13,\n traditionalNamesCharacters: 14\n },\n numberCase: {\n code: 21,\n exclusive: true,\n lowerCaseNumbers: 0,\n upperCaseNumbers: 1\n },\n textSpacing: {\n code: 22,\n exclusive: true,\n proportionalText: 0,\n monospacedText: 1,\n halfWidthText: 2,\n thirdWidthText: 3,\n quarterWidthText: 4,\n altProportionalText: 5,\n altHalfWidthText: 6\n },\n transliteration: {\n code: 23,\n exclusive: true,\n noTransliteration: 0\n },\n // hanjaToHangul: 1\n // hiraganaToKatakana: 2\n // katakanaToHiragana: 3\n // kanaToRomanization: 4\n // romanizationToHiragana: 5\n // romanizationToKatakana: 6\n // hanjaToHangulAltOne: 7\n // hanjaToHangulAltTwo: 8\n // hanjaToHangulAltThree: 9\n annotation: {\n code: 24,\n exclusive: true,\n noAnnotation: 0,\n boxAnnotation: 1,\n roundedBoxAnnotation: 2,\n circleAnnotation: 3,\n invertedCircleAnnotation: 4,\n parenthesisAnnotation: 5,\n periodAnnotation: 6,\n romanNumeralAnnotation: 7,\n diamondAnnotation: 8,\n invertedBoxAnnotation: 9,\n invertedRoundedBoxAnnotation: 10\n },\n kanaSpacing: {\n code: 25,\n exclusive: true,\n fullWidthKana: 0,\n proportionalKana: 1\n },\n ideographicSpacing: {\n code: 26,\n exclusive: true,\n fullWidthIdeographs: 0,\n proportionalIdeographs: 1,\n halfWidthIdeographs: 2\n },\n unicodeDecomposition: {\n code: 27,\n exclusive: false,\n canonicalComposition: 0,\n compatibilityComposition: 2,\n transcodingComposition: 4\n },\n rubyKana: {\n code: 28,\n exclusive: false,\n // noRubyKana: 0 # deprecated - use rubyKanaOff instead\n // rubyKana: 1 # deprecated - use rubyKanaOn instead\n rubyKana: 2\n },\n CJKSymbolAlternatives: {\n code: 29,\n exclusive: true,\n noCJKSymbolAlternatives: 0,\n CJKSymbolAltOne: 1,\n CJKSymbolAltTwo: 2,\n CJKSymbolAltThree: 3,\n CJKSymbolAltFour: 4,\n CJKSymbolAltFive: 5\n },\n ideographicAlternatives: {\n code: 30,\n exclusive: true,\n noIdeographicAlternatives: 0,\n ideographicAltOne: 1,\n ideographicAltTwo: 2,\n ideographicAltThree: 3,\n ideographicAltFour: 4,\n ideographicAltFive: 5\n },\n CJKVerticalRomanPlacement: {\n code: 31,\n exclusive: true,\n CJKVerticalRomanCentered: 0,\n CJKVerticalRomanHBaseline: 1\n },\n italicCJKRoman: {\n code: 32,\n exclusive: false,\n // noCJKItalicRoman: 0 # deprecated - use CJKItalicRomanOff instead\n // CJKItalicRoman: 1 # deprecated - use CJKItalicRomanOn instead\n CJKItalicRoman: 2\n },\n caseSensitiveLayout: {\n code: 33,\n exclusive: false,\n caseSensitiveLayout: 0,\n caseSensitiveSpacing: 2\n },\n alternateKana: {\n code: 34,\n exclusive: false,\n alternateHorizKana: 0,\n alternateVertKana: 2\n },\n stylisticAlternatives: {\n code: 35,\n exclusive: false,\n noStylisticAlternates: 0,\n stylisticAltOne: 2,\n stylisticAltTwo: 4,\n stylisticAltThree: 6,\n stylisticAltFour: 8,\n stylisticAltFive: 10,\n stylisticAltSix: 12,\n stylisticAltSeven: 14,\n stylisticAltEight: 16,\n stylisticAltNine: 18,\n stylisticAltTen: 20,\n stylisticAltEleven: 22,\n stylisticAltTwelve: 24,\n stylisticAltThirteen: 26,\n stylisticAltFourteen: 28,\n stylisticAltFifteen: 30,\n stylisticAltSixteen: 32,\n stylisticAltSeventeen: 34,\n stylisticAltEighteen: 36,\n stylisticAltNineteen: 38,\n stylisticAltTwenty: 40\n },\n contextualAlternates: {\n code: 36,\n exclusive: false,\n contextualAlternates: 0,\n swashAlternates: 2,\n contextualSwashAlternates: 4\n },\n lowerCase: {\n code: 37,\n exclusive: true,\n defaultLowerCase: 0,\n lowerCaseSmallCaps: 1,\n lowerCasePetiteCaps: 2\n },\n upperCase: {\n code: 38,\n exclusive: true,\n defaultUpperCase: 0,\n upperCaseSmallCaps: 1,\n upperCasePetiteCaps: 2\n },\n languageTag: { // indices into ltag table\n code: 39,\n exclusive: true\n },\n CJKRomanSpacing: {\n code: 103,\n exclusive: true,\n halfWidthCJKRoman: 0,\n proportionalCJKRoman: 1,\n defaultCJKRoman: 2,\n fullWidthCJKRoman: 3\n }\n};\n\nconst feature = (name, selector) => [features[name].code, features[name][selector]];\n\nconst OTMapping = {\n rlig: feature('ligatures', 'requiredLigatures'),\n clig: feature('ligatures', 'contextualLigatures'),\n dlig: feature('ligatures', 'rareLigatures'),\n hlig: feature('ligatures', 'historicalLigatures'),\n liga: feature('ligatures', 'commonLigatures'),\n hist: feature('ligatures', 'historicalLigatures'), // ??\n\n smcp: feature('lowerCase', 'lowerCaseSmallCaps'),\n pcap: feature('lowerCase', 'lowerCasePetiteCaps'),\n\n frac: feature('fractions', 'diagonalFractions'),\n dnom: feature('fractions', 'diagonalFractions'), // ??\n numr: feature('fractions', 'diagonalFractions'), // ??\n afrc: feature('fractions', 'verticalFractions'),\n // aalt\n // abvf, abvm, abvs, akhn, blwf, blwm, blws, cfar, cjct, cpsp, falt, isol, jalt, ljmo, mset?\n // ltra, ltrm, nukt, pref, pres, pstf, psts, rand, rkrf, rphf, rtla, rtlm, size, tjmo, tnum?\n // unic, vatu, vhal, vjmo, vpal, vrt2\n // dist -> trak table?\n // kern, vkrn -> kern table\n // lfbd + opbd + rtbd -> opbd table?\n // mark, mkmk -> acnt table?\n // locl -> languageTag + ltag table\n\n case: feature('caseSensitiveLayout', 'caseSensitiveLayout'), // also caseSensitiveSpacing\n ccmp: feature('unicodeDecomposition', 'canonicalComposition'), // compatibilityComposition?\n cpct: feature('CJKVerticalRomanPlacement', 'CJKVerticalRomanCentered'), // guess..., probably not given below\n valt: feature('CJKVerticalRomanPlacement', 'CJKVerticalRomanCentered'),\n swsh: feature('contextualAlternates', 'swashAlternates'),\n cswh: feature('contextualAlternates', 'contextualSwashAlternates'),\n curs: feature('cursiveConnection', 'cursive'), // ??\n c2pc: feature('upperCase', 'upperCasePetiteCaps'),\n c2sc: feature('upperCase', 'upperCaseSmallCaps'),\n\n init: feature('smartSwash', 'wordInitialSwashes'), // ??\n fin2: feature('smartSwash', 'wordFinalSwashes'), // ??\n medi: feature('smartSwash', 'nonFinalSwashes'), // ??\n med2: feature('smartSwash', 'nonFinalSwashes'), // ??\n fin3: feature('smartSwash', 'wordFinalSwashes'), // ??\n fina: feature('smartSwash', 'wordFinalSwashes'), // ??\n\n pkna: feature('kanaSpacing', 'proportionalKana'),\n half: feature('textSpacing', 'halfWidthText'), // also HalfWidthCJKRoman, HalfWidthIdeographs?\n halt: feature('textSpacing', 'altHalfWidthText'),\n\n hkna: feature('alternateKana', 'alternateHorizKana'),\n vkna: feature('alternateKana', 'alternateVertKana'),\n // hngl: feature 'transliteration', 'hanjaToHangulSelector' # deprecated\n\n ital: feature('italicCJKRoman', 'CJKItalicRoman'),\n lnum: feature('numberCase', 'upperCaseNumbers'),\n onum: feature('numberCase', 'lowerCaseNumbers'),\n mgrk: feature('mathematicalExtras', 'mathematicalGreek'),\n\n // nalt: not enough info. what type of annotation?\n // ornm: ditto, which ornament style?\n\n calt: feature('contextualAlternates', 'contextualAlternates'), // or more?\n vrt2: feature('verticalSubstitution', 'substituteVerticalForms'), // oh... below?\n vert: feature('verticalSubstitution', 'substituteVerticalForms'),\n tnum: feature('numberSpacing', 'monospacedNumbers'),\n pnum: feature('numberSpacing', 'proportionalNumbers'),\n sups: feature('verticalPosition', 'superiors'),\n subs: feature('verticalPosition', 'inferiors'),\n ordn: feature('verticalPosition', 'ordinals'),\n pwid: feature('textSpacing', 'proportionalText'),\n hwid: feature('textSpacing', 'halfWidthText'),\n qwid: feature('textSpacing', 'quarterWidthText'), // also QuarterWidthNumbers?\n twid: feature('textSpacing', 'thirdWidthText'), // also ThirdWidthNumbers?\n fwid: feature('textSpacing', 'proportionalText'), //??\n palt: feature('textSpacing', 'altProportionalText'),\n trad: feature('characterShape', 'traditionalCharacters'),\n smpl: feature('characterShape', 'simplifiedCharacters'),\n jp78: feature('characterShape', 'JIS1978Characters'),\n jp83: feature('characterShape', 'JIS1983Characters'),\n jp90: feature('characterShape', 'JIS1990Characters'),\n jp04: feature('characterShape', 'JIS2004Characters'),\n expt: feature('characterShape', 'expertCharacters'),\n hojo: feature('characterShape', 'hojoCharacters'),\n nlck: feature('characterShape', 'NLCCharacters'),\n tnam: feature('characterShape', 'traditionalNamesCharacters'),\n ruby: feature('rubyKana', 'rubyKana'),\n titl: feature('styleOptions', 'titlingCaps'),\n zero: feature('typographicExtras', 'slashedZero'),\n\n ss01: feature('stylisticAlternatives', 'stylisticAltOne'),\n ss02: feature('stylisticAlternatives', 'stylisticAltTwo'),\n ss03: feature('stylisticAlternatives', 'stylisticAltThree'),\n ss04: feature('stylisticAlternatives', 'stylisticAltFour'),\n ss05: feature('stylisticAlternatives', 'stylisticAltFive'),\n ss06: feature('stylisticAlternatives', 'stylisticAltSix'),\n ss07: feature('stylisticAlternatives', 'stylisticAltSeven'),\n ss08: feature('stylisticAlternatives', 'stylisticAltEight'),\n ss09: feature('stylisticAlternatives', 'stylisticAltNine'),\n ss10: feature('stylisticAlternatives', 'stylisticAltTen'),\n ss11: feature('stylisticAlternatives', 'stylisticAltEleven'),\n ss12: feature('stylisticAlternatives', 'stylisticAltTwelve'),\n ss13: feature('stylisticAlternatives', 'stylisticAltThirteen'),\n ss14: feature('stylisticAlternatives', 'stylisticAltFourteen'),\n ss15: feature('stylisticAlternatives', 'stylisticAltFifteen'),\n ss16: feature('stylisticAlternatives', 'stylisticAltSixteen'),\n ss17: feature('stylisticAlternatives', 'stylisticAltSeventeen'),\n ss18: feature('stylisticAlternatives', 'stylisticAltEighteen'),\n ss19: feature('stylisticAlternatives', 'stylisticAltNineteen'),\n ss20: feature('stylisticAlternatives', 'stylisticAltTwenty')\n};\n\n // salt: feature 'stylisticAlternatives', 'stylisticAltOne' # hmm, which one to choose\n\n// Add cv01-cv99 features\nfor (let i = 1; i <= 99; i++) {\n OTMapping[`cv${`00${i}`.slice(-2)}`] = [features.characterAlternatives.code, i];\n}\n\n// create inverse mapping\nlet AATMapping = {};\nfor (let ot in OTMapping) {\n let aat = OTMapping[ot];\n if (AATMapping[aat[0]] == null) {\n AATMapping[aat[0]] = {};\n }\n\n AATMapping[aat[0]][aat[1]] = ot;\n}\n\n// Maps an array of OpenType features to AAT features\n// in the form of {featureType:{featureSetting:true}}\nexport function mapOTToAAT(features) {\n let res = {};\n for (let k in features) {\n let r;\n if (r = OTMapping[k]) {\n if (res[r[0]] == null) {\n res[r[0]] = {};\n }\n\n res[r[0]][r[1]] = features[k];\n }\n }\n\n return res;\n}\n\n// Maps strings in a [featureType, featureSetting]\n// to their equivalent number codes\nfunction mapFeatureStrings(f) {\n let [type, setting] = f;\n if (isNaN(type)) {\n var typeCode = features[type] && features[type].code;\n } else {\n var typeCode = type;\n }\n\n if (isNaN(setting)) {\n var settingCode = features[type] && features[type][setting];\n } else {\n var settingCode = setting;\n }\n\n return [typeCode, settingCode];\n}\n\n// Maps AAT features to an array of OpenType features\n// Supports both arrays in the form of [[featureType, featureSetting]]\n// and objects in the form of {featureType:{featureSetting:true}}\n// featureTypes and featureSettings can be either strings or number codes\nexport function mapAATToOT(features) {\n let res = {};\n if (Array.isArray(features)) {\n for (let k = 0; k < features.length; k++) {\n let r;\n let f = mapFeatureStrings(features[k]);\n if (r = AATMapping[f[0]] && AATMapping[f[0]][f[1]]) {\n res[r] = true;\n }\n }\n\n } else if (typeof features === 'object') {\n for (let type in features) {\n let feature = features[type];\n for (let setting in feature) {\n let r;\n let f = mapFeatureStrings([type, setting]);\n if (feature[setting] && (r = AATMapping[f[0]] && AATMapping[f[0]][f[1]])) {\n res[r] = true;\n }\n }\n }\n }\n\n return Object.keys(res);\n}\n","import AATStateMachine from './AATStateMachine';\nimport AATLookupTable from './AATLookupTable';\nimport {cache} from '../decorators';\n\n// indic replacement flags\nconst MARK_FIRST = 0x8000;\nconst MARK_LAST = 0x2000;\nconst VERB = 0x000F;\n\n// contextual substitution and glyph insertion flag\nconst SET_MARK = 0x8000;\n\n// ligature entry flags\nconst SET_COMPONENT = 0x8000;\nconst PERFORM_ACTION = 0x2000;\n\n// ligature action masks\nconst LAST_MASK = 0x80000000;\nconst STORE_MASK = 0x40000000;\nconst OFFSET_MASK = 0x3FFFFFFF;\n\nconst VERTICAL_ONLY = 0x800000;\nconst REVERSE_DIRECTION = 0x400000;\nconst HORIZONTAL_AND_VERTICAL = 0x200000;\n\n// glyph insertion flags\nconst CURRENT_IS_KASHIDA_LIKE = 0x2000;\nconst MARKED_IS_KASHIDA_LIKE = 0x1000;\nconst CURRENT_INSERT_BEFORE = 0x0800;\nconst MARKED_INSERT_BEFORE = 0x0400;\nconst CURRENT_INSERT_COUNT = 0x03E0;\nconst MARKED_INSERT_COUNT = 0x001F;\n\nexport default class AATMorxProcessor {\n constructor(font) {\n this.processIndicRearragement = this.processIndicRearragement.bind(this);\n this.processContextualSubstitution = this.processContextualSubstitution.bind(this);\n this.processLigature = this.processLigature.bind(this);\n this.processNoncontextualSubstitutions = this.processNoncontextualSubstitutions.bind(this);\n this.processGlyphInsertion = this.processGlyphInsertion.bind(this);\n this.font = font;\n this.morx = font.morx;\n this.inputCache = null;\n }\n\n // Processes an array of glyphs and applies the specified features\n // Features should be in the form of {featureType:{featureSetting:boolean}}\n process(glyphs, features = {}) {\n for (let chain of this.morx.chains) {\n let flags = chain.defaultFlags;\n\n // enable/disable the requested features\n for (let feature of chain.features) {\n let f;\n if (f = features[feature.featureType]) {\n if (f[feature.featureSetting]) {\n flags &= feature.disableFlags;\n flags |= feature.enableFlags;\n } else if (f[feature.featureSetting] === false) {\n flags |= ~feature.disableFlags;\n flags &= ~feature.enableFlags;\n }\n }\n }\n\n for (let subtable of chain.subtables) {\n if (subtable.subFeatureFlags & flags) {\n this.processSubtable(subtable, glyphs);\n }\n }\n }\n\n // remove deleted glyphs\n let index = glyphs.length - 1;\n while (index >= 0) {\n if (glyphs[index].id === 0xffff) {\n glyphs.splice(index, 1);\n }\n\n index--;\n }\n\n return glyphs;\n }\n\n processSubtable(subtable, glyphs) {\n this.subtable = subtable;\n this.glyphs = glyphs;\n if (this.subtable.type === 4) {\n this.processNoncontextualSubstitutions(this.subtable, this.glyphs);\n return;\n }\n\n this.ligatureStack = [];\n this.markedGlyph = null;\n this.firstGlyph = null;\n this.lastGlyph = null;\n this.markedIndex = null;\n\n let stateMachine = this.getStateMachine(subtable);\n let process = this.getProcessor();\n\n let reverse = !!(this.subtable.coverage & REVERSE_DIRECTION);\n return stateMachine.process(this.glyphs, reverse, process);\n }\n\n @cache\n getStateMachine(subtable) {\n return new AATStateMachine(subtable.table.stateTable);\n }\n\n getProcessor() {\n switch (this.subtable.type) {\n case 0:\n return this.processIndicRearragement;\n case 1:\n return this.processContextualSubstitution;\n case 2:\n return this.processLigature;\n case 4:\n return this.processNoncontextualSubstitutions;\n case 5:\n return this.processGlyphInsertion;\n default:\n throw new Error(`Invalid morx subtable type: ${this.subtable.type}`);\n }\n }\n\n processIndicRearragement(glyph, entry, index) {\n if (entry.flags & MARK_FIRST) {\n this.firstGlyph = index;\n }\n\n if (entry.flags & MARK_LAST) {\n this.lastGlyph = index;\n }\n\n reorderGlyphs(this.glyphs, entry.flags & VERB, this.firstGlyph, this.lastGlyph);\n }\n\n processContextualSubstitution(glyph, entry, index) {\n let subsitutions = this.subtable.table.substitutionTable.items;\n if (entry.markIndex !== 0xffff) {\n let lookup = subsitutions.getItem(entry.markIndex);\n let lookupTable = new AATLookupTable(lookup);\n glyph = this.glyphs[this.markedGlyph];\n var gid = lookupTable.lookup(glyph.id);\n if (gid) {\n this.glyphs[this.markedGlyph] = this.font.getGlyph(gid, glyph.codePoints);\n }\n }\n\n if (entry.currentIndex !== 0xffff) {\n let lookup = subsitutions.getItem(entry.currentIndex);\n let lookupTable = new AATLookupTable(lookup);\n glyph = this.glyphs[index];\n var gid = lookupTable.lookup(glyph.id);\n if (gid) {\n this.glyphs[index] = this.font.getGlyph(gid, glyph.codePoints);\n }\n }\n\n if (entry.flags & SET_MARK) {\n this.markedGlyph = index;\n }\n }\n\n processLigature(glyph, entry, index) {\n if (entry.flags & SET_COMPONENT) {\n this.ligatureStack.push(index);\n }\n\n if (entry.flags & PERFORM_ACTION) {\n let actions = this.subtable.table.ligatureActions;\n let components = this.subtable.table.components;\n let ligatureList = this.subtable.table.ligatureList;\n\n let actionIndex = entry.action;\n let last = false;\n let ligatureIndex = 0;\n let codePoints = [];\n let ligatureGlyphs = [];\n\n while (!last) {\n let componentGlyph = this.ligatureStack.pop();\n codePoints.unshift(...this.glyphs[componentGlyph].codePoints);\n\n let action = actions.getItem(actionIndex++);\n last = !!(action & LAST_MASK);\n let store = !!(action & STORE_MASK);\n let offset = (action & OFFSET_MASK) << 2 >> 2; // sign extend 30 to 32 bits\n offset += this.glyphs[componentGlyph].id;\n\n let component = components.getItem(offset);\n ligatureIndex += component;\n\n if (last || store) {\n let ligatureEntry = ligatureList.getItem(ligatureIndex);\n this.glyphs[componentGlyph] = this.font.getGlyph(ligatureEntry, codePoints);\n ligatureGlyphs.push(componentGlyph);\n ligatureIndex = 0;\n codePoints = [];\n } else {\n this.glyphs[componentGlyph] = this.font.getGlyph(0xffff);\n }\n }\n\n // Put ligature glyph indexes back on the stack\n this.ligatureStack.push(...ligatureGlyphs);\n }\n }\n\n processNoncontextualSubstitutions(subtable, glyphs, index) {\n let lookupTable = new AATLookupTable(subtable.table.lookupTable);\n\n for (index = 0; index < glyphs.length; index++) {\n let glyph = glyphs[index];\n if (glyph.id !== 0xffff) {\n let gid = lookupTable.lookup(glyph.id);\n if (gid) { // 0 means do nothing\n glyphs[index] = this.font.getGlyph(gid, glyph.codePoints);\n }\n }\n }\n }\n\n _insertGlyphs(glyphIndex, insertionActionIndex, count, isBefore) {\n let insertions = [];\n while (count--) {\n let gid = this.subtable.table.insertionActions.getItem(insertionActionIndex++);\n insertions.push(this.font.getGlyph(gid));\n }\n\n if (!isBefore) {\n glyphIndex++;\n }\n\n this.glyphs.splice(glyphIndex, 0, ...insertions);\n }\n\n processGlyphInsertion(glyph, entry, index) {\n if (entry.flags & SET_MARK) {\n this.markedIndex = index;\n }\n\n if (entry.markedInsertIndex !== 0xffff) {\n let count = (entry.flags & MARKED_INSERT_COUNT) >>> 5;\n let isBefore = !!(entry.flags & MARKED_INSERT_BEFORE);\n this._insertGlyphs(this.markedIndex, entry.markedInsertIndex, count, isBefore);\n }\n\n if (entry.currentInsertIndex !== 0xffff) {\n let count = (entry.flags & CURRENT_INSERT_COUNT) >>> 5;\n let isBefore = !!(entry.flags & CURRENT_INSERT_BEFORE);\n this._insertGlyphs(index, entry.currentInsertIndex, count, isBefore);\n }\n }\n\n getSupportedFeatures() {\n let features = [];\n for (let chain of this.morx.chains) {\n for (let feature of chain.features) {\n features.push([feature.featureType, feature.featureSetting]);\n }\n }\n\n return features;\n }\n\n generateInputs(gid) {\n if (!this.inputCache) {\n this.generateInputCache();\n }\n\n return this.inputCache[gid] || [];\n }\n\n generateInputCache() {\n this.inputCache = {};\n\n for (let chain of this.morx.chains) {\n let flags = chain.defaultFlags;\n\n for (let subtable of chain.subtables) {\n if (subtable.subFeatureFlags & flags) {\n this.generateInputsForSubtable(subtable);\n }\n }\n }\n }\n\n generateInputsForSubtable(subtable) {\n // Currently, only supporting ligature subtables.\n if (subtable.type !== 2) {\n return;\n }\n\n let reverse = !!(subtable.coverage & REVERSE_DIRECTION);\n if (reverse) {\n throw new Error('Reverse subtable, not supported.');\n }\n\n this.subtable = subtable;\n this.ligatureStack = [];\n\n let stateMachine = this.getStateMachine(subtable);\n let process = this.getProcessor();\n\n let input = [];\n let stack = [];\n this.glyphs = [];\n\n stateMachine.traverse({\n enter: (glyph, entry) => {\n let glyphs = this.glyphs;\n stack.push({\n glyphs: glyphs.slice(),\n ligatureStack: this.ligatureStack.slice()\n });\n\n // Add glyph to input and glyphs to process.\n let g = this.font.getGlyph(glyph);\n input.push(g);\n glyphs.push(input[input.length - 1]);\n\n // Process ligature substitution\n process(glyphs[glyphs.length - 1], entry, glyphs.length - 1);\n\n // Add input to result if only one matching (non-deleted) glyph remains.\n let count = 0;\n let found = 0;\n for (let i = 0; i < glyphs.length && count <= 1; i++) {\n if (glyphs[i].id !== 0xffff) {\n count++;\n found = glyphs[i].id;\n }\n }\n\n if (count === 1) {\n let result = input.map(g => g.id);\n let cache = this.inputCache[found];\n if (cache) {\n cache.push(result);\n } else {\n this.inputCache[found] = [result];\n }\n }\n },\n\n exit: () => {\n ({glyphs: this.glyphs, ligatureStack: this.ligatureStack} = stack.pop());\n input.pop();\n }\n });\n }\n}\n\n// swaps the glyphs in rangeA with those in rangeB\n// reverse the glyphs inside those ranges if specified\n// ranges are in [offset, length] format\nfunction swap(glyphs, rangeA, rangeB, reverseA = false, reverseB = false) {\n let end = glyphs.splice(rangeB[0] - (rangeB[1] - 1), rangeB[1]);\n if (reverseB) {\n end.reverse();\n }\n\n let start = glyphs.splice(rangeA[0], rangeA[1], ...end);\n if (reverseA) {\n start.reverse();\n }\n\n glyphs.splice(rangeB[0] - (rangeA[1] - 1), 0, ...start);\n return glyphs;\n}\n\nfunction reorderGlyphs(glyphs, verb, firstGlyph, lastGlyph) {\n let length = lastGlyph - firstGlyph + 1;\n switch (verb) {\n case 0: // no change\n return glyphs;\n\n case 1: // Ax => xA\n return swap(glyphs, [firstGlyph, 1], [lastGlyph, 0]);\n\n case 2: // xD => Dx\n return swap(glyphs, [firstGlyph, 0], [lastGlyph, 1]);\n\n case 3: // AxD => DxA\n return swap(glyphs, [firstGlyph, 1], [lastGlyph, 1]);\n\n case 4: // ABx => xAB\n return swap(glyphs, [firstGlyph, 2], [lastGlyph, 0]);\n\n case 5: // ABx => xBA\n return swap(glyphs, [firstGlyph, 2], [lastGlyph, 0], true, false);\n\n case 6: // xCD => CDx\n return swap(glyphs, [firstGlyph, 0], [lastGlyph, 2]);\n\n case 7: // xCD => DCx\n return swap(glyphs, [firstGlyph, 0], [lastGlyph, 2], false, true);\n\n case 8: // AxCD => CDxA\n return swap(glyphs, [firstGlyph, 1], [lastGlyph, 2]);\n\n case 9: // AxCD => DCxA\n return swap(glyphs, [firstGlyph, 1], [lastGlyph, 2], false, true);\n\n case 10: // ABxD => DxAB\n return swap(glyphs, [firstGlyph, 2], [lastGlyph, 1]);\n\n case 11: // ABxD => DxBA\n return swap(glyphs, [firstGlyph, 2], [lastGlyph, 1], true, false);\n\n case 12: // ABxCD => CDxAB\n return swap(glyphs, [firstGlyph, 2], [lastGlyph, 2]);\n\n case 13: // ABxCD => CDxBA\n return swap(glyphs, [firstGlyph, 2], [lastGlyph, 2], true, false);\n\n case 14: // ABxCD => DCxAB\n return swap(glyphs, [firstGlyph, 2], [lastGlyph, 2], false, true);\n\n case 15: // ABxCD => DCxBA\n return swap(glyphs, [firstGlyph, 2], [lastGlyph, 2], true, true);\n\n default:\n throw new Error(`Unknown verb: ${verb}`);\n }\n}\n","import AATLookupTable from './AATLookupTable';\n\nconst START_OF_TEXT_STATE = 0;\nconst START_OF_LINE_STATE = 1;\n\nconst END_OF_TEXT_CLASS = 0;\nconst OUT_OF_BOUNDS_CLASS = 1;\nconst DELETED_GLYPH_CLASS = 2;\nconst END_OF_LINE_CLASS = 3;\n\nconst DONT_ADVANCE = 0x4000;\n\nexport default class AATStateMachine {\n constructor(stateTable) {\n this.stateTable = stateTable;\n this.lookupTable = new AATLookupTable(stateTable.classTable);\n }\n\n process(glyphs, reverse, processEntry) {\n let currentState = START_OF_TEXT_STATE; // START_OF_LINE_STATE is used for kashida glyph insertions sometimes I think?\n let index = reverse ? glyphs.length - 1 : 0;\n let dir = reverse ? -1 : 1;\n\n while ((dir === 1 && index <= glyphs.length) || (dir === -1 && index >= -1)) {\n let glyph = null;\n let classCode = OUT_OF_BOUNDS_CLASS;\n let shouldAdvance = true;\n\n if (index === glyphs.length || index === -1) {\n classCode = END_OF_TEXT_CLASS;\n } else {\n glyph = glyphs[index];\n if (glyph.id === 0xffff) { // deleted glyph\n classCode = DELETED_GLYPH_CLASS;\n } else {\n classCode = this.lookupTable.lookup(glyph.id);\n if (classCode == null) {\n classCode = OUT_OF_BOUNDS_CLASS;\n }\n }\n }\n\n let row = this.stateTable.stateArray.getItem(currentState);\n let entryIndex = row[classCode];\n let entry = this.stateTable.entryTable.getItem(entryIndex);\n\n if (classCode !== END_OF_TEXT_CLASS && classCode !== DELETED_GLYPH_CLASS) {\n processEntry(glyph, entry, index);\n shouldAdvance = !(entry.flags & DONT_ADVANCE);\n }\n\n currentState = entry.newState;\n if (shouldAdvance) {\n index += dir;\n }\n }\n\n return glyphs;\n }\n\n /**\n * Performs a depth-first traversal of the glyph strings\n * represented by the state machine.\n */\n traverse(opts, state = 0, visited = new Set) {\n if (visited.has(state)) {\n return;\n }\n\n visited.add(state);\n\n let {nClasses, stateArray, entryTable} = this.stateTable;\n let row = stateArray.getItem(state);\n\n // Skip predefined classes\n for (let classCode = 4; classCode < nClasses; classCode++) {\n let entryIndex = row[classCode];\n let entry = entryTable.getItem(entryIndex);\n\n // Try all glyphs in the class\n for (let glyph of this.lookupTable.glyphsForValue(classCode)) {\n if (opts.enter) {\n opts.enter(glyph, entry);\n }\n\n if (entry.newState !== 0) {\n this.traverse(opts, entry.newState, visited);\n }\n\n if (opts.exit) {\n opts.exit(glyph, entry);\n }\n }\n }\n }\n}\n","import {cache} from '../decorators';\nimport {range} from '../utils';\n\nexport default class AATLookupTable {\n constructor(table) {\n this.table = table;\n }\n\n lookup(glyph) {\n switch (this.table.version) {\n case 0: // simple array format\n return this.table.values.getItem(glyph);\n\n case 2: // segment format\n case 4: {\n let min = 0;\n let max = this.table.binarySearchHeader.nUnits - 1;\n\n while (min <= max) {\n var mid = (min + max) >> 1;\n var seg = this.table.segments[mid];\n\n // special end of search value\n if (seg.firstGlyph === 0xffff) {\n return null;\n }\n\n if (glyph < seg.firstGlyph) {\n max = mid - 1;\n } else if (glyph > seg.lastGlyph) {\n min = mid + 1;\n } else {\n if (this.table.version === 2) {\n return seg.value;\n } else {\n return seg.values[glyph - seg.firstGlyph];\n }\n }\n }\n\n return null;\n }\n\n case 6: { // lookup single\n let min = 0;\n let max = this.table.binarySearchHeader.nUnits - 1;\n\n while (min <= max) {\n var mid = (min + max) >> 1;\n var seg = this.table.segments[mid];\n\n // special end of search value\n if (seg.glyph === 0xffff) {\n return null;\n }\n\n if (glyph < seg.glyph) {\n max = mid - 1;\n } else if (glyph > seg.glyph) {\n min = mid + 1;\n } else {\n return seg.value;\n }\n }\n\n return null;\n }\n\n case 8: // lookup trimmed\n return this.table.values[glyph - this.table.firstGlyph];\n\n default:\n throw new Error(`Unknown lookup table format: ${this.table.version}`);\n }\n }\n\n @cache\n glyphsForValue(classValue) {\n let res = [];\n\n switch (this.table.version) {\n case 2: // segment format\n case 4: {\n for (let segment of this.table.segments) {\n if ((this.table.version === 2 && segment.value === classValue)) {\n res.push(...range(segment.firstGlyph, segment.lastGlyph + 1));\n } else {\n for (let index = 0; index < segment.values.length; index++) {\n if (segment.values[index] === classValue) {\n res.push(segment.firstGlyph + index);\n }\n }\n }\n }\n\n break;\n }\n\n case 6: { // lookup single\n for (let segment of this.table.segments) {\n if (segment.value === classValue) {\n res.push(segment.glyph);\n }\n }\n\n break;\n }\n\n case 8: { // lookup trimmed\n for (let i = 0; i < this.table.values.length; i++) {\n if (this.table.values[i] === classValue) {\n res.push(this.table.firstGlyph + i);\n }\n }\n\n break;\n }\n\n default:\n throw new Error(`Unknown lookup table format: ${this.table.version}`);\n }\n\n return res;\n }\n}\n","import ShapingPlan from './ShapingPlan';\nimport * as Shapers from './shapers';\nimport GlyphInfo from './GlyphInfo';\nimport GSUBProcessor from './GSUBProcessor';\nimport GPOSProcessor from './GPOSProcessor';\n\nexport default class OTLayoutEngine {\n constructor(font) {\n this.font = font;\n this.glyphInfos = null;\n this.plan = null;\n this.GSUBProcessor = null;\n this.GPOSProcessor = null;\n this.fallbackPosition = true;\n\n if (font.GSUB) {\n this.GSUBProcessor = new GSUBProcessor(font, font.GSUB);\n }\n\n if (font.GPOS) {\n this.GPOSProcessor = new GPOSProcessor(font, font.GPOS);\n }\n }\n\n setup(glyphRun) {\n // Map glyphs to GlyphInfo objects so data can be passed between\n // GSUB and GPOS without mutating the real (shared) Glyph objects.\n this.glyphInfos = glyphRun.glyphs.map(glyph => new GlyphInfo(this.font, glyph.id, [...glyph.codePoints]));\n\n // Select a script based on what is available in GSUB/GPOS.\n let script = null;\n if (this.GPOSProcessor) {\n script = this.GPOSProcessor.selectScript(glyphRun.script, glyphRun.language, glyphRun.direction);\n }\n\n if (this.GSUBProcessor) {\n script = this.GSUBProcessor.selectScript(glyphRun.script, glyphRun.language, glyphRun.direction);\n }\n\n // Choose a shaper based on the script, and setup a shaping plan.\n // This determines which features to apply to which glyphs.\n this.shaper = Shapers.choose(script);\n this.plan = new ShapingPlan(this.font, script, glyphRun.direction);\n this.shaper.plan(this.plan, this.glyphInfos, glyphRun.features);\n\n // Assign chosen features to output glyph run\n for (let key in this.plan.allFeatures) {\n glyphRun.features[key] = true;\n }\n }\n\n substitute(glyphRun) {\n if (this.GSUBProcessor) {\n this.plan.process(this.GSUBProcessor, this.glyphInfos);\n\n // Map glyph infos back to normal Glyph objects\n glyphRun.glyphs = this.glyphInfos.map(glyphInfo => this.font.getGlyph(glyphInfo.id, glyphInfo.codePoints));\n }\n }\n\n position(glyphRun) {\n if (this.shaper.zeroMarkWidths === 'BEFORE_GPOS') {\n this.zeroMarkAdvances(glyphRun.positions);\n }\n\n if (this.GPOSProcessor) {\n this.plan.process(this.GPOSProcessor, this.glyphInfos, glyphRun.positions);\n }\n\n if (this.shaper.zeroMarkWidths === 'AFTER_GPOS') {\n this.zeroMarkAdvances(glyphRun.positions);\n }\n\n // Reverse the glyphs and positions if the script is right-to-left\n if (glyphRun.direction === 'rtl') {\n glyphRun.glyphs.reverse();\n glyphRun.positions.reverse();\n }\n\n return this.GPOSProcessor && this.GPOSProcessor.features;\n }\n\n zeroMarkAdvances(positions) {\n for (let i = 0; i < this.glyphInfos.length; i++) {\n if (this.glyphInfos[i].isMark) {\n positions[i].xAdvance = 0;\n positions[i].yAdvance = 0;\n }\n }\n }\n\n cleanup() {\n this.glyphInfos = null;\n this.plan = null;\n this.shaper = null;\n }\n\n getAvailableFeatures(script, language) {\n let features = [];\n\n if (this.GSUBProcessor) {\n this.GSUBProcessor.selectScript(script, language);\n features.push(...Object.keys(this.GSUBProcessor.features));\n }\n\n if (this.GPOSProcessor) {\n this.GPOSProcessor.selectScript(script, language);\n features.push(...Object.keys(this.GPOSProcessor.features));\n }\n\n return features;\n }\n}\n","import * as Script from '../layout/Script';\n\n/**\n * ShapingPlans are used by the OpenType shapers to store which\n * features should by applied, and in what order to apply them.\n * The features are applied in groups called stages. A feature\n * can be applied globally to all glyphs, or locally to only\n * specific glyphs.\n *\n * @private\n */\nexport default class ShapingPlan {\n constructor(font, script, direction) {\n this.font = font;\n this.script = script;\n this.direction = direction;\n this.stages = [];\n this.globalFeatures = {};\n this.allFeatures = {};\n }\n\n /**\n * Adds the given features to the last stage.\n * Ignores features that have already been applied.\n */\n _addFeatures(features, global) {\n let stageIndex = this.stages.length - 1;\n let stage = this.stages[stageIndex];\n for (let feature of features) {\n if (this.allFeatures[feature] == null) {\n stage.push(feature);\n this.allFeatures[feature] = stageIndex;\n\n if (global) {\n this.globalFeatures[feature] = true;\n }\n }\n }\n }\n\n /**\n * Add features to the last stage\n */\n add(arg, global = true) {\n if (this.stages.length === 0) {\n this.stages.push([]);\n }\n\n if (typeof arg === 'string') {\n arg = [arg];\n }\n\n if (Array.isArray(arg)) {\n this._addFeatures(arg, global);\n } else if (typeof arg === 'object') {\n this._addFeatures(arg.global || [], true);\n this._addFeatures(arg.local || [], false);\n } else {\n throw new Error(\"Unsupported argument to ShapingPlan#add\");\n }\n }\n\n /**\n * Add a new stage\n */\n addStage(arg, global) {\n if (typeof arg === 'function') {\n this.stages.push(arg, []);\n } else {\n this.stages.push([]);\n this.add(arg, global);\n }\n }\n\n setFeatureOverrides(features) {\n if (Array.isArray(features)) {\n this.add(features);\n } else if (typeof features === 'object') {\n for (let tag in features) {\n if (features[tag]) {\n this.add(tag);\n } else if (this.allFeatures[tag] != null) {\n let stage = this.stages[this.allFeatures[tag]];\n stage.splice(stage.indexOf(tag), 1);\n delete this.allFeatures[tag];\n delete this.globalFeatures[tag];\n }\n }\n }\n }\n\n /**\n * Assigns the global features to the given glyphs\n */\n assignGlobalFeatures(glyphs) {\n for (let glyph of glyphs) {\n for (let feature in this.globalFeatures) {\n glyph.features[feature] = true;\n }\n }\n }\n\n /**\n * Executes the planned stages using the given OTProcessor\n */\n process(processor, glyphs, positions) {\n for (let stage of this.stages) {\n if (typeof stage === 'function') {\n if (!positions) {\n stage(this.font, glyphs, this);\n }\n\n } else if (stage.length > 0) {\n processor.applyFeatures(stage, glyphs, positions);\n }\n }\n }\n}\n","import DefaultShaper from './DefaultShaper';\nimport ArabicShaper from './ArabicShaper';\nimport HangulShaper from './HangulShaper';\nimport IndicShaper from './IndicShaper';\nimport UniversalShaper from './UniversalShaper';\n\nconst SHAPERS = {\n arab: ArabicShaper, // Arabic\n mong: ArabicShaper, // Mongolian\n syrc: ArabicShaper, // Syriac\n 'nko ': ArabicShaper, // N'Ko\n phag: ArabicShaper, // Phags Pa\n mand: ArabicShaper, // Mandaic\n mani: ArabicShaper, // Manichaean\n phlp: ArabicShaper, // Psalter Pahlavi\n\n hang: HangulShaper, // Hangul\n\n bng2: IndicShaper, // Bengali\n beng: IndicShaper, // Bengali\n dev2: IndicShaper, // Devanagari\n deva: IndicShaper, // Devanagari\n gjr2: IndicShaper, // Gujarati\n gujr: IndicShaper, // Gujarati\n guru: IndicShaper, // Gurmukhi\n gur2: IndicShaper, // Gurmukhi\n knda: IndicShaper, // Kannada\n knd2: IndicShaper, // Kannada\n mlm2: IndicShaper, // Malayalam\n mlym: IndicShaper, // Malayalam\n ory2: IndicShaper, // Oriya\n orya: IndicShaper, // Oriya\n taml: IndicShaper, // Tamil\n tml2: IndicShaper, // Tamil\n telu: IndicShaper, // Telugu\n tel2: IndicShaper, // Telugu\n khmr: IndicShaper, // Khmer\n\n bali: UniversalShaper, // Balinese\n batk: UniversalShaper, // Batak\n brah: UniversalShaper, // Brahmi\n bugi: UniversalShaper, // Buginese\n buhd: UniversalShaper, // Buhid\n cakm: UniversalShaper, // Chakma\n cham: UniversalShaper, // Cham\n dupl: UniversalShaper, // Duployan\n egyp: UniversalShaper, // Egyptian Hieroglyphs\n gran: UniversalShaper, // Grantha\n hano: UniversalShaper, // Hanunoo\n java: UniversalShaper, // Javanese\n kthi: UniversalShaper, // Kaithi\n kali: UniversalShaper, // Kayah Li\n khar: UniversalShaper, // Kharoshthi\n khoj: UniversalShaper, // Khojki\n sind: UniversalShaper, // Khudawadi\n lepc: UniversalShaper, // Lepcha\n limb: UniversalShaper, // Limbu\n mahj: UniversalShaper, // Mahajani\n // mand: UniversalShaper, // Mandaic\n // mani: UniversalShaper, // Manichaean\n mtei: UniversalShaper, // Meitei Mayek\n modi: UniversalShaper, // Modi\n // mong: UniversalShaper, // Mongolian\n // 'nko ': UniversalShaper, // N’Ko\n hmng: UniversalShaper, // Pahawh Hmong\n // phag: UniversalShaper, // Phags-pa\n // phlp: UniversalShaper, // Psalter Pahlavi\n rjng: UniversalShaper, // Rejang\n saur: UniversalShaper, // Saurashtra\n shrd: UniversalShaper, // Sharada\n sidd: UniversalShaper, // Siddham\n sinh: IndicShaper, // Sinhala\n sund: UniversalShaper, // Sundanese\n sylo: UniversalShaper, // Syloti Nagri\n tglg: UniversalShaper, // Tagalog\n tagb: UniversalShaper, // Tagbanwa\n tale: UniversalShaper, // Tai Le\n lana: UniversalShaper, // Tai Tham\n tavt: UniversalShaper, // Tai Viet\n takr: UniversalShaper, // Takri\n tibt: UniversalShaper, // Tibetan\n tfng: UniversalShaper, // Tifinagh\n tirh: UniversalShaper, // Tirhuta\n\n latn: DefaultShaper, // Latin\n DFLT: DefaultShaper // Default\n};\n\nexport function choose(script) {\n if (!Array.isArray(script)) {\n script = [script];\n }\n\n for (let s of script) {\n let shaper = SHAPERS[s];\n if (shaper) {\n return shaper;\n }\n }\n\n return DefaultShaper;\n}\n","import {isDigit} from 'unicode-properties';\n\nconst VARIATION_FEATURES = ['rvrn'];\nconst COMMON_FEATURES = ['ccmp', 'locl', 'rlig', 'mark', 'mkmk'];\nconst FRACTIONAL_FEATURES = ['frac', 'numr', 'dnom'];\nconst HORIZONTAL_FEATURES = ['calt', 'clig', 'liga', 'rclt', 'curs', 'kern'];\nconst VERTICAL_FEATURES = ['vert'];\nconst DIRECTIONAL_FEATURES = {\n ltr: ['ltra', 'ltrm'],\n rtl: ['rtla', 'rtlm']\n};\n\nexport default class DefaultShaper {\n static zeroMarkWidths = 'AFTER_GPOS';\n static plan(plan, glyphs, features) {\n // Plan the features we want to apply\n this.planPreprocessing(plan);\n this.planFeatures(plan);\n this.planPostprocessing(plan, features);\n\n // Assign the global features to all the glyphs\n plan.assignGlobalFeatures(glyphs);\n\n // Assign local features to glyphs\n this.assignFeatures(plan, glyphs);\n }\n\n static planPreprocessing(plan) {\n plan.add({\n global: [...VARIATION_FEATURES, ...DIRECTIONAL_FEATURES[plan.direction]],\n local: FRACTIONAL_FEATURES\n });\n }\n\n static planFeatures(plan) {\n // Do nothing by default. Let subclasses override this.\n }\n\n static planPostprocessing(plan, userFeatures) {\n plan.add([...COMMON_FEATURES, ...HORIZONTAL_FEATURES]);\n plan.setFeatureOverrides(userFeatures);\n }\n\n static assignFeatures(plan, glyphs) {\n // Enable contextual fractions\n for (let i = 0; i < glyphs.length; i++) {\n let glyph = glyphs[i];\n if (glyph.codePoints[0] === 0x2044) { // fraction slash\n let start = i;\n let end = i + 1;\n\n // Apply numerator\n while (start > 0 && isDigit(glyphs[start - 1].codePoints[0])) {\n glyphs[start - 1].features.numr = true;\n glyphs[start - 1].features.frac = true;\n start--;\n }\n\n // Apply denominator\n while (end < glyphs.length && isDigit(glyphs[end].codePoints[0])) {\n glyphs[end].features.dnom = true;\n glyphs[end].features.frac = true;\n end++;\n }\n\n // Apply fraction slash\n glyph.features.frac = true;\n i = end - 1;\n }\n }\n }\n}\n","import DefaultShaper from './DefaultShaper';\nimport {getCategory} from 'unicode-properties';\nimport UnicodeTrie from 'unicode-trie';\nimport { decodeBase64 } from '../../utils';\n\nconst trie = new UnicodeTrie(decodeBase64(require('fs').readFileSync(__dirname + '/data.trie', 'base64')));\nconst FEATURES = ['isol', 'fina', 'fin2', 'fin3', 'medi', 'med2', 'init'];\n\nconst ShapingClasses = {\n Non_Joining: 0,\n Left_Joining: 1,\n Right_Joining: 2,\n Dual_Joining: 3,\n Join_Causing: 3,\n ALAPH: 4,\n 'DALATH RISH': 5,\n Transparent: 6\n};\n\nconst ISOL = 'isol';\nconst FINA = 'fina';\nconst FIN2 = 'fin2';\nconst FIN3 = 'fin3';\nconst MEDI = 'medi';\nconst MED2 = 'med2';\nconst INIT = 'init';\nconst NONE = null;\n\n// Each entry is [prevAction, curAction, nextState]\nconst STATE_TABLE = [\n // Non_Joining, Left_Joining, Right_Joining, Dual_Joining, ALAPH, DALATH RISH\n // State 0: prev was U, not willing to join.\n [ [ NONE, NONE, 0 ], [ NONE, ISOL, 2 ], [ NONE, ISOL, 1 ], [ NONE, ISOL, 2 ], [ NONE, ISOL, 1 ], [ NONE, ISOL, 6 ] ],\n\n // State 1: prev was R or ISOL/ALAPH, not willing to join.\n [ [ NONE, NONE, 0 ], [ NONE, ISOL, 2 ], [ NONE, ISOL, 1 ], [ NONE, ISOL, 2 ], [ NONE, FIN2, 5 ], [ NONE, ISOL, 6 ] ],\n\n // State 2: prev was D/L in ISOL form, willing to join.\n [ [ NONE, NONE, 0 ], [ NONE, ISOL, 2 ], [ INIT, FINA, 1 ], [ INIT, FINA, 3 ], [ INIT, FINA, 4 ], [ INIT, FINA, 6 ] ],\n\n // State 3: prev was D in FINA form, willing to join.\n [ [ NONE, NONE, 0 ], [ NONE, ISOL, 2 ], [ MEDI, FINA, 1 ], [ MEDI, FINA, 3 ], [ MEDI, FINA, 4 ], [ MEDI, FINA, 6 ] ],\n\n // State 4: prev was FINA ALAPH, not willing to join.\n [ [ NONE, NONE, 0 ], [ NONE, ISOL, 2 ], [ MED2, ISOL, 1 ], [ MED2, ISOL, 2 ], [ MED2, FIN2, 5 ], [ MED2, ISOL, 6 ] ],\n\n // State 5: prev was FIN2/FIN3 ALAPH, not willing to join.\n [ [ NONE, NONE, 0 ], [ NONE, ISOL, 2 ], [ ISOL, ISOL, 1 ], [ ISOL, ISOL, 2 ], [ ISOL, FIN2, 5 ], [ ISOL, ISOL, 6 ] ],\n\n // State 6: prev was DALATH/RISH, not willing to join.\n [ [ NONE, NONE, 0 ], [ NONE, ISOL, 2 ], [ NONE, ISOL, 1 ], [ NONE, ISOL, 2 ], [ NONE, FIN3, 5 ], [ NONE, ISOL, 6 ] ]\n];\n\n/**\n * This is a shaper for Arabic, and other cursive scripts.\n * It uses data from ArabicShaping.txt in the Unicode database,\n * compiled to a UnicodeTrie by generate-data.coffee.\n *\n * The shaping state machine was ported from Harfbuzz.\n * https://github.com/behdad/harfbuzz/blob/master/src/hb-ot-shape-complex-arabic.cc\n */\nexport default class ArabicShaper extends DefaultShaper {\n static planFeatures(plan) {\n plan.add(['ccmp', 'locl']);\n for (let i = 0; i < FEATURES.length; i++) {\n let feature = FEATURES[i];\n plan.addStage(feature, false);\n }\n\n plan.addStage('mset');\n }\n\n static assignFeatures(plan, glyphs) {\n super.assignFeatures(plan, glyphs);\n\n let prev = -1;\n let state = 0;\n let actions = [];\n\n // Apply the state machine to map glyphs to features\n for (let i = 0; i < glyphs.length; i++) {\n let curAction, prevAction;\n var glyph = glyphs[i];\n let type = getShapingClass(glyph.codePoints[0]);\n if (type === ShapingClasses.Transparent) {\n actions[i] = NONE;\n continue;\n }\n\n [prevAction, curAction, state] = STATE_TABLE[state][type];\n\n if (prevAction !== NONE && prev !== -1) {\n actions[prev] = prevAction;\n }\n\n actions[i] = curAction;\n prev = i;\n }\n\n // Apply the chosen features to their respective glyphs\n for (let index = 0; index < glyphs.length; index++) {\n let feature;\n var glyph = glyphs[index];\n if (feature = actions[index]) {\n glyph.features[feature] = true;\n }\n }\n }\n}\n\nfunction getShapingClass(codePoint) {\n let res = trie.get(codePoint);\n if (res) {\n return res - 1;\n }\n\n let category = getCategory(codePoint);\n if (category === 'Mn' || category === 'Me' || category === 'Cf') {\n return ShapingClasses.Transparent;\n }\n\n return ShapingClasses.Non_Joining;\n}\n","import DefaultShaper from './DefaultShaper';\nimport GlyphInfo from '../GlyphInfo';\n\n/**\n * This is a shaper for the Hangul script, used by the Korean language.\n * It does the following:\n * - decompose if unsupported by the font:\n * <LV> -> <L,V>\n * <LVT> -> <L,V,T>\n * <LV,T> -> <L,V,T>\n *\n * - compose if supported by the font:\n * <L,V> -> <LV>\n * <L,V,T> -> <LVT>\n * <LV,T> -> <LVT>\n *\n * - reorder tone marks (S is any valid syllable):\n * <S, M> -> <M, S>\n *\n * - apply ljmo, vjmo, and tjmo OpenType features to decomposed Jamo sequences.\n *\n * This logic is based on the following documents:\n * - http://www.microsoft.com/typography/OpenTypeDev/hangul/intro.htm\n * - http://ktug.org/~nomos/harfbuzz-hangul/hangulshaper.pdf\n */\nexport default class HangulShaper extends DefaultShaper {\n static zeroMarkWidths = 'NONE';\n static planFeatures(plan) {\n plan.add(['ljmo', 'vjmo', 'tjmo'], false);\n }\n\n static assignFeatures(plan, glyphs) {\n let state = 0;\n let i = 0;\n while (i < glyphs.length) {\n let action;\n let glyph = glyphs[i];\n let code = glyph.codePoints[0];\n let type = getType(code);\n\n [ action, state ] = STATE_TABLE[state][type];\n\n switch (action) {\n case DECOMPOSE:\n // Decompose the composed syllable if it is not supported by the font.\n if (!plan.font.hasGlyphForCodePoint(code)) {\n i = decompose(glyphs, i, plan.font);\n }\n break;\n\n case COMPOSE:\n // Found a decomposed syllable. Try to compose if supported by the font.\n i = compose(glyphs, i, plan.font);\n break;\n\n case TONE_MARK:\n // Got a valid syllable, followed by a tone mark. Move the tone mark to the beginning of the syllable.\n reorderToneMark(glyphs, i, plan.font);\n break;\n\n case INVALID:\n // Tone mark has no valid syllable to attach to, so insert a dotted circle\n i = insertDottedCircle(glyphs, i, plan.font);\n break;\n }\n\n i++;\n }\n }\n}\n\nconst HANGUL_BASE = 0xac00;\nconst HANGUL_END = 0xd7a4;\nconst HANGUL_COUNT = HANGUL_END - HANGUL_BASE + 1;\nconst L_BASE = 0x1100; // lead\nconst V_BASE = 0x1161; // vowel\nconst T_BASE = 0x11a7; // trail\nconst L_COUNT = 19;\nconst V_COUNT = 21;\nconst T_COUNT = 28;\nconst L_END = L_BASE + L_COUNT - 1;\nconst V_END = V_BASE + V_COUNT - 1;\nconst T_END = T_BASE + T_COUNT - 1;\nconst DOTTED_CIRCLE = 0x25cc;\n\nconst isL = code => 0x1100 <= code && code <= 0x115f || 0xa960 <= code && code <= 0xa97c;\nconst isV = code => 0x1160 <= code && code <= 0x11a7 || 0xd7b0 <= code && code <= 0xd7c6;\nconst isT = code => 0x11a8 <= code && code <= 0x11ff || 0xd7cb <= code && code <= 0xd7fb;\nconst isTone = code => 0x302e <= code && code <= 0x302f;\nconst isLVT = code => HANGUL_BASE <= code && code <= HANGUL_END;\nconst isLV = code => (code - HANGUL_BASE) < HANGUL_COUNT && (code - HANGUL_BASE) % T_COUNT === 0;\nconst isCombiningL = code => L_BASE <= code && code <= L_END;\nconst isCombiningV = code => V_BASE <= code && code <= V_END;\nconst isCombiningT = code => T_BASE + 1 && 1 <= code && code <= T_END;\n\n// Character categories\nconst X = 0; // Other character\nconst L = 1; // Leading consonant\nconst V = 2; // Medial vowel\nconst T = 3; // Trailing consonant\nconst LV = 4; // Composed <LV> syllable\nconst LVT = 5; // Composed <LVT> syllable\nconst M = 6; // Tone mark\n\n// This function classifies a character using the above categories.\nfunction getType(code) {\n if (isL(code)) { return L; }\n if (isV(code)) { return V; }\n if (isT(code)) { return T; }\n if (isLV(code)) { return LV; }\n if (isLVT(code)) { return LVT; }\n if (isTone(code)) { return M; }\n return X;\n}\n\n// State machine actions\nconst NO_ACTION = 0;\nconst DECOMPOSE = 1;\nconst COMPOSE = 2;\nconst TONE_MARK = 4;\nconst INVALID = 5;\n\n// Build a state machine that accepts valid syllables, and applies actions along the way.\n// The logic this is implementing is documented at the top of the file.\nconst STATE_TABLE = [\n // X L V T LV LVT M\n // State 0: start state\n [ [ NO_ACTION, 0 ], [ NO_ACTION, 1 ], [ NO_ACTION, 0 ], [ NO_ACTION, 0 ], [ DECOMPOSE, 2 ], [ DECOMPOSE, 3 ], [ INVALID, 0 ] ],\n\n // State 1: <L>\n [ [ NO_ACTION, 0 ], [ NO_ACTION, 1 ], [ COMPOSE, 2 ], [ NO_ACTION, 0 ], [ DECOMPOSE, 2 ], [ DECOMPOSE, 3 ], [ INVALID, 0 ] ],\n\n // State 2: <L,V> or <LV>\n [ [ NO_ACTION, 0 ], [ NO_ACTION, 1 ], [ NO_ACTION, 0 ], [ COMPOSE, 3 ], [ DECOMPOSE, 2 ], [ DECOMPOSE, 3 ], [ TONE_MARK, 0 ] ],\n\n // State 3: <L,V,T> or <LVT>\n [ [ NO_ACTION, 0 ], [ NO_ACTION, 1 ], [ NO_ACTION, 0 ], [ NO_ACTION, 0 ], [ DECOMPOSE, 2 ], [ DECOMPOSE, 3 ], [ TONE_MARK, 0 ] ]\n];\n\nfunction getGlyph(font, code, features) {\n return new GlyphInfo(font, font.glyphForCodePoint(code).id, [code], features);\n}\n\nfunction decompose(glyphs, i, font) {\n let glyph = glyphs[i];\n let code = glyph.codePoints[0];\n\n let s = code - HANGUL_BASE;\n let t = T_BASE + s % T_COUNT;\n s = s / T_COUNT | 0;\n let l = L_BASE + s / V_COUNT | 0;\n let v = V_BASE + s % V_COUNT;\n\n // Don't decompose if all of the components are not available\n if (!font.hasGlyphForCodePoint(l) ||\n !font.hasGlyphForCodePoint(v) ||\n (t !== T_BASE && !font.hasGlyphForCodePoint(t))) {\n return i;\n }\n\n // Replace the current glyph with decomposed L, V, and T glyphs,\n // and apply the proper OpenType features to each component.\n let ljmo = getGlyph(font, l, glyph.features);\n ljmo.features.ljmo = true;\n\n let vjmo = getGlyph(font, v, glyph.features);\n vjmo.features.vjmo = true;\n\n let insert = [ ljmo, vjmo ];\n\n if (t > T_BASE) {\n let tjmo = getGlyph(font, t, glyph.features);\n tjmo.features.tjmo = true;\n insert.push(tjmo);\n }\n\n glyphs.splice(i, 1, ...insert);\n return i + insert.length - 1;\n}\n\nfunction compose(glyphs, i, font) {\n let glyph = glyphs[i];\n let code = glyphs[i].codePoints[0];\n let type = getType(code);\n\n let prev = glyphs[i - 1].codePoints[0];\n let prevType = getType(prev);\n\n // Figure out what type of syllable we're dealing with\n let lv, ljmo, vjmo, tjmo;\n if (prevType === LV && type === T) {\n // <LV,T>\n lv = prev;\n tjmo = glyph;\n } else {\n if (type === V) {\n // <L,V>\n ljmo = glyphs[i - 1];\n vjmo = glyph;\n } else {\n // <L,V,T>\n ljmo = glyphs[i - 2];\n vjmo = glyphs[i - 1];\n tjmo = glyph;\n }\n\n let l = ljmo.codePoints[0];\n let v = vjmo.codePoints[0];\n\n // Make sure L and V are combining characters\n if (isCombiningL(l) && isCombiningV(v)) {\n lv = HANGUL_BASE + ((l - L_BASE) * V_COUNT + (v - V_BASE)) * T_COUNT;\n }\n }\n\n let t = (tjmo && tjmo.codePoints[0]) || T_BASE;\n if ((lv != null) && (t === T_BASE || isCombiningT(t))) {\n let s = lv + (t - T_BASE);\n\n // Replace with a composed glyph if supported by the font,\n // otherwise apply the proper OpenType features to each component.\n if (font.hasGlyphForCodePoint(s)) {\n let del = prevType === V ? 3 : 2;\n glyphs.splice(i - del + 1, del, getGlyph(font, s, glyph.features));\n return i - del + 1;\n }\n }\n\n // Didn't compose (either a non-combining component or unsupported by font).\n if (ljmo) { ljmo.features.ljmo = true; }\n if (vjmo) { vjmo.features.vjmo = true; }\n if (tjmo) { tjmo.features.tjmo = true; }\n\n if (prevType === LV) {\n // Sequence was originally <L,V>, which got combined earlier.\n // Either the T was non-combining, or the LVT glyph wasn't supported.\n // Decompose the glyph again and apply OT features.\n decompose(glyphs, i - 1, font);\n return i + 1;\n }\n\n return i;\n}\n\nfunction getLength(code) {\n switch (getType(code)) {\n case LV:\n case LVT:\n return 1;\n case V:\n return 2;\n case T:\n return 3;\n }\n}\n\nfunction reorderToneMark(glyphs, i, font) {\n let glyph = glyphs[i];\n let code = glyphs[i].codePoints[0];\n\n // Move tone mark to the beginning of the previous syllable, unless it is zero width\n if (font.glyphForCodePoint(code).advanceWidth === 0) { return; }\n\n let prev = glyphs[i - 1].codePoints[0];\n let len = getLength(prev);\n\n glyphs.splice(i, 1);\n return glyphs.splice(i - len, 0, glyph);\n}\n\nfunction insertDottedCircle(glyphs, i, font) {\n let glyph = glyphs[i];\n let code = glyphs[i].codePoints[0];\n\n if (font.hasGlyphForCodePoint(DOTTED_CIRCLE)) {\n let dottedCircle = getGlyph(font, DOTTED_CIRCLE, glyph.features);\n\n // If the tone mark is zero width, insert the dotted circle before, otherwise after\n let idx = font.glyphForCodePoint(code).advanceWidth === 0 ? i : i + 1;\n glyphs.splice(idx, 0, dottedCircle);\n i++;\n }\n\n return i;\n}\n","import {isMark} from 'unicode-properties';\nimport OTProcessor from './OTProcessor';\n\nexport default class GlyphInfo {\n constructor(font, id, codePoints = [], features) {\n this._font = font;\n this.codePoints = codePoints;\n this.id = id;\n\n this.features = {};\n if (Array.isArray(features)) {\n for (let i = 0; i < features.length; i++) {\n let feature = features[i];\n this.features[feature] = true;\n }\n } else if (typeof features === 'object') {\n Object.assign(this.features, features);\n }\n\n this.ligatureID = null;\n this.ligatureComponent = null;\n this.isLigated = false;\n this.cursiveAttachment = null;\n this.markAttachment = null;\n this.shaperInfo = null;\n this.substituted = false;\n this.isMultiplied = false;\n }\n\n get id() {\n return this._id;\n }\n\n set id(id) {\n this._id = id;\n this.substituted = true;\n\n let GDEF = this._font.GDEF;\n if (GDEF && GDEF.glyphClassDef) {\n // TODO: clean this up\n let classID = OTProcessor.prototype.getClassID(id, GDEF.glyphClassDef);\n this.isBase = classID === 1;\n this.isLigature = classID === 2;\n this.isMark = classID === 3;\n this.markAttachmentType = GDEF.markAttachClassDef ? OTProcessor.prototype.getClassID(id, GDEF.markAttachClassDef) : 0;\n } else {\n this.isMark = this.codePoints.length > 0 && this.codePoints.every(isMark);\n this.isBase = !this.isMark;\n this.isLigature = this.codePoints.length > 1;\n this.markAttachmentType = 0;\n }\n }\n\n copy() {\n return new GlyphInfo(this._font, this.id, this.codePoints, this.features);\n }\n}\n","import GlyphIterator from './GlyphIterator';\nimport * as Script from '../layout/Script';\n\nconst DEFAULT_SCRIPTS = ['DFLT', 'dflt', 'latn'];\n\nexport default class OTProcessor {\n constructor(font, table) {\n this.font = font;\n this.table = table;\n\n this.script = null;\n this.scriptTag = null;\n\n this.language = null;\n this.languageTag = null;\n\n this.features = {};\n this.lookups = {};\n\n // Setup variation substitutions\n this.variationsIndex = font._variationProcessor\n ? this.findVariationsIndex(font._variationProcessor.normalizedCoords)\n : -1;\n\n // initialize to default script + language\n this.selectScript();\n\n // current context (set by applyFeatures)\n this.glyphs = [];\n this.positions = []; // only used by GPOS\n this.ligatureID = 1;\n this.currentFeature = null;\n }\n\n findScript(script) {\n if (this.table.scriptList == null) {\n return null;\n }\n\n if (!Array.isArray(script)) {\n script = [script];\n }\n\n for (let s of script) {\n for (let entry of this.table.scriptList) {\n if (entry.tag === s) {\n return entry;\n }\n }\n }\n\n return null;\n }\n\n selectScript(script, language, direction) {\n let changed = false;\n let entry;\n if (!this.script || script !== this.scriptTag) {\n entry = this.findScript(script);\n if (!entry) {\n entry = this.findScript(DEFAULT_SCRIPTS);\n }\n\n if (!entry) {\n return this.scriptTag;\n }\n\n this.scriptTag = entry.tag;\n this.script = entry.script;\n this.language = null;\n this.languageTag = null;\n changed = true;\n }\n\n if (!direction || direction !== this.direction) {\n this.direction = direction || Script.direction(script);\n }\n\n if (language && language.length < 4) {\n language += ' '.repeat(4 - language.length);\n }\n\n if (!language || language !== this.languageTag) {\n this.language = null;\n\n for (let lang of this.script.langSysRecords) {\n if (lang.tag === language) {\n this.language = lang.langSys;\n this.languageTag = lang.tag;\n break;\n }\n }\n\n if (!this.language) {\n this.language = this.script.defaultLangSys;\n this.languageTag = null;\n }\n\n changed = true;\n }\n\n // Build a feature lookup table\n if (changed) {\n this.features = {};\n if (this.language) {\n for (let featureIndex of this.language.featureIndexes) {\n let record = this.table.featureList[featureIndex];\n let substituteFeature = this.substituteFeatureForVariations(featureIndex);\n this.features[record.tag] = substituteFeature || record.feature;\n }\n }\n }\n\n return this.scriptTag;\n }\n\n lookupsForFeatures(userFeatures = [], exclude) {\n let lookups = [];\n for (let tag of userFeatures) {\n let feature = this.features[tag];\n if (!feature) {\n continue;\n }\n\n for (let lookupIndex of feature.lookupListIndexes) {\n if (exclude && exclude.indexOf(lookupIndex) !== -1) {\n continue;\n }\n\n lookups.push({\n feature: tag,\n index: lookupIndex,\n lookup: this.table.lookupList.get(lookupIndex)\n });\n }\n }\n\n lookups.sort((a, b) => a.index - b.index);\n return lookups;\n }\n\n substituteFeatureForVariations(featureIndex) {\n if (this.variationsIndex === -1) {\n return null;\n }\n\n let record = this.table.featureVariations.featureVariationRecords[this.variationsIndex];\n let substitutions = record.featureTableSubstitution.substitutions;\n for (let substitution of substitutions) {\n if (substitution.featureIndex === featureIndex) {\n return substitution.alternateFeatureTable;\n }\n }\n\n return null;\n }\n\n findVariationsIndex(coords) {\n let variations = this.table.featureVariations;\n if (!variations) {\n return -1;\n }\n\n let records = variations.featureVariationRecords;\n for (let i = 0; i < records.length; i++) {\n let conditions = records[i].conditionSet.conditionTable;\n if (this.variationConditionsMatch(conditions, coords)) {\n return i;\n }\n }\n\n return -1;\n }\n\n variationConditionsMatch(conditions, coords) {\n return conditions.every(condition => {\n let coord = condition.axisIndex < coords.length ? coords[condition.axisIndex] : 0;\n return condition.filterRangeMinValue <= coord && coord <= condition.filterRangeMaxValue;\n });\n }\n\n applyFeatures(userFeatures, glyphs, advances) {\n let lookups = this.lookupsForFeatures(userFeatures);\n this.applyLookups(lookups, glyphs, advances);\n }\n\n applyLookups(lookups, glyphs, positions) {\n this.glyphs = glyphs;\n this.positions = positions;\n this.glyphIterator = new GlyphIterator(glyphs);\n\n for (let { feature, lookup } of lookups) {\n this.currentFeature = feature;\n this.glyphIterator.reset(lookup.flags);\n\n while (this.glyphIterator.index < glyphs.length) {\n if (!(feature in this.glyphIterator.cur.features)) {\n this.glyphIterator.next();\n continue;\n }\n\n for (let table of lookup.subTables) {\n let res = this.applyLookup(lookup.lookupType, table);\n if (res) {\n break;\n }\n }\n\n this.glyphIterator.next();\n }\n }\n }\n\n applyLookup(lookup, table) {\n throw new Error(\"applyLookup must be implemented by subclasses\");\n }\n\n applyLookupList(lookupRecords) {\n let options = this.glyphIterator.options;\n let glyphIndex = this.glyphIterator.index;\n\n for (let lookupRecord of lookupRecords) {\n // Reset flags and find glyph index for this lookup record\n this.glyphIterator.reset(options, glyphIndex);\n this.glyphIterator.increment(lookupRecord.sequenceIndex);\n\n // Get the lookup and setup flags for subtables\n let lookup = this.table.lookupList.get(lookupRecord.lookupListIndex);\n this.glyphIterator.reset(lookup.flags, this.glyphIterator.index);\n\n // Apply lookup subtables until one matches\n for (let table of lookup.subTables) {\n if (this.applyLookup(lookup.lookupType, table)) {\n break;\n }\n }\n }\n\n this.glyphIterator.reset(options, glyphIndex);\n return true;\n }\n\n coverageIndex(coverage, glyph) {\n if (glyph == null) {\n glyph = this.glyphIterator.cur.id;\n }\n\n switch (coverage.version) {\n case 1:\n return coverage.glyphs.indexOf(glyph);\n\n case 2:\n for (let range of coverage.rangeRecords) {\n if (range.start <= glyph && glyph <= range.end) {\n return range.startCoverageIndex + glyph - range.start;\n }\n }\n\n break;\n }\n\n return -1;\n }\n\n match(sequenceIndex, sequence, fn, matched) {\n let pos = this.glyphIterator.index;\n let glyph = this.glyphIterator.increment(sequenceIndex);\n let idx = 0;\n\n while (idx < sequence.length && glyph && fn(sequence[idx], glyph)) {\n if (matched) {\n matched.push(this.glyphIterator.index);\n }\n\n idx++;\n glyph = this.glyphIterator.next();\n }\n\n this.glyphIterator.index = pos;\n if (idx < sequence.length) {\n return false;\n }\n\n return matched || true;\n }\n\n sequenceMatches(sequenceIndex, sequence) {\n return this.match(sequenceIndex, sequence, (component, glyph) => component === glyph.id);\n }\n\n sequenceMatchIndices(sequenceIndex, sequence) {\n return this.match(sequenceIndex, sequence, (component, glyph) => {\n // If the current feature doesn't apply to this glyph,\n if (!(this.currentFeature in glyph.features)) {\n return false;\n }\n\n return component === glyph.id;\n }, []);\n }\n\n coverageSequenceMatches(sequenceIndex, sequence) {\n return this.match(sequenceIndex, sequence, (coverage, glyph) =>\n this.coverageIndex(coverage, glyph.id) >= 0\n );\n }\n\n getClassID(glyph, classDef) {\n switch (classDef.version) {\n case 1: // Class array\n let i = glyph - classDef.startGlyph;\n if (i >= 0 && i < classDef.classValueArray.length) {\n return classDef.classValueArray[i];\n }\n\n break;\n\n case 2:\n for (let range of classDef.classRangeRecord) {\n if (range.start <= glyph && glyph <= range.end) {\n return range.class;\n }\n }\n\n break;\n }\n\n return 0;\n }\n\n classSequenceMatches(sequenceIndex, sequence, classDef) {\n return this.match(sequenceIndex, sequence, (classID, glyph) =>\n classID === this.getClassID(glyph.id, classDef)\n );\n }\n\n applyContext(table) {\n let index, set;\n switch (table.version) {\n case 1:\n index = this.coverageIndex(table.coverage);\n if (index === -1) {\n return false;\n }\n\n set = table.ruleSets[index];\n for (let rule of set) {\n if (this.sequenceMatches(1, rule.input)) {\n return this.applyLookupList(rule.lookupRecords);\n }\n }\n\n break;\n\n case 2:\n if (this.coverageIndex(table.coverage) === -1) {\n return false;\n }\n\n index = this.getClassID(this.glyphIterator.cur.id, table.classDef);\n if (index === -1) {\n return false;\n }\n\n set = table.classSet[index];\n for (let rule of set) {\n if (this.classSequenceMatches(1, rule.classes, table.classDef)) {\n return this.applyLookupList(rule.lookupRecords);\n }\n }\n\n break;\n\n case 3:\n if (this.coverageSequenceMatches(0, table.coverages)) {\n return this.applyLookupList(table.lookupRecords);\n }\n\n break;\n }\n\n return false;\n }\n\n applyChainingContext(table) {\n let index;\n switch (table.version) {\n case 1:\n index = this.coverageIndex(table.coverage);\n if (index === -1) {\n return false;\n }\n\n let set = table.chainRuleSets[index];\n for (let rule of set) {\n if (this.sequenceMatches(-rule.backtrack.length, rule.backtrack)\n && this.sequenceMatches(1, rule.input)\n && this.sequenceMatches(1 + rule.input.length, rule.lookahead)) {\n return this.applyLookupList(rule.lookupRecords);\n }\n }\n\n break;\n\n case 2:\n if (this.coverageIndex(table.coverage) === -1) {\n return false;\n }\n\n index = this.getClassID(this.glyphIterator.cur.id, table.inputClassDef);\n let rules = table.chainClassSet[index];\n if (!rules) {\n return false;\n }\n\n for (let rule of rules) {\n if (this.classSequenceMatches(-rule.backtrack.length, rule.backtrack, table.backtrackClassDef) &&\n this.classSequenceMatches(1, rule.input, table.inputClassDef) &&\n this.classSequenceMatches(1 + rule.input.length, rule.lookahead, table.lookaheadClassDef)) {\n return this.applyLookupList(rule.lookupRecords);\n }\n }\n\n break;\n\n case 3:\n if (this.coverageSequenceMatches(-table.backtrackGlyphCount, table.backtrackCoverage) &&\n this.coverageSequenceMatches(0, table.inputCoverage) &&\n this.coverageSequenceMatches(table.inputGlyphCount, table.lookaheadCoverage)) {\n return this.applyLookupList(table.lookupRecords);\n }\n\n break;\n }\n\n return false;\n }\n}\n","export default class GlyphIterator {\n constructor(glyphs, options) {\n this.glyphs = glyphs;\n this.reset(options);\n }\n\n reset(options = {}, index = 0) {\n this.options = options;\n this.flags = options.flags || {};\n this.markAttachmentType = options.markAttachmentType || 0;\n this.index = index;\n }\n\n get cur() {\n return this.glyphs[this.index] || null;\n }\n\n shouldIgnore(glyph) {\n return (this.flags.ignoreMarks && glyph.isMark) ||\n (this.flags.ignoreBaseGlyphs && glyph.isBase) ||\n (this.flags.ignoreLigatures && glyph.isLigature) ||\n (this.markAttachmentType && glyph.isMark && glyph.markAttachmentType !== this.markAttachmentType);\n }\n\n move(dir) {\n this.index += dir;\n while (0 <= this.index && this.index < this.glyphs.length && this.shouldIgnore(this.glyphs[this.index])) {\n this.index += dir;\n }\n\n if (0 > this.index || this.index >= this.glyphs.length) {\n return null;\n }\n\n return this.glyphs[this.index];\n }\n\n next() {\n return this.move(+1);\n }\n\n prev() {\n return this.move(-1);\n }\n\n peek(count = 1) {\n let idx = this.index;\n let res = this.increment(count);\n this.index = idx;\n return res;\n }\n\n peekIndex(count = 1) {\n let idx = this.index;\n this.increment(count);\n let res = this.index;\n this.index = idx;\n return res;\n }\n\n increment(count = 1) {\n let dir = count < 0 ? -1 : 1;\n count = Math.abs(count);\n while (count--) {\n this.move(dir);\n }\n\n return this.glyphs[this.index];\n }\n}\n","import DefaultShaper from './DefaultShaper';\nimport StateMachine from 'dfa';\nimport UnicodeTrie from 'unicode-trie';\nimport {getCategory} from 'unicode-properties';\nimport * as Script from '../../layout/Script';\nimport GlyphInfo from '../GlyphInfo';\nimport indicMachine from './indic.json';\nimport useData from './use.json';\nimport {\n CATEGORIES,\n POSITIONS,\n CONSONANT_FLAGS,\n JOINER_FLAGS,\n HALANT_OR_COENG_FLAGS, INDIC_CONFIGS,\n INDIC_DECOMPOSITIONS\n} from './indic-data';\nimport { decodeBase64 } from '../../utils';\n\nconst {decompositions} = useData;\nconst trie = new UnicodeTrie(decodeBase64(require('fs').readFileSync(__dirname + '/indic.trie', 'base64')));\nconst stateMachine = new StateMachine(indicMachine);\n\n/**\n * The IndicShaper supports indic scripts e.g. Devanagari, Kannada, etc.\n * Based on code from Harfbuzz: https://github.com/behdad/harfbuzz/blob/master/src/hb-ot-shape-complex-indic.cc\n */\nexport default class IndicShaper extends DefaultShaper {\n static zeroMarkWidths = 'NONE';\n static planFeatures(plan) {\n plan.addStage(setupSyllables);\n\n plan.addStage(['locl', 'ccmp']);\n\n plan.addStage(initialReordering);\n\n plan.addStage('nukt');\n plan.addStage('akhn');\n plan.addStage('rphf', false);\n plan.addStage('rkrf');\n plan.addStage('pref', false);\n plan.addStage('blwf', false);\n plan.addStage('abvf', false);\n plan.addStage('half', false);\n plan.addStage('pstf', false);\n plan.addStage('vatu');\n plan.addStage('cjct');\n plan.addStage('cfar', false);\n\n plan.addStage(finalReordering);\n\n plan.addStage({\n local: ['init'],\n global: ['pres', 'abvs', 'blws', 'psts', 'haln', 'dist', 'abvm', 'blwm', 'calt', 'clig']\n });\n\n // Setup the indic config for the selected script\n plan.unicodeScript = Script.fromOpenType(plan.script);\n plan.indicConfig = INDIC_CONFIGS[plan.unicodeScript] || INDIC_CONFIGS.Default;\n plan.isOldSpec = plan.indicConfig.hasOldSpec && plan.script[plan.script.length - 1] !== '2';\n\n // TODO: turn off kern (Khmer) and liga features.\n }\n\n static assignFeatures(plan, glyphs) {\n // Decompose split matras\n // TODO: do this in a more general unicode normalizer\n for (let i = glyphs.length - 1; i >= 0; i--) {\n let codepoint = glyphs[i].codePoints[0];\n let d = INDIC_DECOMPOSITIONS[codepoint] || decompositions[codepoint];\n if (d) {\n let decomposed = d.map(c => {\n let g = plan.font.glyphForCodePoint(c);\n return new GlyphInfo(plan.font, g.id, [c], glyphs[i].features);\n });\n\n glyphs.splice(i, 1, ...decomposed);\n }\n }\n }\n}\n\nfunction indicCategory(glyph) {\n return trie.get(glyph.codePoints[0]) >> 8;\n}\n\nfunction indicPosition(glyph) {\n return 1 << (trie.get(glyph.codePoints[0]) & 0xff);\n}\n\nclass IndicInfo {\n constructor(category, position, syllableType, syllable) {\n this.category = category;\n this.position = position;\n this.syllableType = syllableType;\n this.syllable = syllable;\n }\n}\n\nfunction setupSyllables(font, glyphs) {\n let syllable = 0;\n let last = 0;\n for (let [start, end, tags] of stateMachine.match(glyphs.map(indicCategory))) {\n if (start > last) {\n ++syllable;\n for (let i = last; i < start; i++) {\n glyphs[i].shaperInfo = new IndicInfo(CATEGORIES.X, POSITIONS.End, 'non_indic_cluster', syllable);\n }\n }\n\n ++syllable;\n\n // Create shaper info\n for (let i = start; i <= end; i++) {\n glyphs[i].shaperInfo = new IndicInfo(\n 1 << indicCategory(glyphs[i]),\n indicPosition(glyphs[i]),\n tags[0],\n syllable\n );\n }\n\n last = end + 1;\n }\n\n if (last < glyphs.length) {\n ++syllable;\n for (let i = last; i < glyphs.length; i++) {\n glyphs[i].shaperInfo = new IndicInfo(CATEGORIES.X, POSITIONS.End, 'non_indic_cluster', syllable);\n }\n }\n}\n\nfunction isConsonant(glyph) {\n return glyph.shaperInfo.category & CONSONANT_FLAGS;\n}\n\nfunction isJoiner(glyph) {\n return glyph.shaperInfo.category & JOINER_FLAGS;\n}\n\nfunction isHalantOrCoeng(glyph) {\n return glyph.shaperInfo.category & HALANT_OR_COENG_FLAGS;\n}\n\nfunction wouldSubstitute(glyphs, feature) {\n for (let glyph of glyphs) {\n glyph.features = {[feature]: true};\n }\n\n let GSUB = glyphs[0]._font._layoutEngine.engine.GSUBProcessor;\n GSUB.applyFeatures([feature], glyphs);\n\n return glyphs.length === 1;\n}\n\nfunction consonantPosition(font, consonant, virama) {\n let glyphs = [virama, consonant, virama];\n if (wouldSubstitute(glyphs.slice(0, 2), 'blwf') || wouldSubstitute(glyphs.slice(1, 3), 'blwf')) {\n return POSITIONS.Below_C;\n } else if (wouldSubstitute(glyphs.slice(0, 2), 'pstf') || wouldSubstitute(glyphs.slice(1, 3), 'pstf')) {\n return POSITIONS.Post_C;\n } else if (wouldSubstitute(glyphs.slice(0, 2), 'pref') || wouldSubstitute(glyphs.slice(1, 3), 'pref')) {\n return POSITIONS.Post_C;\n }\n\n return POSITIONS.Base_C;\n}\n\nfunction initialReordering(font, glyphs, plan) {\n let indicConfig = plan.indicConfig;\n let features = font._layoutEngine.engine.GSUBProcessor.features;\n\n let dottedCircle = font.glyphForCodePoint(0x25cc).id;\n let virama = font.glyphForCodePoint(indicConfig.virama).id;\n if (virama) {\n let info = new GlyphInfo(font, virama, [indicConfig.virama]);\n for (let i = 0; i < glyphs.length; i++) {\n if (glyphs[i].shaperInfo.position === POSITIONS.Base_C) {\n glyphs[i].shaperInfo.position = consonantPosition(font, glyphs[i].copy(), info);\n }\n }\n }\n\n for (let start = 0, end = nextSyllable(glyphs, 0); start < glyphs.length; start = end, end = nextSyllable(glyphs, start)) {\n let {category, syllableType} = glyphs[start].shaperInfo;\n\n if (syllableType === 'symbol_cluster' || syllableType === 'non_indic_cluster') {\n continue;\n }\n\n if (syllableType === 'broken_cluster' && dottedCircle) {\n let g = new GlyphInfo(font, dottedCircle, [0x25cc]);\n g.shaperInfo = new IndicInfo(\n 1 << indicCategory(g),\n indicPosition(g),\n glyphs[start].shaperInfo.syllableType,\n glyphs[start].shaperInfo.syllable\n );\n\n // Insert after possible Repha.\n let i = start;\n while (i < end && glyphs[i].shaperInfo.category === CATEGORIES.Repha) {\n i++;\n }\n\n glyphs.splice(i++, 0, g);\n end++;\n }\n\n // 1. Find base consonant:\n //\n // The shaping engine finds the base consonant of the syllable, using the\n // following algorithm: starting from the end of the syllable, move backwards\n // until a consonant is found that does not have a below-base or post-base\n // form (post-base forms have to follow below-base forms), or that is not a\n // pre-base reordering Ra, or arrive at the first consonant. The consonant\n // stopped at will be the base.\n\n let base = end;\n let limit = start;\n let hasReph = false;\n\n // If the syllable starts with Ra + Halant (in a script that has Reph)\n // and has more than one consonant, Ra is excluded from candidates for\n // base consonants.\n if (indicConfig.rephPos !== POSITIONS.Ra_To_Become_Reph &&\n features.rphf &&\n start + 3 <= end && (\n (indicConfig.rephMode === 'Implicit' && !isJoiner(glyphs[start + 2])) ||\n (indicConfig.rephMode === 'Explicit' && glyphs[start + 2].shaperInfo.category === CATEGORIES.ZWJ)\n )\n ) {\n // See if it matches the 'rphf' feature.\n let g = [glyphs[start].copy(), glyphs[start + 1].copy(), glyphs[start + 2].copy()];\n if (wouldSubstitute(g.slice(0, 2), 'rphf') || (indicConfig.rephMode === 'Explicit' && wouldSubstitute(g, 'rphf'))) {\n limit += 2;\n while (limit < end && isJoiner(glyphs[limit])) {\n limit++;\n }\n base = start;\n hasReph = true;\n }\n } else if (indicConfig.rephMode === 'Log_Repha' && glyphs[start].shaperInfo.category === CATEGORIES.Repha) {\n limit++;\n while (limit < end && isJoiner(glyphs[limit])) {\n limit++;\n }\n base = start;\n hasReph = true;\n }\n\n switch (indicConfig.basePos) {\n case 'Last': {\n // starting from the end of the syllable, move backwards\n let i = end;\n let seenBelow = false;\n\n do {\n let info = glyphs[--i].shaperInfo;\n\n // until a consonant is found\n if (isConsonant(glyphs[i])) {\n // that does not have a below-base or post-base form\n // (post-base forms have to follow below-base forms),\n if (info.position !== POSITIONS.Below_C && (info.position !== POSITIONS.Post_C || seenBelow)) {\n base = i;\n break;\n }\n\n // or that is not a pre-base reordering Ra,\n //\n // IMPLEMENTATION NOTES:\n //\n // Our pre-base reordering Ra's are marked POS_POST_C, so will be skipped\n // by the logic above already.\n //\n\n // or arrive at the first consonant. The consonant stopped at will\n // be the base.\n if (info.position === POSITIONS.Below_C) {\n seenBelow = true;\n }\n\n base = i;\n } else if (start < i && info.category === CATEGORIES.ZWJ && glyphs[i - 1].shaperInfo.category === CATEGORIES.H) {\n // A ZWJ after a Halant stops the base search, and requests an explicit\n // half form.\n // A ZWJ before a Halant, requests a subjoined form instead, and hence\n // search continues. This is particularly important for Bengali\n // sequence Ra,H,Ya that should form Ya-Phalaa by subjoining Ya.\n break;\n }\n } while (i > limit);\n break;
Showing 512.00 KB of 704.82 KB. Use Edit/Download for full content.
Directory Contents
Dirs: 0 × Files: 9