Change gasp merge logic to 'first' (#862)

* change gasp merge logic to first

* fix typo

* add comment

* fix typo
This commit is contained in:
Bo Song 2017-02-27 11:34:48 -08:00 committed by Cosimo Lupo
parent c131bd93f6
commit b45fcf0fd6
2 changed files with 36 additions and 6 deletions

View File

@ -316,12 +316,6 @@ ttLib.getTableClass('vmtx').mergeMap = ttLib.getTableClass('hmtx').mergeMap = {
'metrics': sumDicts, 'metrics': sumDicts,
} }
ttLib.getTableClass('gasp').mergeMap = {
'tableTag': equal,
'version': max,
'gaspRange': first, # FIXME? Appears irreconcilable
}
ttLib.getTableClass('name').mergeMap = { ttLib.getTableClass('name').mergeMap = {
'tableTag': equal, 'tableTag': equal,
'names': first, # FIXME? Does mixing name records make sense? 'names': first, # FIXME? Does mixing name records make sense?
@ -355,6 +349,7 @@ def merge(self, m, tables):
ttLib.getTableClass('prep').mergeMap = lambda self, lst: first(lst) ttLib.getTableClass('prep').mergeMap = lambda self, lst: first(lst)
ttLib.getTableClass('fpgm').mergeMap = lambda self, lst: first(lst) ttLib.getTableClass('fpgm').mergeMap = lambda self, lst: first(lst)
ttLib.getTableClass('cvt ').mergeMap = lambda self, lst: first(lst) ttLib.getTableClass('cvt ').mergeMap = lambda self, lst: first(lst)
ttLib.getTableClass('gasp').mergeMap = lambda self, lst: first(lst) # FIXME? Appears irreconcilable
@_add_method(ttLib.getTableClass('cmap')) @_add_method(ttLib.getTableClass('cmap'))
def merge(self, m, tables): def merge(self, m, tables):

View File

@ -8,6 +8,41 @@ class MergeIntegrationTest(unittest.TestCase):
# TODO # TODO
pass pass
class gaspMergeUnitTest(unittest.TestCase):
def setUp(self):
self.merger = Merger()
self.table1 = ttLib.newTable('gasp')
self.table1.version = 1
self.table1.gaspRange = {
0x8: 0xA ,
0x10: 0x5,
}
self.table2 = ttLib.newTable('gasp')
self.table2.version = 1
self.table2.gaspRange = {
0x6: 0xB ,
0xFF: 0x4,
}
self.result = ttLib.newTable('gasp')
def test_gasp_merge_basic(self):
result = self.result.merge(self.merger, [self.table1, self.table2])
self.assertEqual(result, self.table1)
result = self.result.merge(self.merger, [self.table2, self.table1])
self.assertEqual(result, self.table2)
def test_gasp_merge_notImplemented(self):
result = self.result.merge(self.merger, [NotImplemented, self.table1])
self.assertEqual(result, NotImplemented)
result = self.result.merge(self.merger, [self.table1, NotImplemented])
self.assertEqual(result, self.table1)
class CmapMergeUnitTest(unittest.TestCase): class CmapMergeUnitTest(unittest.TestCase):
def setUp(self): def setUp(self):
self.merger = Merger() self.merger = Merger()