Spaces:
Running
Running
"""fontTools.misc.encodingTools.py -- tools for working with OpenType encodings. | |
""" | |
import fontTools.encodings.codecs | |
# Map keyed by platformID, then platEncID, then possibly langID | |
_encodingMap = { | |
0: { # Unicode | |
0: "utf_16_be", | |
1: "utf_16_be", | |
2: "utf_16_be", | |
3: "utf_16_be", | |
4: "utf_16_be", | |
5: "utf_16_be", | |
6: "utf_16_be", | |
}, | |
1: { # Macintosh | |
# See | |
# https://github.com/fonttools/fonttools/issues/236 | |
0: { # Macintosh, platEncID==0, keyed by langID | |
15: "mac_iceland", | |
17: "mac_turkish", | |
18: "mac_croatian", | |
24: "mac_latin2", | |
25: "mac_latin2", | |
26: "mac_latin2", | |
27: "mac_latin2", | |
28: "mac_latin2", | |
36: "mac_latin2", | |
37: "mac_romanian", | |
38: "mac_latin2", | |
39: "mac_latin2", | |
40: "mac_latin2", | |
Ellipsis: "mac_roman", # Other | |
}, | |
1: "x_mac_japanese_ttx", | |
2: "x_mac_trad_chinese_ttx", | |
3: "x_mac_korean_ttx", | |
6: "mac_greek", | |
7: "mac_cyrillic", | |
25: "x_mac_simp_chinese_ttx", | |
29: "mac_latin2", | |
35: "mac_turkish", | |
37: "mac_iceland", | |
}, | |
2: { # ISO | |
0: "ascii", | |
1: "utf_16_be", | |
2: "latin1", | |
}, | |
3: { # Microsoft | |
0: "utf_16_be", | |
1: "utf_16_be", | |
2: "shift_jis", | |
3: "gb2312", | |
4: "big5", | |
5: "euc_kr", | |
6: "johab", | |
10: "utf_16_be", | |
}, | |
} | |
def getEncoding(platformID, platEncID, langID, default=None): | |
"""Returns the Python encoding name for OpenType platformID/encodingID/langID | |
triplet. If encoding for these values is not known, by default None is | |
returned. That can be overriden by passing a value to the default argument. | |
""" | |
encoding = _encodingMap.get(platformID, {}).get(platEncID, default) | |
if isinstance(encoding, dict): | |
encoding = encoding.get(langID, encoding[Ellipsis]) | |
return encoding | |