[subset] Subset Regions when subsetting VarStore

Part of https://github.com/fonttools/fonttools/issues/1179
This commit is contained in:
Behdad Esfahbod 2018-02-18 19:45:57 -08:00
parent d5c480aabd
commit e0f2848ef5

View File

@ -118,6 +118,10 @@ def VarStore_subset_varidxes(self, varIdxes, optimize=True):
d.add(minor)
del varIdxes
#
# Subset VarData
#
varData = self.VarData
newVarData = []
varDataMap = {}
@ -144,6 +148,28 @@ def VarStore_subset_varidxes(self, varIdxes, optimize=True):
self.VarData = newVarData
self.VarDataCount = len(self.VarData)
#
# Subset VarRegionList
#
# Collect.
usedRegions = set()
for data in self.VarData:
usedRegions.update(data.VarRegionIndex)
# Subset.
regionList = self.VarRegionList
regions = regionList.Region
newRegions = []
regionMap = {}
for i in sorted(usedRegions):
regionMap[i] = len(newRegions)
newRegions.append(regions[i])
regionList.Region = newRegions
regionList.RegionCount = len(regionList.Region)
# Map.
for data in self.VarData:
data.VarRegionIndex = [regionMap[i] for i in data.VarRegionIndex]
return varDataMap
@ -189,7 +215,7 @@ def pruneGDEF(font):
usedVarIdxes = set()
# Collect used items.
# Collect.
adder = partial(Device_recordVarIdx, s=usedVarIdxes)
visit(table, otTables.Device, adder)
if 'GSUB' in font: