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:
parent
0cbdc8536b
commit
676a66fad3
@ -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)
|
||||
|
||||
|
@ -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>",
|
||||
]
|
||||
|
Loading…
x
Reference in New Issue
Block a user