Coverage for /usr/lib/python3/dist-packages/fontTools/misc/encodingTools.py: 43%
7 statements
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-14 15:55 +0200
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-14 15:55 +0200
1"""fontTools.misc.encodingTools.py -- tools for working with OpenType encodings.
2"""
4import fontTools.encodings.codecs
6# Map keyed by platformID, then platEncID, then possibly langID
7_encodingMap = {
8 0: { # Unicode
9 0: "utf_16_be",
10 1: "utf_16_be",
11 2: "utf_16_be",
12 3: "utf_16_be",
13 4: "utf_16_be",
14 5: "utf_16_be",
15 6: "utf_16_be",
16 },
17 1: { # Macintosh
18 # See
19 # https://github.com/fonttools/fonttools/issues/236
20 0: { # Macintosh, platEncID==0, keyed by langID
21 15: "mac_iceland",
22 17: "mac_turkish",
23 18: "mac_croatian",
24 24: "mac_latin2",
25 25: "mac_latin2",
26 26: "mac_latin2",
27 27: "mac_latin2",
28 28: "mac_latin2",
29 36: "mac_latin2",
30 37: "mac_romanian",
31 38: "mac_latin2",
32 39: "mac_latin2",
33 40: "mac_latin2",
34 Ellipsis: "mac_roman", # Other
35 },
36 1: "x_mac_japanese_ttx",
37 2: "x_mac_trad_chinese_ttx",
38 3: "x_mac_korean_ttx",
39 6: "mac_greek",
40 7: "mac_cyrillic",
41 25: "x_mac_simp_chinese_ttx",
42 29: "mac_latin2",
43 35: "mac_turkish",
44 37: "mac_iceland",
45 },
46 2: { # ISO
47 0: "ascii",
48 1: "utf_16_be",
49 2: "latin1",
50 },
51 3: { # Microsoft
52 0: "utf_16_be",
53 1: "utf_16_be",
54 2: "shift_jis",
55 3: "gb2312",
56 4: "big5",
57 5: "euc_kr",
58 6: "johab",
59 10: "utf_16_be",
60 },
61}
64def getEncoding(platformID, platEncID, langID, default=None):
65 """Returns the Python encoding name for OpenType platformID/encodingID/langID
66 triplet. If encoding for these values is not known, by default None is
67 returned. That can be overriden by passing a value to the default argument.
68 """
69 encoding = _encodingMap.get(platformID, {}).get(platEncID, default)
70 if isinstance(encoding, dict):
71 encoding = encoding.get(langID, encoding[Ellipsis])
72 return encoding