Home | History | Annotate | Download | only in fontTools
      1 from __future__ import print_function, division, absolute_import
      2 from fontTools.misc.py23 import *
      3 
      4 def _makeunicodes(f):
      5 	import re
      6 	lines = iter(f.readlines())
      7 	unicodes = {}
      8 	for line in lines:
      9 		if not line: continue
     10 		num, name = line.split(';')[:2]
     11 		if name[0] == '<': continue # "<control>", etc.
     12 		num = int(num, 16)
     13 		unicodes[num] = name
     14 	return unicodes
     15 
     16 
     17 class _UnicodeCustom(object):
     18 
     19 	def __init__(self, f):
     20 		if isinstance(f, basestring):
     21 			f = open(f)
     22 		self.codes = _makeunicodes(f)
     23 
     24 	def __getitem__(self, charCode):
     25 		try:
     26 			return self.codes[charCode]
     27 		except KeyError:
     28 			return "????"
     29 
     30 class _UnicodeBuiltin(object):
     31 
     32 	def __getitem__(self, charCode):
     33 		import unicodedata
     34 		try:
     35 			return unicodedata.name(unichr(charCode))
     36 		except ValueError:
     37 			return "????"
     38 
     39 Unicode = _UnicodeBuiltin()
     40 
     41 def setUnicodeData(f):
     42 	global Unicode
     43 	Unicode = _UnicodeCustom(f)
     44