[AAT] Do not prune AATLookup values
Before this change, the decoder would silently remove "redundant" values when decompiling AAT lookups. However, it is perfectly valid for a lookup to map a glyph ID to itself, and also not all AAT lookups have glyph IDs as their value range.
This commit is contained in:
parent
8b4f0bb1e4
commit
228550a1d2
@ -565,18 +565,16 @@ class AATLookup(BaseConverter):
|
||||
def read(self, reader, font, tableDict):
|
||||
format = reader.readUShort()
|
||||
conv = self.tableClass(name='Value', repeat=None, aux=None)
|
||||
# TODO: Do not prune the results.
|
||||
prune = lambda x: {k:v for k,v in x.items() if k != v}
|
||||
if format == 0:
|
||||
return prune(self.readFormat0(reader, font, conv))
|
||||
return self.readFormat0(reader, font, conv)
|
||||
elif format == 2:
|
||||
return prune(self.readFormat2(reader, font, conv))
|
||||
return self.readFormat2(reader, font, conv)
|
||||
elif format == 4:
|
||||
return prune(self.readFormat4(reader, font, conv))
|
||||
return self.readFormat4(reader, font, conv)
|
||||
elif format == 6:
|
||||
return prune(self.readFormat6(reader, font, conv))
|
||||
return self.readFormat6(reader, font, conv)
|
||||
elif format == 8:
|
||||
return prune(self.readFormat8(reader, font, conv))
|
||||
return self.readFormat8(reader, font, conv)
|
||||
else:
|
||||
assert False, "unsupported lookup format: %d" % format
|
||||
|
||||
|
@ -189,6 +189,9 @@ class AATLookupTest(unittest.TestCase):
|
||||
def test_readFormat0(self):
|
||||
reader = OTTableReader(deHexStr("0000 0000 0001 0002 0000 7D00 0001"))
|
||||
self.assertEqual(self.converter.read(reader, self.font, None), {
|
||||
".notdef": ".notdef",
|
||||
"A": "A",
|
||||
"B": "B",
|
||||
"C": ".notdef",
|
||||
"D": "glyph32000",
|
||||
"E": "A"
|
||||
|
Loading…
x
Reference in New Issue
Block a user