[subset] Fix pruning of empty rulesets in (Chain)ContextFormat1
Similar to 98b60757ab9bb0aaa3c1f136e5a837a1b73d22ed and the recent commits for Format2.
This commit is contained in:
parent
a7cd151e14
commit
d15afe9231
@ -643,7 +643,8 @@ def subset_glyphs(self, s):
|
||||
if self.Format == 1:
|
||||
indices = self.Coverage.subset(s.glyphs)
|
||||
rss = getattr(self, c.RuleSet)
|
||||
rss = [rss[i] for i in indices]
|
||||
rssCount = getattr(self, c.RuleSetCount)
|
||||
rss = [rss[i] for i in indices if i < rssCount]
|
||||
for rs in rss:
|
||||
if not rs: continue
|
||||
ss = getattr(rs, c.Rule)
|
||||
@ -652,8 +653,10 @@ def subset_glyphs(self, s):
|
||||
for glist in c.RuleData(r))]
|
||||
setattr(rs, c.Rule, ss)
|
||||
setattr(rs, c.RuleCount, len(ss))
|
||||
# Prune empty subrulesets
|
||||
rss = [rs for rs in rss if rs and getattr(rs, c.Rule)]
|
||||
# Prune empty rulesets
|
||||
indices = [i for i,rs in enumerate(rss) if rs and getattr(rs, c.Rule)]
|
||||
self.Coverage.remap(indices)
|
||||
rss = [rss[i] for i in indices]
|
||||
setattr(self, c.RuleSet, rss)
|
||||
setattr(self, c.RuleSetCount, len(rss))
|
||||
return bool(rss)
|
||||
@ -687,7 +690,7 @@ def subset_glyphs(self, s):
|
||||
c.SetRuleData(r, [[klass_map.index(k) for k in klist]
|
||||
for klass_map,klist in zip(klass_maps, c.RuleData(r))])
|
||||
|
||||
# Prune empty subrulesets
|
||||
# Prune empty rulesets
|
||||
rss = [rs if rs and getattr(rs, c.Rule) else None for rs in rss]
|
||||
while rss and rss[-1] is None:
|
||||
del rss[-1]
|
||||
|
Loading…
x
Reference in New Issue
Block a user