font-asserts.js (1437B)
1 'use strict'; 2 3 function assert_font_equals(actualFont, expectedFont) { 4 assert_equals( 5 actualFont.postscriptName, expectedFont.postscriptName, 6 `${actualFont.postscriptName}: postscriptName should match`); 7 assert_equals( 8 actualFont.fullName, expectedFont.fullName, 9 `${actualFont.postscriptName}: fullName should match`); 10 assert_equals( 11 actualFont.family, expectedFont.family, 12 `${actualFont.postscriptName}: family should match`); 13 assert_equals( 14 actualFont.style, expectedFont.style, 15 `${actualFont.postscriptName}: style should match`); 16 } 17 18 function assert_font_has_tables(fontName, actualTables, expectedTables) { 19 for (const expectedTable of expectedTables) { 20 assert_equals( 21 expectedTable.length, 4, 'Table names are always 4 characters long.'); 22 assert_true( 23 actualTables.has(expectedTable), 24 `Font ${fontName} did not have required table ${expectedTable}.`); 25 assert_greater_than( 26 actualTables.get(expectedTable).size, 0, 27 `Font ${fontName} has table ${expectedTable} of size 0.`); 28 } 29 } 30 31 function assert_version_info(versionTag) { 32 // Spec: https://docs.microsoft.com/en-us/typography/opentype/spec/otff#organization-of-an-opentype-font 33 assert_true(versionTag === '\x00\x01\x00\x00' || 34 versionTag === 'true' || 35 versionTag === 'typ1' || 36 versionTag === 'OTTO', 37 `Invalid sfnt version tag: ${versionTag}`); 38 }