[merge] Move tables out of merger object
diff --git a/Lib/fontTools/merge.py b/Lib/fontTools/merge.py
index 8ec145a..80d8e18 100644
--- a/Lib/fontTools/merge.py
+++ b/Lib/fontTools/merge.py
@@ -79,12 +79,12 @@
@_add_method(DefaultTable, allowDefaultTable=True)
-def merge(self, m):
+def merge(self, m, tables):
if not hasattr(self, 'mergeMap'):
m.log("Don't know how to merge '%s'." % self.tableTag)
return False
- m._mergeKeys(self, self.mergeMap)
+ m._mergeKeys(self, self.mergeMap, tables)
return True
ttLib.getTableClass('maxp').mergeMap = {
@@ -174,10 +174,10 @@
'extraNames': ignore,
}
@_add_method(ttLib.getTableClass('post'))
-def merge(self, m):
- DefaultTable.merge(self, m)
+def merge(self, m, tables):
+ DefaultTable.merge(self, m, tables)
self.mapping = {}
- for table in m.tables:
+ for table in tables:
if hasattr(table, 'mapping'):
self.mapping.update(table.mapping)
self.extraNames = []
@@ -200,8 +200,8 @@
}
@_add_method(ttLib.getTableClass('glyf'))
-def merge(self, m):
- for table in m.tables:
+def merge(self, m, tables):
+ for table in tables:
for g in table.glyphs.values():
# Drop hints for now, since we don't remap
# functions / CVT values.
@@ -210,7 +210,7 @@
# composite glyph names.
if g.isComposite():
g.expand(table)
- DefaultTable.merge(self, m)
+ DefaultTable.merge(self, m, tables)
return True
@_add_method(ttLib.getTableClass('prep'),
@@ -220,9 +220,9 @@
return False # TODO We don't merge hinting data currently.
@_add_method(ttLib.getTableClass('cmap'))
-def merge(self, m):
+def merge(self, m, tables):
# TODO Handle format=14.
- cmapTables = [t for table in m.tables for t in table.tables
+ cmapTables = [t for table in tables for t in table.tables
if t.platformID == 3 and t.platEncID in [1, 10]]
# TODO Better handle format-4 and format-12 coexisting in same font.
# TODO Insert both a format-4 and format-12 if needed.
@@ -243,14 +243,14 @@
return True
@_add_method(ttLib.getTableClass('GDEF'))
-def merge(self, m):
+def merge(self, m, tables):
self.table = otTables.GDEF()
self.table.Version = 1.0 # TODO version 1.2...
- if any(t.table.LigCaretList for t in m.tables):
+ if any(t.table.LigCaretList for t in tables):
glyphs = []
ligGlyphs = []
- for table in m.tables:
+ for table in tables:
if table.table.LigCaretList:
glyphs.extend(table.table.LigCaretList.Coverage.glyphs)
ligGlyphs.extend(table.table.LigCaretList.LigGlyph)
@@ -264,9 +264,9 @@
else:
self.table.LigCaretList = None
- if any(t.table.MarkAttachClassDef for t in m.tables):
+ if any(t.table.MarkAttachClassDef for t in tables):
classDefs = {}
- for table in m.tables:
+ for table in tables:
if table.table.MarkAttachClassDef:
classDefs.update(table.table.MarkAttachClassDef.classDefs)
self.table.MarkAttachClassDef = otTables.MarkAttachClassDef()
@@ -274,9 +274,9 @@
else:
self.table.MarkAttachClassDef = None
- if any(t.table.GlyphClassDef for t in m.tables):
+ if any(t.table.GlyphClassDef for t in tables):
classDefs = {}
- for table in m.tables:
+ for table in tables:
if table.table.GlyphClassDef:
classDefs.update(table.table.GlyphClassDef.classDefs)
self.table.GlyphClassDef = otTables.GlyphClassDef()
@@ -284,10 +284,10 @@
else:
self.table.GlyphClassDef = None
- if any(t.table.AttachList for t in m.tables):
+ if any(t.table.AttachList for t in tables):
glyphs = []
attachPoints = []
- for table in m.tables:
+ for table in tables:
if table.table.AttachList:
glyphs.extend(table.table.AttachList.Coverage.glyphs)
attachPoints.extend(table.table.AttachList.AttachPoint)
@@ -424,15 +424,14 @@
clazz = ttLib.getTableClass(tag)
# TODO For now assume all fonts have the same tables.
- self.tables = [font[tag] for font in fonts]
+ tables = [font[tag] for font in fonts]
table = clazz(tag)
- if table.merge (self):
+ if table.merge (self, tables):
mega[tag] = table
self.log("Merged '%s'." % tag)
else:
self.log("Dropped '%s'." % tag)
self.log.lapse("merge '%s'" % tag)
- del self.tables
return mega
@@ -450,8 +449,8 @@
mega.append(glyphName)
return mega
- def _mergeKeys(self, return_table, logic):
- allKeys = set.union(set(), *(vars(table).keys() for table in self.tables))
+ def _mergeKeys(self, return_table, logic, tables):
+ allKeys = set.union(set(), *(vars(table).keys() for table in tables))
for key in allKeys:
try:
merge_logic = logic[key]
@@ -462,7 +461,7 @@
raise Exception("Don't know how to merge key %s" % key)
if merge_logic == ignore:
continue
- key_value = merge_logic(getattr(table, key) for table in self.tables)
+ key_value = merge_logic(getattr(table, key) for table in tables)
setattr(return_table, key, key_value)