extend name table with getFamilyName, getSubFamilyName and getNiceFullName + unittests
This commit is contained in:
parent
31ba5e6b24
commit
c50f38ed0e
1
.gitignore
vendored
1
.gitignore
vendored
@ -14,6 +14,7 @@ dist/
|
|||||||
*.egg-info/
|
*.egg-info/
|
||||||
*.egg
|
*.egg
|
||||||
MANIFEST
|
MANIFEST
|
||||||
|
.idea
|
||||||
|
|
||||||
# Installer logs
|
# Installer logs
|
||||||
pip-log.txt
|
pip-log.txt
|
||||||
|
@ -120,6 +120,37 @@ class table__n_a_m_e(DefaultTable.DefaultTable):
|
|||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
def getFamilyName(self):
|
||||||
|
for nameID in (21, 16, 1):
|
||||||
|
name = self.getDebugName(nameID)
|
||||||
|
if name is not None:
|
||||||
|
return name
|
||||||
|
return None
|
||||||
|
|
||||||
|
def getSubFamilyName(self):
|
||||||
|
for nameID in (22, 17, 2):
|
||||||
|
name = self.getDebugName(nameID)
|
||||||
|
if name is not None:
|
||||||
|
return name
|
||||||
|
return None
|
||||||
|
|
||||||
|
def getNiceFullName(self):
|
||||||
|
for nameIDs in ((21, 22), (16, 17), (1, 2), (4, ), (6, )):
|
||||||
|
if len(nameIDs) == 2:
|
||||||
|
name_fam = self.getDebugName(nameIDs[0])
|
||||||
|
name_subfam = self.getDebugName(nameIDs[1])
|
||||||
|
if None in [name_fam, name_subfam]:
|
||||||
|
continue # if any if None, skip
|
||||||
|
name = f"{name_fam} {name_subfam}"
|
||||||
|
if name_subfam.lower() == 'regular':
|
||||||
|
name = f"{name_fam}"
|
||||||
|
return name
|
||||||
|
else:
|
||||||
|
name = self.getDebugName(nameIDs[0])
|
||||||
|
if name is not None:
|
||||||
|
return name
|
||||||
|
return None
|
||||||
|
|
||||||
def setName(self, string, nameID, platformID, platEncID, langID):
|
def setName(self, string, nameID, platformID, platEncID, langID):
|
||||||
""" Set the 'string' for the name record identified by 'nameID', 'platformID',
|
""" Set the 'string' for the name record identified by 'nameID', 'platformID',
|
||||||
'platEncID' and 'langID'. If a record with that nameID doesn't exist, create it
|
'platEncID' and 'langID'. If a record with that nameID doesn't exist, create it
|
||||||
|
50
Tests/Snippets/rename-fonts_test.py
Normal file
50
Tests/Snippets/rename-fonts_test.py
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
# coding=utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
This test is for checking function within rename-fonts
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
import unittest
|
||||||
|
from fontTools.misc.testTools import FakeFont
|
||||||
|
from fontTools.ttLib.tables._n_a_m_e import (table__n_a_m_e, NameRecord, nameRecordFormat, nameRecordSize, makeName, log)
|
||||||
|
from fonttools.Snippets.rename-fonts import get_current_family_name
|
||||||
|
|
||||||
|
|
||||||
|
class RenameFontsTest(unittest.TestCase):
|
||||||
|
@classmethod
|
||||||
|
def setUp(self):
|
||||||
|
self.font = FakeFont(['.nodef', 'A', 'B', 'C'])
|
||||||
|
name = table__n_a_m_e()
|
||||||
|
name.names = [
|
||||||
|
makeName("Copyright", 0, 1, 0, 0),
|
||||||
|
makeName("Family Name ID 1", 1, 1, 0, 0),
|
||||||
|
makeName("SubFamily Name ID 2", 2, 1, 0, 0),
|
||||||
|
makeName("Unique Name ID 3", 3, 1, 0, 0),
|
||||||
|
makeName("Full Name ID 4", 4, 1, 0, 0),
|
||||||
|
makeName("PS Name ID 6", 6, 1, 0, 0),
|
||||||
|
makeName("Version Name ID 5", 5, 1, 0, 0),
|
||||||
|
makeName("Trademark Name ID 7", 7, 1, 0, 0),
|
||||||
|
]
|
||||||
|
|
||||||
|
self.font['name'] = name
|
||||||
|
|
||||||
|
def test_get_current_family_name(self):
|
||||||
|
|
||||||
|
result_value = get_current_family_name(self.font['name'])
|
||||||
|
self.assertEqual("Family Name ID 1", result_value)
|
||||||
|
|
||||||
|
expected_value = "Family Name ID 16"
|
||||||
|
self.font['name'].setName(expected_value, 16, 1, 0, 0)
|
||||||
|
result_value = get_current_family_name(self.font['name'])
|
||||||
|
self.assertEqual(expected_value, result_value)
|
||||||
|
|
||||||
|
expected_value = "Family Name ID 21"
|
||||||
|
self.font['name'].setName(expected_value, 21, 1, 0, 0)
|
||||||
|
result_value = get_current_family_name(self.font['name'])
|
||||||
|
self.assertEqual(expected_value, result_value)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
import sys
|
||||||
|
sys.exit(unittest.main())
|
@ -450,6 +450,103 @@ class NameRecordTest(unittest.TestCase):
|
|||||||
self.assertEqual(name.getEncoding(None), None)
|
self.assertEqual(name.getEncoding(None), None)
|
||||||
self.assertEqual(name.getEncoding(default=None), None)
|
self.assertEqual(name.getEncoding(default=None), None)
|
||||||
|
|
||||||
|
def test_get_family_name(self):
|
||||||
|
name = table__n_a_m_e()
|
||||||
|
name.names = [
|
||||||
|
makeName("Copyright", 0, 1, 0, 0),
|
||||||
|
makeName("Family Name ID 1", 1, 1, 0, 0),
|
||||||
|
makeName("SubFamily Name ID 2", 2, 1, 0, 0),
|
||||||
|
makeName("Unique Name ID 3", 3, 1, 0, 0),
|
||||||
|
makeName("Full Name ID 4", 4, 1, 0, 0),
|
||||||
|
makeName("PS Name ID 6", 6, 1, 0, 0),
|
||||||
|
makeName("Version Name ID 5", 5, 1, 0, 0),
|
||||||
|
makeName("Trademark Name ID 7", 7, 1, 0, 0),
|
||||||
|
]
|
||||||
|
|
||||||
|
result_value = name.getFamilyName()
|
||||||
|
self.assertEqual("Family Name ID 1", result_value)
|
||||||
|
|
||||||
|
expected_value = "Family Name ID 16"
|
||||||
|
name.setName(expected_value, 16, 1, 0, 0)
|
||||||
|
result_value = name.getFamilyName()
|
||||||
|
self.assertEqual(expected_value, result_value)
|
||||||
|
|
||||||
|
expected_value = "Family Name ID 21"
|
||||||
|
name.setName(expected_value, 21, 1, 0, 0)
|
||||||
|
result_value = name.getFamilyName()
|
||||||
|
self.assertEqual(expected_value, result_value)
|
||||||
|
|
||||||
|
def test_get_subfamily_name(self):
|
||||||
|
name = table__n_a_m_e()
|
||||||
|
name.names = [
|
||||||
|
makeName("Copyright", 0, 1, 0, 0),
|
||||||
|
makeName("Family Name ID 1", 1, 1, 0, 0),
|
||||||
|
makeName("SubFamily Name ID 2", 2, 1, 0, 0),
|
||||||
|
makeName("Unique Name ID 3", 3, 1, 0, 0),
|
||||||
|
makeName("Full Name ID 4", 4, 1, 0, 0),
|
||||||
|
makeName("PS Name ID 6", 6, 1, 0, 0),
|
||||||
|
makeName("Version Name ID 5", 5, 1, 0, 0),
|
||||||
|
makeName("Trademark Name ID 7", 7, 1, 0, 0),
|
||||||
|
]
|
||||||
|
|
||||||
|
result_value = name.getSubFamilyName()
|
||||||
|
self.assertEqual("Family Name ID 2", result_value)
|
||||||
|
|
||||||
|
expected_value = "Family Name ID 17"
|
||||||
|
name.setName(expected_value, 16, 1, 0, 0)
|
||||||
|
result_value = name.getSubFamilyName()
|
||||||
|
self.assertEqual(expected_value, result_value)
|
||||||
|
|
||||||
|
expected_value = "Family Name ID 22"
|
||||||
|
name.setName(expected_value, 21, 1, 0, 0)
|
||||||
|
result_value = name.getSubFamilyName()
|
||||||
|
self.assertEqual(expected_value, result_value)
|
||||||
|
|
||||||
|
def test_get_nice_full_name(self):
|
||||||
|
name = table__n_a_m_e()
|
||||||
|
name.names = [
|
||||||
|
makeName("NID 1", 1, 1, 0, 0),
|
||||||
|
makeName("NID 2", 2, 1, 0, 0),
|
||||||
|
makeName("NID 4", 4, 1, 0, 0),
|
||||||
|
makeName("NID 6", 6, 1, 0, 0),
|
||||||
|
]
|
||||||
|
|
||||||
|
result_value = name.getNiceFullName()
|
||||||
|
self.assertEqual("NID 1 NID 2", result_value)
|
||||||
|
|
||||||
|
expected_value = "NID 1 NID 2"
|
||||||
|
# expection is still NID 1 NID 2,
|
||||||
|
# because name ID 17 is missing
|
||||||
|
name.setName("NID 16", 16, 1, 0, 0)
|
||||||
|
result_value = name.getNiceFullName()
|
||||||
|
self.assertEqual(expected_value, result_value)
|
||||||
|
|
||||||
|
name.setName('NID 17', 17, 1, 0, 0)
|
||||||
|
result_value = name.getNiceFullName()
|
||||||
|
self.assertEqual("NID 16 NID 17", result_value)
|
||||||
|
|
||||||
|
expected_value = "NID 16 NID 17"
|
||||||
|
# expection is still NID 16 NID 17,
|
||||||
|
# because name ID 21 is missing
|
||||||
|
name.setName('NID 21', 21, 1, 0, 0)
|
||||||
|
result_value = name.getNiceFullName()
|
||||||
|
self.assertEqual(expected_value, result_value)
|
||||||
|
|
||||||
|
name.setName('NID 22', 22, 1, 0, 0)
|
||||||
|
result_value = name.getNiceFullName()
|
||||||
|
self.assertEqual("NID 21 NID 22", result_value)
|
||||||
|
|
||||||
|
for NID in [2, 16, 17, 21, 22]:
|
||||||
|
name.removeNames(NID)
|
||||||
|
|
||||||
|
result_value = name.getNiceFullName()
|
||||||
|
self.assertEqual("NID 4", result_value)
|
||||||
|
|
||||||
|
name.setName('Regular', 2, 1, 0, 0)
|
||||||
|
result_value = name.getNiceFullName()
|
||||||
|
self.assertEqual("NID 1", result_value)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
import sys
|
import sys
|
||||||
sys.exit(unittest.main())
|
sys.exit(unittest.main())
|
||||||
|
Loading…
x
Reference in New Issue
Block a user