From 695140728a153c02a92f2ce7e1c548f4e2ee1cd5 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sun, 19 Apr 2020 11:17:36 +0200 Subject: [PATCH] [src/core/fonts.js] Improve the `validateOS2Table` function Rather than creating a new `Stream` just to validate the OS/2 TrueType table, it's simpler/better to just pass in a reference to the font data and use that instead (similar to other TrueType helper functions). --- src/core/fonts.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/core/fonts.js b/src/core/fonts.js index 73f82ac18..4aa4183fe 100644 --- a/src/core/fonts.js +++ b/src/core/fonts.js @@ -1063,23 +1063,23 @@ var Font = (function FontClosure() { ); } - function validateOS2Table(os2) { - var stream = new Stream(os2.data); - var version = stream.getUint16(); + function validateOS2Table(os2, file) { + file.pos = (file.start || 0) + os2.offset; + var version = file.getUint16(); // TODO verify all OS/2 tables fields, but currently we validate only those // that give us issues - stream.skip(60); // skipping type, misc sizes, panose, unicode ranges - var selection = stream.getUint16(); + file.skip(60); // skipping type, misc sizes, panose, unicode ranges + var selection = file.getUint16(); if (version < 4 && selection & 0x0300) { return false; } - var firstChar = stream.getUint16(); - var lastChar = stream.getUint16(); + var firstChar = file.getUint16(); + var lastChar = file.getUint16(); if (firstChar > lastChar) { return false; } - stream.skip(6); // skipping sTypoAscender/Descender/LineGap - var usWinAscent = stream.getUint16(); + file.skip(6); // skipping sTypoAscender/Descender/LineGap + var usWinAscent = file.getUint16(); if (usWinAscent === 0) { // makes font unreadable by windows return false; @@ -2916,7 +2916,7 @@ var Font = (function FontClosure() { data: createCmapTable(newMapping.charCodeToGlyphId, numGlyphsOut), }; - if (!tables["OS/2"] || !validateOS2Table(tables["OS/2"])) { + if (!tables["OS/2"] || !validateOS2Table(tables["OS/2"], font)) { tables["OS/2"] = { tag: "OS/2", data: createOS2Table(