Coverage for /usr/lib/python3/dist-packages/fontTools/unicode.py: 22%
37 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
1def _makeunicodes(f):
2 lines = iter(f.readlines())
3 unicodes = {}
4 for line in lines:
5 if not line:
6 continue
7 num, name = line.split(";")[:2]
8 if name[0] == "<":
9 continue # "<control>", etc.
10 num = int(num, 16)
11 unicodes[num] = name
12 return unicodes
15class _UnicodeCustom(object):
16 def __init__(self, f):
17 if isinstance(f, str):
18 with open(f) as fd:
19 codes = _makeunicodes(fd)
20 else:
21 codes = _makeunicodes(f)
22 self.codes = codes
24 def __getitem__(self, charCode):
25 try:
26 return self.codes[charCode]
27 except KeyError:
28 return "????"
31class _UnicodeBuiltin(object):
32 def __getitem__(self, charCode):
33 try:
34 # use unicodedata backport to python2, if available:
35 # https://github.com/mikekap/unicodedata2
36 import unicodedata2 as unicodedata
37 except ImportError:
38 import unicodedata
39 try:
40 return unicodedata.name(chr(charCode))
41 except ValueError:
42 return "????"
45Unicode = _UnicodeBuiltin()
48def setUnicodeData(f):
49 global Unicode
50 Unicode = _UnicodeCustom(f)