some new features
This commit is contained in:
50
.venv/lib/python3.12/site-packages/fontTools/unicode.py
Normal file
50
.venv/lib/python3.12/site-packages/fontTools/unicode.py
Normal file
@ -0,0 +1,50 @@
|
||||
def _makeunicodes(f):
|
||||
lines = iter(f.readlines())
|
||||
unicodes = {}
|
||||
for line in lines:
|
||||
if not line:
|
||||
continue
|
||||
num, name = line.split(";")[:2]
|
||||
if name[0] == "<":
|
||||
continue # "<control>", etc.
|
||||
num = int(num, 16)
|
||||
unicodes[num] = name
|
||||
return unicodes
|
||||
|
||||
|
||||
class _UnicodeCustom(object):
|
||||
def __init__(self, f):
|
||||
if isinstance(f, str):
|
||||
with open(f) as fd:
|
||||
codes = _makeunicodes(fd)
|
||||
else:
|
||||
codes = _makeunicodes(f)
|
||||
self.codes = codes
|
||||
|
||||
def __getitem__(self, charCode):
|
||||
try:
|
||||
return self.codes[charCode]
|
||||
except KeyError:
|
||||
return "????"
|
||||
|
||||
|
||||
class _UnicodeBuiltin(object):
|
||||
def __getitem__(self, charCode):
|
||||
try:
|
||||
# use unicodedata backport to python2, if available:
|
||||
# https://github.com/mikekap/unicodedata2
|
||||
import unicodedata2 as unicodedata
|
||||
except ImportError:
|
||||
import unicodedata
|
||||
try:
|
||||
return unicodedata.name(chr(charCode))
|
||||
except ValueError:
|
||||
return "????"
|
||||
|
||||
|
||||
Unicode = _UnicodeBuiltin()
|
||||
|
||||
|
||||
def setUnicodeData(f):
|
||||
global Unicode
|
||||
Unicode = _UnicodeCustom(f)
|
||||
Reference in New Issue
Block a user