[_h_m_t_x] use tuple() instead of list() for metrics dict values
As suggested in https://github.com/fonttools/fonttools/pull/706#commitcomment-19429339
This commit is contained in:
parent
8a0172a562
commit
2300b9c168
@ -53,11 +53,11 @@ class table__h_m_t_x(DefaultTable.DefaultTable):
|
||||
"Glyph %r has a huge advance %s (%d); is it intentional or "
|
||||
"an (invalid) negative value?", glyphName, self.advanceName,
|
||||
advanceWidth)
|
||||
self.metrics[glyphName] = [advanceWidth, lsb]
|
||||
self.metrics[glyphName] = (advanceWidth, lsb)
|
||||
lastAdvance = metrics[-2]
|
||||
for i in range(numberOfSideBearings):
|
||||
glyphName = glyphOrder[i + numberOfMetrics]
|
||||
self.metrics[glyphName] = [lastAdvance, sideBearings[i]]
|
||||
self.metrics[glyphName] = (lastAdvance, sideBearings[i])
|
||||
|
||||
def compile(self, ttFont):
|
||||
metrics = []
|
||||
@ -117,8 +117,8 @@ class table__h_m_t_x(DefaultTable.DefaultTable):
|
||||
if not hasattr(self, "metrics"):
|
||||
self.metrics = {}
|
||||
if name == "mtx":
|
||||
self.metrics[attrs["name"]] = [safeEval(attrs[self.advanceName]),
|
||||
safeEval(attrs[self.sideBearingName])]
|
||||
self.metrics[attrs["name"]] = (safeEval(attrs[self.advanceName]),
|
||||
safeEval(attrs[self.sideBearingName]))
|
||||
|
||||
def __delitem__(self, glyphName):
|
||||
del self.metrics[glyphName]
|
||||
@ -127,4 +127,4 @@ class table__h_m_t_x(DefaultTable.DefaultTable):
|
||||
return self.metrics[glyphName]
|
||||
|
||||
def __setitem__(self, glyphName, advance_sb_pair):
|
||||
self.metrics[glyphName] = list(advance_sb_pair)
|
||||
self.metrics[glyphName] = tuple(advance_sb_pair)
|
||||
|
@ -43,9 +43,9 @@ class HmtxTableTest(unittest.TestCase):
|
||||
mtxTable = newTable(self.tag)
|
||||
mtxTable.decompile(data, font)
|
||||
|
||||
self.assertEqual(mtxTable['A'], [674, -11])
|
||||
self.assertEqual(mtxTable['B'], [632, 79])
|
||||
self.assertEqual(mtxTable['C'], [710, 54])
|
||||
self.assertEqual(mtxTable['A'], (674, -11))
|
||||
self.assertEqual(mtxTable['B'], (632, 79))
|
||||
self.assertEqual(mtxTable['C'], (710, 54))
|
||||
|
||||
def test_decompile_additional_SB(self):
|
||||
font = self.makeFont(numGlyphs=4, numberOfMetrics=2)
|
||||
@ -56,11 +56,11 @@ class HmtxTableTest(unittest.TestCase):
|
||||
mtxTable = newTable(self.tag)
|
||||
mtxTable.decompile(data, font)
|
||||
|
||||
self.assertEqual(mtxTable['A'], [674, -11])
|
||||
self.assertEqual(mtxTable['B'], [632, 79])
|
||||
self.assertEqual(mtxTable['A'], (674, -11))
|
||||
self.assertEqual(mtxTable['B'], (632, 79))
|
||||
# all following have same width as the previous
|
||||
self.assertEqual(mtxTable['C'], [632, 54])
|
||||
self.assertEqual(mtxTable['D'], [632, -4])
|
||||
self.assertEqual(mtxTable['C'], (632, 54))
|
||||
self.assertEqual(mtxTable['D'], (632, -4))
|
||||
|
||||
def test_decompile_not_enough_data(self):
|
||||
font = self.makeFont(numGlyphs=1, numberOfMetrics=1)
|
||||
@ -112,9 +112,9 @@ class HmtxTableTest(unittest.TestCase):
|
||||
font = self.makeFont(numGlyphs=3, numberOfMetrics=4)
|
||||
mtxTable = font[self.tag] = newTable(self.tag)
|
||||
mtxTable.metrics = {
|
||||
'A': [674, -11],
|
||||
'B': [632, 79],
|
||||
'C': [710, 54],
|
||||
'A': (674, -11),
|
||||
'B': (632, 79),
|
||||
'C': (710, 54),
|
||||
}
|
||||
|
||||
data = mtxTable.compile(font)
|
||||
@ -129,10 +129,10 @@ class HmtxTableTest(unittest.TestCase):
|
||||
font = self.makeFont(numGlyphs=4, numberOfMetrics=1)
|
||||
mtxTable = font[self.tag] = newTable(self.tag)
|
||||
mtxTable.metrics = {
|
||||
'A': [632, -11],
|
||||
'B': [632, 79],
|
||||
'C': [632, 54],
|
||||
'D': [632, -4],
|
||||
'A': (632, -11),
|
||||
'B': (632, 79),
|
||||
'C': (632, 54),
|
||||
'D': (632, -4),
|
||||
}
|
||||
|
||||
data = mtxTable.compile(font)
|
||||
@ -155,7 +155,7 @@ class HmtxTableTest(unittest.TestCase):
|
||||
def test_compile_struct_out_of_range(self):
|
||||
font = self.makeFont(numGlyphs=1, numberOfMetrics=1)
|
||||
mtxTable = font[self.tag] = newTable(self.tag)
|
||||
mtxTable.metrics = {'A': [0xFFFF+1, -0x8001]}
|
||||
mtxTable.metrics = {'A': (0xFFFF+1, -0x8001)}
|
||||
|
||||
with self.assertRaises(struct.error):
|
||||
mtxTable.compile(font)
|
||||
@ -163,7 +163,7 @@ class HmtxTableTest(unittest.TestCase):
|
||||
def test_toXML(self):
|
||||
font = self.makeFont(numGlyphs=2, numberOfMetrics=2)
|
||||
mtxTable = font[self.tag] = newTable(self.tag)
|
||||
mtxTable.metrics = {'B': [632, 79], 'A': [674, -11]}
|
||||
mtxTable.metrics = {'B': (632, 79), 'A': (674, -11)}
|
||||
|
||||
self.assertEqual(
|
||||
getXML(mtxTable.toXML),
|
||||
@ -183,11 +183,11 @@ class HmtxTableTest(unittest.TestCase):
|
||||
mtxTable.fromXML(name, attrs, content, ttFont=None)
|
||||
|
||||
self.assertEqual(
|
||||
mtxTable.metrics, {'A': [674, -11], 'B': [632, 79]})
|
||||
mtxTable.metrics, {'A': (674, -11), 'B': (632, 79)})
|
||||
|
||||
def test_delitem(self):
|
||||
mtxTable = newTable(self.tag)
|
||||
mtxTable.metrics = {'A': [0, 0]}
|
||||
mtxTable.metrics = {'A': (0, 0)}
|
||||
|
||||
del mtxTable['A']
|
||||
|
||||
@ -195,10 +195,10 @@ class HmtxTableTest(unittest.TestCase):
|
||||
|
||||
def test_setitem(self):
|
||||
mtxTable = newTable(self.tag)
|
||||
mtxTable.metrics = {'A': [674, -11], 'B': [632, 79]}
|
||||
mtxTable['B'] = (0, 0) # tuple is converted to list
|
||||
mtxTable.metrics = {'A': (674, -11), 'B': (632, 79)}
|
||||
mtxTable['B'] = [0, 0] # list is converted to tuple
|
||||
|
||||
self.assertEqual(mtxTable.metrics, {'A': [674, -11], 'B': [0, 0]})
|
||||
self.assertEqual(mtxTable.metrics, {'A': (674, -11), 'B': (0, 0)})
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
Loading…
x
Reference in New Issue
Block a user