Add check for missing glyphs to featureVars (#2654)

* Add check for missing glyphs to featureVars
This commit is contained in:
Jens Kutilek 2022-06-17 15:24:54 +02:00 committed by GitHub
parent 2aafbb5073
commit d0020b2536
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -44,6 +44,10 @@ def addFeatureVariations(font, conditionalSubstitutions, featureTag='rvrn'):
# >>> f.save(dstPath)
"""
_checkSubstitutionGlyphsExist(
glyphNames=set(font.getGlyphOrder()),
substitutions=conditionalSubstitutions,
)
substitutions = overlayFeatureVariations(conditionalSubstitutions)
@ -66,6 +70,18 @@ def addFeatureVariations(font, conditionalSubstitutions, featureTag='rvrn'):
conditionsAndLookups,
featureTag)
def _checkSubstitutionGlyphsExist(glyphNames, substitutions):
referencedGlyphNames = set()
for _, substitution in substitutions:
referencedGlyphNames |= substitution.keys()
referencedGlyphNames |= set(substitution.values())
missing = referencedGlyphNames - glyphNames
if missing:
raise VarLibValidationError(
"Missing glyphs are referenced in conditional substitution rules:"
f" {', '.join(missing)}"
)
def overlayFeatureVariations(conditionalSubstitutions):
"""Compute overlaps between all conditional substitutions.