Add Roman Croatian and Romanian encodings

Concludes https://github.com/behdad/fonttools/issues/236
This commit is contained in:
Behdad Esfahbod 2015-04-16 18:24:07 -07:00
parent 6d7f3bf840
commit 6e01a6e350
4 changed files with 286 additions and 6 deletions

View File

@ -67,7 +67,272 @@ class ExtendCodec(codecs.Codec):
def info(self):
return codecs.CodecInfo(name=self.name, encode=self.encode, decode=self.decode)
_mac_croatian_mapping = {
b"\x80": unichr(0x00C4), # LATIN CAPITAL LETTER A WITH DIAERESIS
b"\x81": unichr(0x00C5), # LATIN CAPITAL LETTER A WITH RING ABOVE
b"\x82": unichr(0x00C7), # LATIN CAPITAL LETTER C WITH CEDILLA
b"\x83": unichr(0x00C9), # LATIN CAPITAL LETTER E WITH ACUTE
b"\x84": unichr(0x00D1), # LATIN CAPITAL LETTER N WITH TILDE
b"\x85": unichr(0x00D6), # LATIN CAPITAL LETTER O WITH DIAERESIS
b"\x86": unichr(0x00DC), # LATIN CAPITAL LETTER U WITH DIAERESIS
b"\x87": unichr(0x00E1), # LATIN SMALL LETTER A WITH ACUTE
b"\x88": unichr(0x00E0), # LATIN SMALL LETTER A WITH GRAVE
b"\x89": unichr(0x00E2), # LATIN SMALL LETTER A WITH CIRCUMFLEX
b"\x8A": unichr(0x00E4), # LATIN SMALL LETTER A WITH DIAERESIS
b"\x8B": unichr(0x00E3), # LATIN SMALL LETTER A WITH TILDE
b"\x8C": unichr(0x00E5), # LATIN SMALL LETTER A WITH RING ABOVE
b"\x8D": unichr(0x00E7), # LATIN SMALL LETTER C WITH CEDILLA
b"\x8E": unichr(0x00E9), # LATIN SMALL LETTER E WITH ACUTE
b"\x8F": unichr(0x00E8), # LATIN SMALL LETTER E WITH GRAVE
b"\x90": unichr(0x00EA), # LATIN SMALL LETTER E WITH CIRCUMFLEX
b"\x91": unichr(0x00EB), # LATIN SMALL LETTER E WITH DIAERESIS
b"\x92": unichr(0x00ED), # LATIN SMALL LETTER I WITH ACUTE
b"\x93": unichr(0x00EC), # LATIN SMALL LETTER I WITH GRAVE
b"\x94": unichr(0x00EE), # LATIN SMALL LETTER I WITH CIRCUMFLEX
b"\x95": unichr(0x00EF), # LATIN SMALL LETTER I WITH DIAERESIS
b"\x96": unichr(0x00F1), # LATIN SMALL LETTER N WITH TILDE
b"\x97": unichr(0x00F3), # LATIN SMALL LETTER O WITH ACUTE
b"\x98": unichr(0x00F2), # LATIN SMALL LETTER O WITH GRAVE
b"\x99": unichr(0x00F4), # LATIN SMALL LETTER O WITH CIRCUMFLEX
b"\x9A": unichr(0x00F6), # LATIN SMALL LETTER O WITH DIAERESIS
b"\x9B": unichr(0x00F5), # LATIN SMALL LETTER O WITH TILDE
b"\x9C": unichr(0x00FA), # LATIN SMALL LETTER U WITH ACUTE
b"\x9D": unichr(0x00F9), # LATIN SMALL LETTER U WITH GRAVE
b"\x9E": unichr(0x00FB), # LATIN SMALL LETTER U WITH CIRCUMFLEX
b"\x9F": unichr(0x00FC), # LATIN SMALL LETTER U WITH DIAERESIS
b"\xA0": unichr(0x2020), # DAGGER
b"\xA1": unichr(0x00B0), # DEGREE SIGN
b"\xA2": unichr(0x00A2), # CENT SIGN
b"\xA3": unichr(0x00A3), # POUND SIGN
b"\xA4": unichr(0x00A7), # SECTION SIGN
b"\xA5": unichr(0x2022), # BULLET
b"\xA6": unichr(0x00B6), # PILCROW SIGN
b"\xA7": unichr(0x00DF), # LATIN SMALL LETTER SHARP S
b"\xA8": unichr(0x00AE), # REGISTERED SIGN
b"\xA9": unichr(0x0160), # LATIN CAPITAL LETTER S WITH CARON
b"\xAA": unichr(0x2122), # TRADE MARK SIGN
b"\xAB": unichr(0x00B4), # ACUTE ACCENT
b"\xAC": unichr(0x00A8), # DIAERESIS
b"\xAD": unichr(0x2260), # NOT EQUAL TO
b"\xAE": unichr(0x017D), # LATIN CAPITAL LETTER Z WITH CARON
b"\xAF": unichr(0x00D8), # LATIN CAPITAL LETTER O WITH STROKE
b"\xB0": unichr(0x221E), # INFINITY
b"\xB1": unichr(0x00B1), # PLUS-MINUS SIGN
b"\xB2": unichr(0x2264), # LESS-THAN OR EQUAL TO
b"\xB3": unichr(0x2265), # GREATER-THAN OR EQUAL TO
b"\xB4": unichr(0x2206), # INCREMENT
b"\xB5": unichr(0x00B5), # MICRO SIGN
b"\xB6": unichr(0x2202), # PARTIAL DIFFERENTIAL
b"\xB7": unichr(0x2211), # N-ARY SUMMATION
b"\xB8": unichr(0x220F), # N-ARY PRODUCT
b"\xB9": unichr(0x0161), # LATIN SMALL LETTER S WITH CARON
b"\xBA": unichr(0x222B), # INTEGRAL
b"\xBB": unichr(0x00AA), # FEMININE ORDINAL INDICATOR
b"\xBC": unichr(0x00BA), # MASCULINE ORDINAL INDICATOR
b"\xBD": unichr(0x03A9), # GREEK CAPITAL LETTER OMEGA
b"\xBE": unichr(0x017E), # LATIN SMALL LETTER Z WITH CARON
b"\xBF": unichr(0x00F8), # LATIN SMALL LETTER O WITH STROKE
b"\xC0": unichr(0x00BF), # INVERTED QUESTION MARK
b"\xC1": unichr(0x00A1), # INVERTED EXCLAMATION MARK
b"\xC2": unichr(0x00AC), # NOT SIGN
b"\xC3": unichr(0x221A), # SQUARE ROOT
b"\xC4": unichr(0x0192), # LATIN SMALL LETTER F WITH HOOK
b"\xC5": unichr(0x2248), # ALMOST EQUAL TO
b"\xC6": unichr(0x0106), # LATIN CAPITAL LETTER C WITH ACUTE
b"\xC7": unichr(0x00AB), # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
b"\xC8": unichr(0x010C), # LATIN CAPITAL LETTER C WITH CARON
b"\xC9": unichr(0x2026), # HORIZONTAL ELLIPSIS
b"\xCA": unichr(0x00A0), # NO-BREAK SPACE
b"\xCB": unichr(0x00C0), # LATIN CAPITAL LETTER A WITH GRAVE
b"\xCC": unichr(0x00C3), # LATIN CAPITAL LETTER A WITH TILDE
b"\xCD": unichr(0x00D5), # LATIN CAPITAL LETTER O WITH TILDE
b"\xCE": unichr(0x0152), # LATIN CAPITAL LIGATURE OE
b"\xCF": unichr(0x0153), # LATIN SMALL LIGATURE OE
b"\xD0": unichr(0x0110), # LATIN CAPITAL LETTER D WITH STROKE
b"\xD1": unichr(0x2014), # EM DASH
b"\xD2": unichr(0x201C), # LEFT DOUBLE QUOTATION MARK
b"\xD3": unichr(0x201D), # RIGHT DOUBLE QUOTATION MARK
b"\xD4": unichr(0x2018), # LEFT SINGLE QUOTATION MARK
b"\xD5": unichr(0x2019), # RIGHT SINGLE QUOTATION MARK
b"\xD6": unichr(0x00F7), # DIVISION SIGN
b"\xD7": unichr(0x25CA), # LOZENGE
b"\xD8": unichr(0xF8FF), # Apple logo
b"\xD9": unichr(0x00A9), # COPYRIGHT SIGN
b"\xDA": unichr(0x2044), # FRACTION SLASH
b"\xDB": unichr(0x20AC), # EURO SIGN
b"\xDC": unichr(0x2039), # SINGLE LEFT-POINTING ANGLE QUOTATION MARK
b"\xDD": unichr(0x203A), # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
b"\xDE": unichr(0x00C6), # LATIN CAPITAL LETTER AE
b"\xDF": unichr(0x00BB), # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
b"\xE0": unichr(0x2013), # EN DASH
b"\xE1": unichr(0x00B7), # MIDDLE DOT
b"\xE2": unichr(0x201A), # SINGLE LOW-9 QUOTATION MARK
b"\xE3": unichr(0x201E), # DOUBLE LOW-9 QUOTATION MARK
b"\xE4": unichr(0x2030), # PER MILLE SIGN
b"\xE5": unichr(0x00C2), # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
b"\xE6": unichr(0x0107), # LATIN SMALL LETTER C WITH ACUTE
b"\xE7": unichr(0x00C1), # LATIN CAPITAL LETTER A WITH ACUTE
b"\xE8": unichr(0x010D), # LATIN SMALL LETTER C WITH CARON
b"\xE9": unichr(0x00C8), # LATIN CAPITAL LETTER E WITH GRAVE
b"\xEA": unichr(0x00CD), # LATIN CAPITAL LETTER I WITH ACUTE
b"\xEB": unichr(0x00CE), # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
b"\xEC": unichr(0x00CF), # LATIN CAPITAL LETTER I WITH DIAERESIS
b"\xED": unichr(0x00CC), # LATIN CAPITAL LETTER I WITH GRAVE
b"\xEE": unichr(0x00D3), # LATIN CAPITAL LETTER O WITH ACUTE
b"\xEF": unichr(0x00D4), # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
b"\xF0": unichr(0x0111), # LATIN SMALL LETTER D WITH STROKE
b"\xF1": unichr(0x00D2), # LATIN CAPITAL LETTER O WITH GRAVE
b"\xF2": unichr(0x00DA), # LATIN CAPITAL LETTER U WITH ACUTE
b"\xF3": unichr(0x00DB), # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
b"\xF4": unichr(0x00D9), # LATIN CAPITAL LETTER U WITH GRAVE
b"\xF5": unichr(0x0131), # LATIN SMALL LETTER DOTLESS I
b"\xF6": unichr(0x02C6), # MODIFIER LETTER CIRCUMFLEX ACCENT
b"\xF7": unichr(0x02DC), # SMALL TILDE
b"\xF8": unichr(0x00AF), # MACRON
b"\xF9": unichr(0x03C0), # GREEK SMALL LETTER PI
b"\xFA": unichr(0x00CB), # LATIN CAPITAL LETTER E WITH DIAERESIS
b"\xFB": unichr(0x02DA), # RING ABOVE
b"\xFC": unichr(0x00B8), # CEDILLA
b"\xFD": unichr(0x00CA), # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
b"\xFE": unichr(0x00E6), # LATIN SMALL LETTER AE
b"\xFF": unichr(0x02C7), # CARON
}
_mac_romanian_mapping = {
b"\x80": unichr(0x00C4), # LATIN CAPITAL LETTER A WITH DIAERESIS
b"\x81": unichr(0x00C5), # LATIN CAPITAL LETTER A WITH RING ABOVE
b"\x82": unichr(0x00C7), # LATIN CAPITAL LETTER C WITH CEDILLA
b"\x83": unichr(0x00C9), # LATIN CAPITAL LETTER E WITH ACUTE
b"\x84": unichr(0x00D1), # LATIN CAPITAL LETTER N WITH TILDE
b"\x85": unichr(0x00D6), # LATIN CAPITAL LETTER O WITH DIAERESIS
b"\x86": unichr(0x00DC), # LATIN CAPITAL LETTER U WITH DIAERESIS
b"\x87": unichr(0x00E1), # LATIN SMALL LETTER A WITH ACUTE
b"\x88": unichr(0x00E0), # LATIN SMALL LETTER A WITH GRAVE
b"\x89": unichr(0x00E2), # LATIN SMALL LETTER A WITH CIRCUMFLEX
b"\x8A": unichr(0x00E4), # LATIN SMALL LETTER A WITH DIAERESIS
b"\x8B": unichr(0x00E3), # LATIN SMALL LETTER A WITH TILDE
b"\x8C": unichr(0x00E5), # LATIN SMALL LETTER A WITH RING ABOVE
b"\x8D": unichr(0x00E7), # LATIN SMALL LETTER C WITH CEDILLA
b"\x8E": unichr(0x00E9), # LATIN SMALL LETTER E WITH ACUTE
b"\x8F": unichr(0x00E8), # LATIN SMALL LETTER E WITH GRAVE
b"\x90": unichr(0x00EA), # LATIN SMALL LETTER E WITH CIRCUMFLEX
b"\x91": unichr(0x00EB), # LATIN SMALL LETTER E WITH DIAERESIS
b"\x92": unichr(0x00ED), # LATIN SMALL LETTER I WITH ACUTE
b"\x93": unichr(0x00EC), # LATIN SMALL LETTER I WITH GRAVE
b"\x94": unichr(0x00EE), # LATIN SMALL LETTER I WITH CIRCUMFLEX
b"\x95": unichr(0x00EF), # LATIN SMALL LETTER I WITH DIAERESIS
b"\x96": unichr(0x00F1), # LATIN SMALL LETTER N WITH TILDE
b"\x97": unichr(0x00F3), # LATIN SMALL LETTER O WITH ACUTE
b"\x98": unichr(0x00F2), # LATIN SMALL LETTER O WITH GRAVE
b"\x99": unichr(0x00F4), # LATIN SMALL LETTER O WITH CIRCUMFLEX
b"\x9A": unichr(0x00F6), # LATIN SMALL LETTER O WITH DIAERESIS
b"\x9B": unichr(0x00F5), # LATIN SMALL LETTER O WITH TILDE
b"\x9C": unichr(0x00FA), # LATIN SMALL LETTER U WITH ACUTE
b"\x9D": unichr(0x00F9), # LATIN SMALL LETTER U WITH GRAVE
b"\x9E": unichr(0x00FB), # LATIN SMALL LETTER U WITH CIRCUMFLEX
b"\x9F": unichr(0x00FC), # LATIN SMALL LETTER U WITH DIAERESIS
b"\xA0": unichr(0x2020), # DAGGER
b"\xA1": unichr(0x00B0), # DEGREE SIGN
b"\xA2": unichr(0x00A2), # CENT SIGN
b"\xA3": unichr(0x00A3), # POUND SIGN
b"\xA4": unichr(0x00A7), # SECTION SIGN
b"\xA5": unichr(0x2022), # BULLET
b"\xA6": unichr(0x00B6), # PILCROW SIGN
b"\xA7": unichr(0x00DF), # LATIN SMALL LETTER SHARP S
b"\xA8": unichr(0x00AE), # REGISTERED SIGN
b"\xA9": unichr(0x00A9), # COPYRIGHT SIGN
b"\xAA": unichr(0x2122), # TRADE MARK SIGN
b"\xAB": unichr(0x00B4), # ACUTE ACCENT
b"\xAC": unichr(0x00A8), # DIAERESIS
b"\xAD": unichr(0x2260), # NOT EQUAL TO
b"\xAE": unichr(0x0102), # LATIN CAPITAL LETTER A WITH BREVE
b"\xAF": unichr(0x0218), # LATIN CAPITAL LETTER S WITH COMMA BELOW # for Unicode 3.0 and later
b"\xB0": unichr(0x221E), # INFINITY
b"\xB1": unichr(0x00B1), # PLUS-MINUS SIGN
b"\xB2": unichr(0x2264), # LESS-THAN OR EQUAL TO
b"\xB3": unichr(0x2265), # GREATER-THAN OR EQUAL TO
b"\xB4": unichr(0x00A5), # YEN SIGN
b"\xB5": unichr(0x00B5), # MICRO SIGN
b"\xB6": unichr(0x2202), # PARTIAL DIFFERENTIAL
b"\xB7": unichr(0x2211), # N-ARY SUMMATION
b"\xB8": unichr(0x220F), # N-ARY PRODUCT
b"\xB9": unichr(0x03C0), # GREEK SMALL LETTER PI
b"\xBA": unichr(0x222B), # INTEGRAL
b"\xBB": unichr(0x00AA), # FEMININE ORDINAL INDICATOR
b"\xBC": unichr(0x00BA), # MASCULINE ORDINAL INDICATOR
b"\xBD": unichr(0x03A9), # GREEK CAPITAL LETTER OMEGA
b"\xBE": unichr(0x0103), # LATIN SMALL LETTER A WITH BREVE
b"\xBF": unichr(0x0219), # LATIN SMALL LETTER S WITH COMMA BELOW # for Unicode 3.0 and later
b"\xC0": unichr(0x00BF), # INVERTED QUESTION MARK
b"\xC1": unichr(0x00A1), # INVERTED EXCLAMATION MARK
b"\xC2": unichr(0x00AC), # NOT SIGN
b"\xC3": unichr(0x221A), # SQUARE ROOT
b"\xC4": unichr(0x0192), # LATIN SMALL LETTER F WITH HOOK
b"\xC5": unichr(0x2248), # ALMOST EQUAL TO
b"\xC6": unichr(0x2206), # INCREMENT
b"\xC7": unichr(0x00AB), # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
b"\xC8": unichr(0x00BB), # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
b"\xC9": unichr(0x2026), # HORIZONTAL ELLIPSIS
b"\xCA": unichr(0x00A0), # NO-BREAK SPACE
b"\xCB": unichr(0x00C0), # LATIN CAPITAL LETTER A WITH GRAVE
b"\xCC": unichr(0x00C3), # LATIN CAPITAL LETTER A WITH TILDE
b"\xCD": unichr(0x00D5), # LATIN CAPITAL LETTER O WITH TILDE
b"\xCE": unichr(0x0152), # LATIN CAPITAL LIGATURE OE
b"\xCF": unichr(0x0153), # LATIN SMALL LIGATURE OE
b"\xD0": unichr(0x2013), # EN DASH
b"\xD1": unichr(0x2014), # EM DASH
b"\xD2": unichr(0x201C), # LEFT DOUBLE QUOTATION MARK
b"\xD3": unichr(0x201D), # RIGHT DOUBLE QUOTATION MARK
b"\xD4": unichr(0x2018), # LEFT SINGLE QUOTATION MARK
b"\xD5": unichr(0x2019), # RIGHT SINGLE QUOTATION MARK
b"\xD6": unichr(0x00F7), # DIVISION SIGN
b"\xD7": unichr(0x25CA), # LOZENGE
b"\xD8": unichr(0x00FF), # LATIN SMALL LETTER Y WITH DIAERESIS
b"\xD9": unichr(0x0178), # LATIN CAPITAL LETTER Y WITH DIAERESIS
b"\xDA": unichr(0x2044), # FRACTION SLASH
b"\xDB": unichr(0x20AC), # EURO SIGN
b"\xDC": unichr(0x2039), # SINGLE LEFT-POINTING ANGLE QUOTATION MARK
b"\xDD": unichr(0x203A), # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
b"\xDE": unichr(0x021A), # LATIN CAPITAL LETTER T WITH COMMA BELOW # for Unicode 3.0 and later
b"\xDF": unichr(0x021B), # LATIN SMALL LETTER T WITH COMMA BELOW # for Unicode 3.0 and later
b"\xE0": unichr(0x2021), # DOUBLE DAGGER
b"\xE1": unichr(0x00B7), # MIDDLE DOT
b"\xE2": unichr(0x201A), # SINGLE LOW-9 QUOTATION MARK
b"\xE3": unichr(0x201E), # DOUBLE LOW-9 QUOTATION MARK
b"\xE4": unichr(0x2030), # PER MILLE SIGN
b"\xE5": unichr(0x00C2), # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
b"\xE6": unichr(0x00CA), # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
b"\xE7": unichr(0x00C1), # LATIN CAPITAL LETTER A WITH ACUTE
b"\xE8": unichr(0x00CB), # LATIN CAPITAL LETTER E WITH DIAERESIS
b"\xE9": unichr(0x00C8), # LATIN CAPITAL LETTER E WITH GRAVE
b"\xEA": unichr(0x00CD), # LATIN CAPITAL LETTER I WITH ACUTE
b"\xEB": unichr(0x00CE), # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
b"\xEC": unichr(0x00CF), # LATIN CAPITAL LETTER I WITH DIAERESIS
b"\xED": unichr(0x00CC), # LATIN CAPITAL LETTER I WITH GRAVE
b"\xEE": unichr(0x00D3), # LATIN CAPITAL LETTER O WITH ACUTE
b"\xEF": unichr(0x00D4), # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
b"\xF0": unichr(0xF8FF), # Apple logo
b"\xF1": unichr(0x00D2), # LATIN CAPITAL LETTER O WITH GRAVE
b"\xF2": unichr(0x00DA), # LATIN CAPITAL LETTER U WITH ACUTE
b"\xF3": unichr(0x00DB), # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
b"\xF4": unichr(0x00D9), # LATIN CAPITAL LETTER U WITH GRAVE
b"\xF5": unichr(0x0131), # LATIN SMALL LETTER DOTLESS I
b"\xF6": unichr(0x02C6), # MODIFIER LETTER CIRCUMFLEX ACCENT
b"\xF7": unichr(0x02DC), # SMALL TILDE
b"\xF8": unichr(0x00AF), # MACRON
b"\xF9": unichr(0x02D8), # BREVE
b"\xFA": unichr(0x02D9), # DOT ABOVE
b"\xFB": unichr(0x02DA), # RING ABOVE
b"\xFC": unichr(0x00B8), # CEDILLA
b"\xFD": unichr(0x02DD), # DOUBLE ACUTE ACCENT
b"\xFE": unichr(0x02DB), # OGONEK
b"\xFF": unichr(0x02C7), # CARON
}
_extended_encodings = {
"x-mac-croatian-ttx": ("ascii", _mac_croatian_mapping),
"x-mac-romanian-ttx": ("ascii", _mac_romanian_mapping),
"x-mac-japanese-ttx": ("shift_jis", {
b"\xFC": unichr(0x007C),
b"\x7E": unichr(0x007E),

View File

@ -5,13 +5,17 @@ import fontTools.encodings.codecs # Not to be confused with "import codecs"
class ExtendedCodecsTest(unittest.TestCase):
def test_decode(self):
def test_decode_japanese(self):
self.assertEqual(b'x\xfe\xfdy'.decode("x-mac-japanese-ttx"),
unichr(0x78)+unichr(0x2122)+unichr(0x00A9)+unichr(0x79))
def test_encode(self):
def test_encode_japanese(self):
self.assertEqual(b'x\xfe\xfdy',
(unichr(0x78)+unichr(0x2122)+unichr(0x00A9)+unichr(0x79)).encode("x-mac-japanese-ttx"))
def test_decode_romanian(self):
self.assertEqual(b'x\xfb'.decode("x-mac-romanian-ttx"),
unichr(0x78)+unichr(0x02DA))
if __name__ == '__main__':
unittest.main()

View File

@ -110,14 +110,14 @@ class NameRecord(object):
0: { # Macintosh, platEncID==0, keyed by langID
15: "mac-iceland",
17: "mac-turkish",
18: None,
18: "x-mac-croatian-ttx",
24: "mac-latin2",
25: "mac-latin2",
26: "mac-latin2",
27: "mac-latin2",
28: "mac-latin2",
36: "mac-latin2",
37: None,
37: "x-mac-romanian-ttx",
38: "mac-latin2",
39: "mac-latin2",
40: "mac-latin2",

View File

@ -22,6 +22,11 @@ class NameRecordTest(unittest.TestCase):
self.assertEqual("mac-roman", name.getEncoding())
self.assertEqual("Foo Italic", name.toUnicode())
def test_toUnicode_macromanian(self):
name = self.makeName(b"Foo Italic\xfb", 222, 1, 0, 37) # Mac Romanian
self.assertEqual("x-mac-romanian-ttx", name.getEncoding())
self.assertEqual("Foo Italic"+unichr(0x02DA), name.toUnicode())
def test_toUnicode_UnicodeDecodeError(self):
name = self.makeName("Foo Bold", 111, 0, 2, 7)
self.assertEqual("utf-16be", name.getEncoding())
@ -70,13 +75,19 @@ class NameRecordTest(unittest.TestCase):
name = self.makeName('', 123, 1, 0, 17) # Mac Turkish
self.assertEqual(name.getEncoding(), "mac-turkish")
name.langID = 37
self.assertEqual(name.getEncoding(), None)
name.langID = 45
self.assertEqual(name.getEncoding(), "x-mac-romanian-ttx")
name.langID = 45 # Other
self.assertEqual(name.getEncoding(), "mac-roman")
def test_extended_mac_encodings(self):
name = self.makeName(b'\xfe', 123, 1, 1, 0) # Mac Japanese
self.assertEqual(name.toUnicode(), unichr(0x2122))
def test_extended_unknown(self):
name = self.makeName(b'\xfe', 123, 10, 11, 12)
self.assertEqual(name.getEncoding(), "ascii")
self.assertEqual(name.getEncoding(None), None)
self.assertEqual(name.getEncoding(default=None), None)
if __name__ == "__main__":
unittest.main()