Skip to content

Commit

Permalink
cff: Fix private DICT processing
Browse files Browse the repository at this point in the history
[why]
Tests (would) fail with FDArrayTest257.otf

[how]
Some sanity checks have been ommited, add them in and process the
structures only if there is anything.

Signed-off-by: Fini Jastrow <[email protected]>
  • Loading branch information
Finii authored and Connum committed Sep 9, 2024
1 parent 08c751e commit aabf3b8
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/tables/cff.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -491,7 +491,7 @@ function gatherCFFTopDicts(data, start, cffIndex, strings, version) {
const privateDict = parseCFFPrivateDict(data, privateOffset + start, privateSize, strings, version);
topDict._defaultWidthX = privateDict.defaultWidthX;
topDict._nominalWidthX = privateDict.nominalWidthX;
if (privateDict.subrs !== 0) {
if (privateDict.subrs !== null && privateDict.subrs !== 0) {
const subrOffset = privateOffset + privateDict.subrs;
const subrIndex = parseCFFIndex(data, subrOffset + start, undefined, version);
topDict._subrs = subrIndex.objects;
Expand Down Expand Up @@ -1282,7 +1282,7 @@ function parseCFFTable(data, start, font, opt) {
topDict._fdSelect = parseCFFFDSelect(data, fdSelectOffset, font.numGlyphs, fdArray.length, header.formatMajor);
}

if (header.formatMajor < 2) {
if (header.formatMajor < 2 && topDict.private[0] !== 0) {
const privateDictOffset = start + topDict.private[1];
const privateDict = parseCFFPrivateDict(data, privateDictOffset, topDict.private[0], stringIndex.objects, header.formatMajor);
font.defaultWidthX = privateDict.defaultWidthX;
Expand Down

0 comments on commit aabf3b8

Please sign in to comment.