From 0a5a64609e13afa2beca19465be6b1c9d6318dc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ju=CC=88rg=20Lehni?= Date: Tue, 5 Dec 2023 19:46:33 +0100 Subject: [PATCH] Treat nameID 2 and 17 both as name record and font-feature record --- src/tables/name.js | 39 +++++++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/src/tables/name.js b/src/tables/name.js index c2e1976e..434da42a 100644 --- a/src/tables/name.js +++ b/src/tables/name.js @@ -72,7 +72,8 @@ const NAMES = [ ]; NameTable.process = function (stream) { - var records = {}; + let records = {}; + for (let record of this.records) { // find out what language this is for let language = LANGUAGES[record.platformID][record.languageID]; @@ -94,20 +95,30 @@ NameTable.process = function (stream) { record.nameID >= 256 ? 'fontFeatures' : NAMES[record.nameID] || record.nameID; - if (records[key] == null) { - records[key] = {}; - } - - let obj = records[key]; - if (record.nameID >= 256) { - obj = obj[record.nameID] || (obj[record.nameID] = {}); - } - if ( - typeof record.string === 'string' || - typeof obj[language] !== 'string' - ) { - obj[language] = record.string; + let addRecord = (key, record) => { + if (records[key] == null) { + records[key] = {}; + } + + let obj = records[key]; + if (key === 'fontFeatures') { + obj = obj[record.nameID] || (obj[record.nameID] = {}); + } + + if ( + typeof record.string === 'string' || + typeof obj[language] !== 'string' + ) { + obj[language] = record.string; + } + }; + + addRecord(key, record); + + // if the nameID is 2 or 17, it may also be a font feature record (AAT). + if (record.nameID == 2 || record.nameID == 17) { + addRecord('fontFeatures', record); } }