From b1d381a2608a7cd32d295a92e7ab808bfa94309a Mon Sep 17 00:00:00 2001 From: Matt LaGrandeur Date: Thu, 29 Aug 2024 15:44:22 -0700 Subject: [PATCH] Added tests for new name table entries Test now checks for defaults for `postScriptName` and also `uniqueID` Generating a `uniqueID` now provides a fallback empty string if no `manufacturer` exists. --- src/tables/sfnt.mjs | 3 ++- test/tables/sfnt.spec.mjs | 16 +++++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/tables/sfnt.mjs b/src/tables/sfnt.mjs index 3cfafd23..6e526f64 100644 --- a/src/tables/sfnt.mjs +++ b/src/tables/sfnt.mjs @@ -297,7 +297,8 @@ function fontToSfntTable(font) { names[platform] = names[platform] || {}; if (!names[platform].uniqueID) { - names[platform].uniqueID = {en: font.getEnglishName('manufacturer') + ':' + englishFullName}; + const manufacturer = font.getEnglishName('manufacturer') || ''; + names[platform].uniqueID = { en: `${manufacturer}: ${englishFullName}` }; } if (!names[platform].postScriptName) { diff --git a/test/tables/sfnt.spec.mjs b/test/tables/sfnt.spec.mjs index 0c4d9110..a6acd8e5 100644 --- a/test/tables/sfnt.spec.mjs +++ b/test/tables/sfnt.spec.mjs @@ -1,7 +1,7 @@ import assert from 'assert'; import Font from '../../src/font.mjs'; -import sfnt from '../../src/tables/sfnt.mjs'; import name from '../../src/tables/name.mjs'; +import sfnt from '../../src/tables/sfnt.mjs'; import { encode } from '../../src/types.mjs'; function encodeAndParseTable(table, parser) { @@ -60,7 +60,8 @@ describe('tables/sfnt.mjs', function () { license: { en: ' ' }, licenseURL: { en: ' ' }, preferredFamily: { en: defaultFont.familyName }, // 'MyFont' - preferredSubfamily: { en: defaultFont.styleName } // 'Medium' + preferredSubfamily: { en: defaultFont.styleName }, // 'Medium' + uniqueID: { en: ` : ${defaultFont.familyName} ${defaultFont.styleName}` }, }, windows: { copyright: { en: ' ' }, @@ -78,7 +79,8 @@ describe('tables/sfnt.mjs', function () { license: { en: ' ' }, licenseURL: { en: ' ' }, preferredFamily: { en: defaultFont.familyName }, // 'MyFont' - preferredSubfamily: { en: defaultFont.styleName } // 'Medium' + preferredSubfamily: { en: defaultFont.styleName }, // 'Medium' + uniqueID: { en: ` : ${defaultFont.familyName} ${defaultFont.styleName}` }, } }); }); @@ -121,7 +123,9 @@ describe('tables/sfnt.mjs', function () { fullName: { en: fullName }, version: { en: version }, preferredFamily: { en: preferredFamily }, - preferredSubfamily: { en: preferredSubfamily} + preferredSubfamily: { en: preferredSubfamily }, + postScriptName: { en: `${fontFamily.replaceAll(' ', '')}-${fontSubfamily}` }, + uniqueID: { en: `: ${fontFamily} ${fontSubfamily}` }, }, windows: { fontFamily: { en: fontFamily }, @@ -129,7 +133,9 @@ describe('tables/sfnt.mjs', function () { fullName: { en: fullName }, version: { en: version }, preferredFamily: { en: preferredFamily }, - preferredSubfamily: { en: preferredSubfamily} + preferredSubfamily: { en: preferredSubfamily}, + postScriptName: { en: `${fontFamily.replaceAll(' ', '')}-${fontSubfamily}` }, + uniqueID: { en: `: ${fontFamily} ${fontSubfamily}` }, } }); });