feaLib: Dedupe multiple substitutions with classes

This commit is contained in:
David Corbett 2023-05-13 13:24:58 -04:00
parent 54e70b3cef
commit 8b69b9412e

View File

@ -1272,15 +1272,18 @@ class MultipleSubstStatement(Statement):
replaces.append(replace) replaces.append(replace)
replaces = list(zip(*replaces)) replaces = list(zip(*replaces))
seen_originals = set()
for i, original in enumerate(originals): for i, original in enumerate(originals):
builder.add_multiple_subst( if original not in seen_originals:
self.location, seen_originals.add(original)
prefix, builder.add_multiple_subst(
original, self.location,
suffix, prefix,
replaces and replaces[i] or (), original,
self.forceChain, suffix,
) replaces and replaces[i] or (),
self.forceChain,
)
def asFea(self, indent=""): def asFea(self, indent=""):
res = "sub " res = "sub "