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)
|
# >>> f.save(dstPath)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
_checkSubstitutionGlyphsExist(
|
||||||
|
glyphNames=set(font.getGlyphOrder()),
|
||||||
|
substitutions=conditionalSubstitutions,
|
||||||
|
)
|
||||||
|
|
||||||
substitutions = overlayFeatureVariations(conditionalSubstitutions)
|
substitutions = overlayFeatureVariations(conditionalSubstitutions)
|
||||||
|
|
||||||
@ -66,6 +70,18 @@ def addFeatureVariations(font, conditionalSubstitutions, featureTag='rvrn'):
|
|||||||
conditionsAndLookups,
|
conditionsAndLookups,
|
||||||
featureTag)
|
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):
|
def overlayFeatureVariations(conditionalSubstitutions):
|
||||||
"""Compute overlaps between all conditional substitutions.
|
"""Compute overlaps between all conditional substitutions.
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user