// The `ltag` table stores IETF BCP-47 language tags. It allows supporting // languages for which TrueType does not assign a numeric code. // https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6ltag.html // http://www.w3.org/International/articles/language-tags/ // http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry import check from '../check'; import parse from '../parse'; function parseLtagTable(data, start) { const p = new parse.Parser(data, start); const tableVersion = p.parseULong(); check.argument(tableVersion === 1, 'Unsupported ltag table version.'); // The 'ltag' specification does not define any flags; skip the field. p.skip('uLong', 1); const numTags = p.parseULong(); const tags = []; for (let i = 0; i < numTags; i++) { let tag = ''; const offset = start + p.parseUShort(); const length = p.parseUShort(); for (let j = offset; j < offset + length; ++j) { tag += String.fromCharCode(data.getInt8(j)); } tags.push(tag); } return tags; } export default { parse: parseLtagTable };