Implement mac-platform roman-encoding language-specific name table encodings
Part of https://github.com/behdad/fonttools/issues/236
This commit is contained in:
parent
a310df0848
commit
a2d063c840
@ -92,6 +92,7 @@ class table__n_a_m_e(DefaultTable.DefaultTable):
|
|||||||
|
|
||||||
class NameRecord(object):
|
class NameRecord(object):
|
||||||
|
|
||||||
|
# Map keyed by platformID, then platEncID, then possibly langID
|
||||||
_encodingMap = {
|
_encodingMap = {
|
||||||
0: { # Unicode
|
0: { # Unicode
|
||||||
0: 'utf-16be',
|
0: 'utf-16be',
|
||||||
@ -105,7 +106,22 @@ class NameRecord(object):
|
|||||||
1: { # Macintosh
|
1: { # Macintosh
|
||||||
# See
|
# See
|
||||||
# https://github.com/behdad/fonttools/issues/236
|
# https://github.com/behdad/fonttools/issues/236
|
||||||
0: 'macroman',
|
0: { # Macintosh, platEncID==0, keyed by langID
|
||||||
|
15: "mac-iceland",
|
||||||
|
17: "mac-turkish",
|
||||||
|
18: None,
|
||||||
|
24: "mac-latin2",
|
||||||
|
25: "mac-latin2",
|
||||||
|
26: "mac-latin2",
|
||||||
|
27: "mac-latin2",
|
||||||
|
28: "mac-latin2",
|
||||||
|
36: "mac-latin2",
|
||||||
|
37: None,
|
||||||
|
38: "mac-latin2",
|
||||||
|
39: "mac-latin2",
|
||||||
|
40: "mac-latin2",
|
||||||
|
Ellipsis: 'mac-roman', # Other
|
||||||
|
},
|
||||||
1: 'shift-jis',
|
1: 'shift-jis',
|
||||||
2: 'big5',
|
2: 'big5',
|
||||||
3: 'euc-kr',
|
3: 'euc-kr',
|
||||||
@ -134,7 +150,10 @@ class NameRecord(object):
|
|||||||
}
|
}
|
||||||
|
|
||||||
def getEncoding(self):
|
def getEncoding(self):
|
||||||
return self._encodingMap.get(self.platformID, {}).get(self.platEncID, None)
|
encoding = self._encodingMap.get(self.platformID, {}).get(self.platEncID, None)
|
||||||
|
if isinstance(encoding, dict):
|
||||||
|
encoding = encoding.get(self.langID, encoding[Ellipsis])
|
||||||
|
return encoding
|
||||||
|
|
||||||
def encodingIsUnicodeCompatible(self):
|
def encodingIsUnicodeCompatible(self):
|
||||||
return self.getEncoding() in ['utf-16be', 'ucs2be', 'ascii', 'latin1']
|
return self.getEncoding() in ['utf-16be', 'ucs2be', 'ascii', 'latin1']
|
||||||
|
@ -42,6 +42,14 @@ class NameRecordTest(unittest.TestCase):
|
|||||||
'</namerecord>'
|
'</namerecord>'
|
||||||
], self.toXML(name))
|
], self.toXML(name))
|
||||||
|
|
||||||
|
def test_encoding_macroman_misc(self):
|
||||||
|
name = NameRecord()
|
||||||
|
name.nameID, name.platformID, name.platEncID, name.langID = (123, 1, 0, 17)
|
||||||
|
self.assertEqual(name.getEncoding(), "mac-turkish")
|
||||||
|
name.langID = 37
|
||||||
|
self.assertEqual(name.getEncoding(), None)
|
||||||
|
name.langID = 45
|
||||||
|
self.assertEqual(name.getEncoding(), "mac-roman")
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user