[subset] Retain cmap table even if empty
Since it's a required table.
diff --git a/Lib/fontTools/subset.py b/Lib/fontTools/subset.py
index 1702a87..a621749 100644
--- a/Lib/fontTools/subset.py
+++ b/Lib/fontTools/subset.py
@@ -1100,12 +1100,16 @@
self.kernTables = [t for t in self.kernTables if t.kernTable]
return bool(self.kernTables)
-@_add_method(ttLib.getTableClass('vmtx'),
- ttLib.getTableClass('hmtx'))
+@_add_method(ttLib.getTableClass('vmtx'))
def subset_glyphs(self, s):
self.metrics = dict((g,v) for g,v in self.metrics.iteritems() if g in s.glyphs)
return bool(self.metrics)
+@_add_method(ttLib.getTableClass('hmtx'))
+def subset_glyphs(self, s):
+ self.metrics = dict((g,v) for g,v in self.metrics.iteritems() if g in s.glyphs)
+ return True # Required table
+
@_add_method(ttLib.getTableClass('hdmx'))
def subset_glyphs(self, s):
self.hdmx = dict((sz,dict((g,v) for g,v in l.iteritems() if g in s.glyphs))
@@ -1123,12 +1127,12 @@
def prune_pre_subset(self, options):
if not options.glyph_names:
self.formatType = 3.0
- return True
+ return True # Required table
@_add_method(ttLib.getTableClass('post'))
def subset_glyphs(self, s):
self.extraNames = [] # This seems to do it
- return True
+ return True # Required table
@_add_method(ttLib.getTableModule('glyf').Glyph)
def remapComponentsFast(self, indices):
@@ -1597,7 +1601,7 @@
# For now, drop format=0 which can't be subset_glyphs easily?
self.tables = [t for t in self.tables if t.format != 0]
self.numSubTables = len(self.tables)
- return bool(self.tables)
+ return True # Required table
@_add_method(ttLib.getTableClass('cmap'))
def subset_glyphs(self, s):
@@ -1624,7 +1628,7 @@
# In particular, if we have a format=12 without non-BMP
# characters, either drop format=12 one or convert it
# to format=4 if there's not one.
- return bool(self.tables)
+ return True # Required table
@_add_method(ttLib.getTableClass('name'))
def prune_pre_subset(self, options):
@@ -1635,7 +1639,7 @@
if n.platformID == 3 and n.platEncID == 1]
if '*' not in options.name_languages:
self.names = [n for n in self.names if n.langID in options.name_languages]
- return True # Retain even if empty
+ return True # Required table
# TODO(behdad) OS/2 ulUnicodeRange / ulCodePageRange?