NameRecordVisitor: include whole sequence of UI labels for character variants, not just first

Fixes #3616
This commit is contained in:
Cosimo Lupo 2024-08-27 11:28:31 +01:00
parent 1938825851
commit 821f37329e
No known key found for this signature in database
GPG Key ID: DF65A8A5A119C9A8

View File

@ -1177,15 +1177,6 @@ class NameRecordVisitor(TTVisitor):
( (
(otTables.FeatureParamsSize, ("SubfamilyID", "SubfamilyNameID")), (otTables.FeatureParamsSize, ("SubfamilyID", "SubfamilyNameID")),
(otTables.FeatureParamsStylisticSet, ("UINameID",)), (otTables.FeatureParamsStylisticSet, ("UINameID",)),
(
otTables.FeatureParamsCharacterVariants,
(
"FeatUILabelNameID",
"FeatUITooltipTextNameID",
"SampleTextNameID",
"FirstParamUILabelNameID",
),
),
(otTables.STAT, ("ElidedFallbackNameID",)), (otTables.STAT, ("ElidedFallbackNameID",)),
(otTables.AxisRecord, ("AxisNameID",)), (otTables.AxisRecord, ("AxisNameID",)),
(otTables.AxisValue, ("ValueNameID",)), (otTables.AxisValue, ("ValueNameID",)),
@ -1197,6 +1188,19 @@ def visit(visitor, obj, attr, value):
visitor.seen.add(value) visitor.seen.add(value)
@NameRecordVisitor.register(otTables.FeatureParamsCharacterVariants)
def visit(visitor, obj):
for attr in ("FeatUILabelNameID", "FeatUITooltipTextNameID", "SampleTextNameID"):
value = getattr(obj, attr)
visitor.seen.add(value)
# also include the sequence of UI strings for individual variants, if any
if obj.FirstParamUILabelNameID == 0 or obj.NumNamedParameters == 0:
return
last_name_id = obj.FirstParamUILabelNameID + obj.NumNamedParameters - 1
if last_name_id >= 256 and last_namd_id <= 0x7FFF:
visitor.seen.update(range(obj.FirstParamUILabelNameID, last_name_id + 1))
@NameRecordVisitor.register(ttLib.getTableClass("fvar")) @NameRecordVisitor.register(ttLib.getTableClass("fvar"))
def visit(visitor, obj): def visit(visitor, obj):
for inst in obj.instances: for inst in obj.instances: