Spaces:
Sleeping
Sleeping
| """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 | |