Merge pull request #1719 from m4rc1e/name-remove

[name] add removeName method to table__n_a_m_e
This commit is contained in:
Cosimo Lupo 2019-09-11 14:53:11 +02:00 committed by GitHub
commit 7dd510b3b8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 58 additions and 0 deletions

View File

@ -147,6 +147,31 @@ class table__n_a_m_e(DefaultTable.DefaultTable):
else:
self.names.append(makeName(string, nameID, platformID, platEncID, langID))
def removeNames(self, nameID=None, platformID=None, platEncID=None, langID=None):
"""Remove any name records identified by 'nameID', 'platformID', 'platEncID'
or 'langID'.
"""
args = {
argName: argValue
for argName, argValue in (
("nameID", nameID),
("platformID", platformID),
("platEncID", platEncID),
("langID", langID),
)
if argValue is not None
}
if not args:
# no arguments, nothing to do
return
self.names = [
rec for rec in self.names
if any(
argValue != getattr(rec, argName)
for argName, argValue in args.items()
)
]
def _findUnusedNameID(self, minNameID=256):
"""Finds an unused name id.

0
Tests/otlLib/__init__.py Normal file
View File

View File

@ -75,6 +75,39 @@ class NameTableTest(unittest.TestCase):
with self.assertRaises(TypeError):
table.addName(b"abc") # must be unicode string
def test_removeNames(self):
table = table__n_a_m_e()
table.setName("Regular", 2, 1, 0, 0)
table.setName("Regular", 2, 3, 1, 0x409)
table.removeNames(nameID=2)
self.assertEqual(table.names, [])
table = table__n_a_m_e()
table.setName("FamilyName", 1, 1, 0, 0)
table.setName("Regular", 2, 1, 0, 0)
table.setName("FamilyName", 1, 3, 1, 0x409)
table.setName("Regular", 2, 3, 1, 0x409)
table.removeNames(platformID=1)
self.assertEqual(len(table.names), 2)
table = table__n_a_m_e()
table.setName("FamilyName", 1, 1, 0, 0)
table.setName("Regular", 2, 1, 0, 0)
table.removeNames(nameID=1)
self.assertEqual(len(table.names), 1)
table = table__n_a_m_e()
table.setName("FamilyName", 1, 1, 0, 0)
table.setName("Regular", 2, 1, 0, 0)
table.removeNames(2, 1, 0, 0)
self.assertEqual(len(table.names), 1)
table = table__n_a_m_e()
table.setName("FamilyName", 1, 1, 0, 0)
table.setName("Regular", 2, 1, 0, 0)
table.removeNames()
self.assertEqual(len(table.names), 2)
def test_addMultilingualName(self):
# Microsoft Windows has language codes for “English” (en)
# and for “Standard German as used in Switzerland” (de-CH).