Merge pull request #2526 from moontypespace/mod_get_current_family_name
Extend name table with more general functions
This commit is contained in:
commit
8a139f921c
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,44 @@ class table__n_a_m_e(DefaultTable.DefaultTable):
|
|||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
def getFirstDebugName(self, nameIDs):
|
||||||
|
for nameID in nameIDs:
|
||||||
|
name = self.getDebugName(nameID)
|
||||||
|
if name is not None:
|
||||||
|
return name
|
||||||
|
return None
|
||||||
|
|
||||||
|
def getBestFamilyName(self):
|
||||||
|
# 21 = WWS Family Name
|
||||||
|
# 16 = Typographic Family Name
|
||||||
|
# 1 = Family Name
|
||||||
|
return self.getFirstDebugName((21, 16, 1))
|
||||||
|
|
||||||
|
def getBestSubFamilyName(self):
|
||||||
|
# 22 = WWS SubFamily Name
|
||||||
|
# 17 = Typographic SubFamily Name
|
||||||
|
# 2 = SubFamily Name
|
||||||
|
return self.getFirstDebugName((22, 17, 2))
|
||||||
|
|
||||||
|
def getBestFullName(self):
|
||||||
|
# 4 = Full Name
|
||||||
|
# 6 = PostScript Name
|
||||||
|
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 is 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
|
||||||
|
@ -248,7 +248,7 @@ Simon Daniels, Peter Dekkers, Behdad Esfahbod, Behnam Esfahbod, Hannes
|
|||||||
Famira, Sam Fishman, Matt Fontaine, Takaaki Fuji, Yannis Haralambous, Greg
|
Famira, Sam Fishman, Matt Fontaine, Takaaki Fuji, Yannis Haralambous, Greg
|
||||||
Hitchcock, Jeremie Hornus, Khaled Hosny, John Hudson, Denis Moyogo Jacquerye,
|
Hitchcock, Jeremie Hornus, Khaled Hosny, John Hudson, Denis Moyogo Jacquerye,
|
||||||
Jack Jansen, Tom Kacvinsky, Jens Kutilek, Antoine Leca, Werner Lemberg, Tal
|
Jack Jansen, Tom Kacvinsky, Jens Kutilek, Antoine Leca, Werner Lemberg, Tal
|
||||||
Leming, Peter Lofting, Cosimo Lupo, Masaya Nakamura, Dave Opstad,
|
Leming, Peter Lofting, Cosimo Lupo, Olli Meier, Masaya Nakamura, Dave Opstad,
|
||||||
Laurence Penney, Roozbeh Pournader, Garret Rieger, Read Roberts, Guido
|
Laurence Penney, Roozbeh Pournader, Garret Rieger, Read Roberts, Guido
|
||||||
van Rossum, Just van Rossum, Andreas Seidel, Georg Seifert, Chris
|
van Rossum, Just van Rossum, Andreas Seidel, Georg Seifert, Chris
|
||||||
Simpkins, Miguel Sousa, Adam Twardoch, Adrien Tétar, Vitaly Volkov,
|
Simpkins, Miguel Sousa, Adam Twardoch, Adrien Tétar, Vitaly Volkov,
|
||||||
|
@ -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.getBestFamilyName()
|
||||||
|
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.getBestFamilyName()
|
||||||
|
self.assertEqual(expected_value, result_value)
|
||||||
|
|
||||||
|
expected_value = "Family Name ID 21"
|
||||||
|
name.setName(expected_value, 21, 1, 0, 0)
|
||||||
|
result_value = name.getBestFamilyName()
|
||||||
|
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.getBestSubFamilyName()
|
||||||
|
self.assertEqual("SubFamily Name ID 2", result_value)
|
||||||
|
|
||||||
|
expected_value = "Family Name ID 17"
|
||||||
|
name.setName(expected_value, 17, 1, 0, 0)
|
||||||
|
result_value = name.getBestSubFamilyName()
|
||||||
|
self.assertEqual(expected_value, result_value)
|
||||||
|
|
||||||
|
expected_value = "Family Name ID 22"
|
||||||
|
name.setName(expected_value, 22, 1, 0, 0)
|
||||||
|
result_value = name.getBestSubFamilyName()
|
||||||
|
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.getBestFullName()
|
||||||
|
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.getBestFullName()
|
||||||
|
self.assertEqual(expected_value, result_value)
|
||||||
|
|
||||||
|
name.setName('NID 17', 17, 1, 0, 0)
|
||||||
|
result_value = name.getBestFullName()
|
||||||
|
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.getBestFullName()
|
||||||
|
self.assertEqual(expected_value, result_value)
|
||||||
|
|
||||||
|
name.setName('NID 22', 22, 1, 0, 0)
|
||||||
|
result_value = name.getBestFullName()
|
||||||
|
self.assertEqual("NID 21 NID 22", result_value)
|
||||||
|
|
||||||
|
for NID in [2, 16, 17, 21, 22]:
|
||||||
|
name.removeNames(NID)
|
||||||
|
|
||||||
|
result_value = name.getBestFullName()
|
||||||
|
self.assertEqual("NID 4", result_value)
|
||||||
|
|
||||||
|
name.setName('Regular', 2, 1, 0, 0)
|
||||||
|
result_value = name.getBestFullName()
|
||||||
|
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