From b45fcf0fd6300d8f00cf6998e31fac729b93a613 Mon Sep 17 00:00:00 2001 From: Bo Song Date: Mon, 27 Feb 2017 11:34:48 -0800 Subject: [PATCH] Change gasp merge logic to 'first' (#862) * change gasp merge logic to first * fix typo * add comment * fix typo --- Lib/fontTools/merge.py | 7 +------ Tests/merge_test.py | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 6 deletions(-) diff --git a/Lib/fontTools/merge.py b/Lib/fontTools/merge.py index 9014fb883..56a8c8409 100644 --- a/Lib/fontTools/merge.py +++ b/Lib/fontTools/merge.py @@ -316,12 +316,6 @@ ttLib.getTableClass('vmtx').mergeMap = ttLib.getTableClass('hmtx').mergeMap = { 'metrics': sumDicts, } -ttLib.getTableClass('gasp').mergeMap = { - 'tableTag': equal, - 'version': max, - 'gaspRange': first, # FIXME? Appears irreconcilable -} - ttLib.getTableClass('name').mergeMap = { 'tableTag': equal, '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('fpgm').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')) def merge(self, m, tables): diff --git a/Tests/merge_test.py b/Tests/merge_test.py index 88d9b3b70..00e719b8c 100644 --- a/Tests/merge_test.py +++ b/Tests/merge_test.py @@ -8,6 +8,41 @@ class MergeIntegrationTest(unittest.TestCase): # TODO 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): def setUp(self): self.merger = Merger()