From edf8891fba54015c5d37a6397b7b95f14dfe5662 Mon Sep 17 00:00:00 2001 From: Marc Foley Date: Tue, 27 Jun 2023 15:23:56 +0100 Subject: [PATCH] Use NameRecordVisitor in subsetter --- Lib/fontTools/subset/__init__.py | 29 ++++---------------------- Lib/fontTools/ttLib/tables/_n_a_m_e.py | 7 ++++--- 2 files changed, 8 insertions(+), 28 deletions(-) diff --git a/Lib/fontTools/subset/__init__.py b/Lib/fontTools/subset/__init__.py index 7f08709ef..23bb9a81b 100644 --- a/Lib/fontTools/subset/__init__.py +++ b/Lib/fontTools/subset/__init__.py @@ -15,6 +15,7 @@ from fontTools.subset.util import _add_method, _uniq_sort from fontTools.subset.cff import * from fontTools.subset.svg import * from fontTools.varLib import varStore # for subset_varidxes +from fontTools.ttLib.tables._n_a_m_e import NameRecordVisitor import sys import struct import array @@ -2916,31 +2917,9 @@ def prune_pre_subset(self, font, options): @_add_method(ttLib.getTableClass("name")) def prune_pre_subset(self, font, options): - nameIDs = set(options.name_IDs) - fvar = font.get("fvar") - if fvar: - nameIDs.update([axis.axisNameID for axis in fvar.axes]) - nameIDs.update([inst.subfamilyNameID for inst in fvar.instances]) - nameIDs.update( - [ - inst.postscriptNameID - for inst in fvar.instances - if inst.postscriptNameID != 0xFFFF - ] - ) - stat = font.get("STAT") - if stat: - if stat.table.AxisValueArray: - nameIDs.update( - [val_rec.ValueNameID for val_rec in stat.table.AxisValueArray.AxisValue] - ) - nameIDs.update( - [axis_rec.AxisNameID for axis_rec in stat.table.DesignAxisRecord.Axis] - ) - cpal = font.get("CPAL") - if cpal and cpal.version == 1: - nameIDs.update(cpal.paletteLabels) - nameIDs.update(cpal.paletteEntryLabels) + visitor = NameRecordVisitor() + visitor.visit(font) + nameIDs = set(options.name_IDs) | visitor.seen if "*" not in options.name_IDs: self.names = [n for n in self.names if n.nameID in nameIDs] if not options.name_legacy: diff --git a/Lib/fontTools/ttLib/tables/_n_a_m_e.py b/Lib/fontTools/ttLib/tables/_n_a_m_e.py index 8afb7ab2d..8721bc584 100644 --- a/Lib/fontTools/ttLib/tables/_n_a_m_e.py +++ b/Lib/fontTools/ttLib/tables/_n_a_m_e.py @@ -1198,7 +1198,8 @@ def visit(visitor, obj, attr, value): @NameRecordVisitor.register(ttLib.getTableClass("fvar")) def visit(visitor, obj): for inst in obj.instances: - visitor.seen.add(inst.postscriptNameID) + if inst.postscriptNameID != 0xFFFF: + visitor.seen.add(inst.postscriptNameID) visitor.seen.add(inst.subfamilyNameID) for axis in obj.axes: @@ -1207,6 +1208,6 @@ def visit(visitor, obj): @NameRecordVisitor.register(ttLib.getTableClass("CPAL")) def visit(visitor, obj): - for nameID in obj.paletteLabels: - if nameID != C_P_A_L_.table_C_P_A_L_.NO_NAME_ID: + for nameID in obj.paletteLabels + obj.paletteEntryLabels: + if obj.version == 1: visitor.seen.add(nameID)