Add check for missing glyphs to featureVars (#2654)
* Add check for missing glyphs to featureVars
This commit is contained in:
parent
2aafbb5073
commit
d0020b2536
@ -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.
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user