diff --git a/Lib/fontTools/subset/__init__.py b/Lib/fontTools/subset/__init__.py index 8d196ac07..ebd99728f 100644 --- a/Lib/fontTools/subset/__init__.py +++ b/Lib/fontTools/subset/__init__.py @@ -1790,11 +1790,14 @@ def subset_glyphs(self, s): return bool(self.variations) def _remap_index_map(s, varidx_map, table_map): - map = {k:varidx_map[v] for k,v in table_map.mapping.items()} + map_ = {k:varidx_map[v] for k,v in table_map.mapping.items()} + # Emptied glyphs are remapped to: + # if GID <= last retained GID, 0/0: delta set for 0/0 is expected to exist & zeros compress well + # if GID > last retained GID, major/minor of the last retained glyph: will be optimized out by table compiler last_idx = varidx_map[table_map.mapping[s.last_retained_glyph]] for g,i in s.reverseEmptiedGlyphMap.items(): - map[g] = last_idx if i > s.last_retained_order else 0 - return map + map_[g] = last_idx if i > s.last_retained_order else 0 + return map_ @_add_method(ttLib.getTableClass('HVAR')) def subset_glyphs(self, s): diff --git a/Lib/fontTools/varLib/varStore.py b/Lib/fontTools/varLib/varStore.py index 64e227853..e6609a689 100644 --- a/Lib/fontTools/varLib/varStore.py +++ b/Lib/fontTools/varLib/varStore.py @@ -218,9 +218,8 @@ def VarStore_subset_varidxes(self, varIdxes, optimize=True, retainFirstMap=False items = data.Item newItems = [] if major == 0 and retainFirstMap: - zeros = [0] * len(items[0]) for minor in range(len(items)): - newItems.append(items[minor] if minor in usedMinors else zeros) + newItems.append(items[minor] if minor in usedMinors else [0] * len(items[minor])) varDataMap[minor] = minor else: for minor in sorted(usedMinors):