From 4de9ffcdd5e2619d29a4a62f642f0b49e79b91df Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Wed, 15 Dec 2021 20:53:29 -0700 Subject: [PATCH] [merge] Move CFF.desubroutinize to proper place --- Lib/fontTools/merge.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Lib/fontTools/merge.py b/Lib/fontTools/merge.py index 5a1d5e342..8075e4368 100644 --- a/Lib/fontTools/merge.py +++ b/Lib/fontTools/merge.py @@ -374,25 +374,32 @@ ttLib.getTableClass('gasp').mergeMap = lambda self, lst: first(lst) # FIXME? App @_add_method(ttLib.getTableClass('CFF ')) def merge(self, m, tables): + if any(hasattr(table, "FDSelect") for table in tables): raise NotImplementedError( "Merging CID-keyed CFF tables is not supported yet" ) + for table in tables: + table.cff.desubroutinize() + newcff = tables[0] newfont = newcff.cff[0] private = newfont.Private storedNamesStrings = [] glyphOrderStrings = [] glyphOrder = set(newfont.getGlyphOrder()) + for name in newfont.strings.strings: if name not in glyphOrder: storedNamesStrings.append(name) else: glyphOrderStrings.append(name) + chrset = list(newfont.charset) newcs = newfont.CharStrings log.debug("FONT 0 CharStrings: %d.", len(newcs)) + for i, table in enumerate(tables[1:], start=1): font = table.cff[0] font.Private = private @@ -1064,7 +1071,6 @@ class Merger(object): cffTables = [None] * len(fonts) if sfntVersion == "OTTO": for i, font in enumerate(fonts): - font['CFF '].cff.desubroutinize() cffTables[i] = font['CFF '] # Reload fonts and set new glyph names on them.