123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- """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
|