{"version":3,"sources":["webpack:///./node_modules/lib-font/src/opentype/tables/simple/name.js"],"names":["name","constructor","dict","dataview","p","super","this","format","uint16","count","stringOffset","Offset16","nameRecords","Array","map","_","NameRecord","langTagCount","langTagRecords","LangTagRecord","stringStart","tableStart","get","nameID","record","find","string","length","offset","nameTable","platformID","encodingID","languageID","currentPosition","str","i","e","String","fromCharCode","join","bytes","readBytes","forEach","b","decodeString"],"mappings":"2FAAA,oEASA,MAAMA,UAAa,IACjBC,YAAYC,EAAMC,GAChB,MACEC,EADaC,MAAMH,EAAMC,GACdC,EACbE,KAAKC,OAASH,EAAEI,OAChBF,KAAKG,MAAQL,EAAEI,OACfF,KAAKI,aAAeN,EAAEO,SAGtBL,KAAKM,YAAc,IAAI,IAAIC,MAAMP,KAAKG,QAAQK,KAAIC,GAAK,IAAIC,EAAWZ,EAAGE,QAGrD,IAAhBA,KAAKC,SACPD,KAAKW,aAAeb,EAAEI,OACtBF,KAAKY,eAAiB,IAAI,IAAIL,MAAMP,KAAKW,eAAeH,KAAIC,GAAK,IAAII,EAAcf,EAAEI,OAAQJ,EAAEO,aAIjGL,KAAKc,YAAcd,KAAKe,WAAaf,KAAKI,YAC5C,CAMAY,IAAIC,GACF,IAAIC,EAASlB,KAAKM,YAAYa,MAAKD,GAAUA,EAAOD,SAAWA,IAC/D,GAAIC,EAAQ,OAAOA,EAAOE,MAC5B,EAMF,MAAMP,EACJlB,YAAY0B,EAAQC,GAClBtB,KAAKqB,OAASA,EACdrB,KAAKsB,OAASA,CAChB,EAMF,MAAMZ,EACJf,YAAYG,EAAGyB,GACbvB,KAAKwB,WAAa1B,EAAEI,OACpBF,KAAKyB,WAAa3B,EAAEI,OACpBF,KAAK0B,WAAa5B,EAAEI,OACpBF,KAAKiB,OAASnB,EAAEI,OAChBF,KAAKqB,OAASvB,EAAEI,OAChBF,KAAKsB,OAASxB,EAAEO,SAChB,YAAKL,KAAM,UAAU,KACnBF,EAAE6B,gBAAkBJ,EAAUT,YAAcd,KAAKsB,OAUvD,SAAsBxB,EAAGoB,GACvB,MAAMM,EAAaN,EAAOM,WACxBH,EAASH,EAAOG,OAClB,GAAe,IAAXA,EAAc,MAAO,GAGzB,GAAmB,IAAfG,GAAmC,IAAfA,EAAkB,CACxC,MAAMI,EAAM,GACZ,IAAK,IAAIC,EAAI,EAAGC,EAAIT,EAAS,EAAGQ,EAAIC,EAAGD,IAAKD,EAAIC,GAAKE,OAAOC,aAAalC,EAAEI,QAC3E,OAAO0B,EAAIK,KAAK,GAClB,CAGA,MAAMC,EAAQpC,EAAEqC,UAAUd,GACpBO,EAAM,GAIZ,OAHAM,EAAME,SAAQ,SAAUC,EAAGR,GACzBD,EAAIC,GAAKE,OAAOC,aAAaK,EAC/B,IACOT,EAAIK,KAAK,GAGlB,CA9BaK,CAAaxC,EAAGE,QAE3B,E","file":"js/26-c8b4b3472a7e754fe6a5.chunk.js","sourcesContent":["import { Parser } from \"../../../parser.js\";\nimport { SimpleTable } from \"../simple-table.js\";\nimport lazy from \"../../../lazy.js\";\n\n/**\n * The OpenType `name` table.\n *\n * See https://docs.microsoft.com/en-us/typography/opentype/spec/name\n */\nclass name extends SimpleTable {\n constructor(dict, dataview) {\n const _super = super(dict, dataview),\n p = _super.p;\n this.format = p.uint16;\n this.count = p.uint16;\n this.stringOffset = p.Offset16; // relative to start of table\n\n // name records\n this.nameRecords = [...new Array(this.count)].map(_ => new NameRecord(p, this));\n\n // lang-tag records, if applicable\n if (this.format === 1) {\n this.langTagCount = p.uint16;\n this.langTagRecords = [...new Array(this.langTagCount)].map(_ => new LangTagRecord(p.uint16, p.Offset16));\n }\n\n // cache these values for use in `.get(nameID)`\n this.stringStart = this.tableStart + this.stringOffset;\n }\n\n /**\n * Resolve a string by ID\n * @param {uint16} nameID the id used to find the name record to resolve.\n */\n get(nameID) {\n let record = this.nameRecords.find(record => record.nameID === nameID);\n if (record) return record.string;\n }\n}\n\n/**\n * ...docs go here...\n */\nclass LangTagRecord {\n constructor(length, offset) {\n this.length = length;\n this.offset = offset;\n }\n}\n\n/**\n * ...docs go here...\n */\nclass NameRecord {\n constructor(p, nameTable) {\n this.platformID = p.uint16;\n this.encodingID = p.uint16;\n this.languageID = p.uint16;\n this.nameID = p.uint16;\n this.length = p.uint16;\n this.offset = p.Offset16;\n lazy(this, `string`, () => {\n p.currentPosition = nameTable.stringStart + this.offset;\n return decodeString(p, this);\n });\n }\n}\n\n/**\n * Specific platforms and platform/encoding combinations encode strings in\n * different ways.\n */\nfunction decodeString(p, record) {\n const platformID = record.platformID,\n length = record.length;\n if (length === 0) return ``;\n\n // We decode strings for the Unicode/Microsoft platforms as UTF-16\n if (platformID === 0 || platformID === 3) {\n const str = [];\n for (let i = 0, e = length / 2; i < e; i++) str[i] = String.fromCharCode(p.uint16);\n return str.join(``);\n }\n\n // Everything else, we treat as plain bytes.\n const bytes = p.readBytes(length);\n const str = [];\n bytes.forEach(function (b, i) {\n str[i] = String.fromCharCode(b);\n });\n return str.join(``);\n\n // TODO: if someone wants to finesse this/implement all the other string encodings, have at it!\n}\n\nexport { name };"],"sourceRoot":""}