otTables: make DeltaSetIndexMap TTX dump less verbose by omitting no-op entries

though we still emit the empty <Map index=.../> elements; they help identify chunks of delta-set indices, and define the length of the array upon loading from XML
This commit is contained in:
Cosimo Lupo 2022-06-14 17:01:21 +01:00
parent 0cbdc8536b
commit 676a66fad3
2 changed files with 30 additions and 18 deletions

View File

@ -600,6 +600,11 @@ class Coverage(FormatSwitchingBaseTable):
glyphs.append(attrs["value"])
# The special 0xFFFFFFFF delta-set index is used to indicate that there
# is no variation data in the ItemVariationStore for a given variable field
NO_VARIATION_INDEX = 0xFFFFFFFF
class DeltaSetIndexMap(getFormatSwitchingBaseTableClass("uint8")):
def populateDefaults(self, propagator=None):
@ -647,12 +652,19 @@ class DeltaSetIndexMap(getFormatSwitchingBaseTableClass("uint8")):
return rawTable
def toXML2(self, xmlWriter, font):
# Make xml dump less verbose, by omitting no-op entries like:
# <Map index="..." outer="65535" inner="65535"/>
xmlWriter.comment(
"Omitted values default to 0xFFFF/0xFFFF (no variations)"
)
xmlWriter.newline()
for i, value in enumerate(getattr(self, "mapping", [])):
attrs = (
('index', i),
('outer', value >> 16),
('inner', value & 0xFFFF),
)
attrs = [('index', i)]
if value != NO_VARIATION_INDEX:
attrs.extend([
('outer', value >> 16),
('inner', value & 0xFFFF),
])
xmlWriter.simpletag("Map", attrs)
xmlWriter.newline()
@ -661,8 +673,8 @@ class DeltaSetIndexMap(getFormatSwitchingBaseTableClass("uint8")):
if mapping is None:
self.mapping = mapping = []
index = safeEval(attrs['index'])
outer = safeEval(attrs['outer'])
inner = safeEval(attrs['inner'])
outer = safeEval(attrs.get('outer', '0xFFFF'))
inner = safeEval(attrs.get('inner', '0xFFFF'))
assert inner <= 0xFFFF
mapping.insert(index, (outer << 16) | inner)

View File

@ -532,17 +532,18 @@ COLR_V1_XML = [
COLR_V1_VAR_XML = [
'<VarIndexMap Format="0">',
' <Map index="0" outer="1" inner="1"/>',
' <Map index="1" outer="1" inner="0"/>',
' <Map index="2" outer="1" inner="0"/>',
' <Map index="3" outer="1" inner="1"/>',
' <Map index="4" outer="1" inner="0"/>',
' <Map index="5" outer="1" inner="0"/>',
' <!-- Omitted values default to 0xFFFF/0xFFFF (no variations) -->',
' <Map index="0" outer="1" inner="0"/>',
' <Map index="1"/>',
' <Map index="2"/>',
' <Map index="3" outer="1" inner="0"/>',
' <Map index="4"/>',
' <Map index="5"/>',
' <Map index="6" outer="0" inner="2"/>',
' <Map index="7" outer="0" inner="0"/>',
' <Map index="8" outer="0" inner="1"/>',
' <Map index="9" outer="1" inner="0"/>',
' <Map index="10" outer="1" inner="0"/>',
' <Map index="9"/>',
' <Map index="10"/>',
' <Map index="11" outer="0" inner="3"/>',
' <Map index="12" outer="0" inner="3"/>',
"</VarIndexMap>",
@ -571,12 +572,11 @@ COLR_V1_VAR_XML = [
' <Item index="3" value="[500]"/>',
" </VarData>",
' <VarData index="1">',
" <!-- ItemCount=2 -->",
" <!-- ItemCount=1 -->",
' <NumShorts value="32769"/>',
" <!-- VarRegionCount=1 -->",
' <VarRegionIndex index="0" value="0"/>',
' <Item index="0" value="[0]"/>',
' <Item index="1" value="[65536]"/>',
' <Item index="0" value="[65536]"/>',
" </VarData>",
"</VarStore>",
]