Merge branch 'master' into conflictingFontFix
This commit is contained in:
commit
f7da0486ed
|
@ -20,6 +20,7 @@ def tounicode(s, encoding='utf-8'):
|
||||||
|
|
||||||
fontdata = open (sys.argv[1], 'rb').read ()
|
fontdata = open (sys.argv[1], 'rb').read ()
|
||||||
text = tounicode(sys.argv[2])
|
text = tounicode(sys.argv[2])
|
||||||
|
codepoints = list(map(ord, text))
|
||||||
# Need to create GLib.Bytes explicitly until this bug is fixed:
|
# Need to create GLib.Bytes explicitly until this bug is fixed:
|
||||||
# https://bugzilla.gnome.org/show_bug.cgi?id=729541
|
# https://bugzilla.gnome.org/show_bug.cgi?id=729541
|
||||||
blob = hb.glib_blob_create (GLib.Bytes.new (fontdata))
|
blob = hb.glib_blob_create (GLib.Bytes.new (fontdata))
|
||||||
|
@ -39,7 +40,7 @@ class Debugger(object):
|
||||||
return True
|
return True
|
||||||
debugger = Debugger()
|
debugger = Debugger()
|
||||||
hb.buffer_set_message_func (buf, debugger.message, 1, 0)
|
hb.buffer_set_message_func (buf, debugger.message, 1, 0)
|
||||||
hb.buffer_add_utf8 (buf, text.encode('utf-8'), 0, -1)
|
hb.buffer_add_utf32 (buf, codepoints, 0, len(codepoints))
|
||||||
hb.buffer_guess_segment_properties (buf)
|
hb.buffer_guess_segment_properties (buf)
|
||||||
|
|
||||||
hb.shape (font, buf, [])
|
hb.shape (font, buf, [])
|
||||||
|
|
|
@ -7,7 +7,43 @@ from itertools import *
|
||||||
diff_symbols = "-+=*&^%$#@!~/"
|
diff_symbols = "-+=*&^%$#@!~/"
|
||||||
diff_colors = ['red', 'green', 'blue']
|
diff_colors = ['red', 'green', 'blue']
|
||||||
|
|
||||||
if sys.version_info[0] >= 3:
|
try:
|
||||||
|
unichr = unichr
|
||||||
|
|
||||||
|
if sys.maxunicode < 0x10FFFF:
|
||||||
|
# workarounds for Python 2 "narrow" builds with UCS2-only support.
|
||||||
|
|
||||||
|
_narrow_unichr = unichr
|
||||||
|
|
||||||
|
def unichr(i):
|
||||||
|
"""
|
||||||
|
Return the unicode character whose Unicode code is the integer 'i'.
|
||||||
|
The valid range is 0 to 0x10FFFF inclusive.
|
||||||
|
|
||||||
|
>>> _narrow_unichr(0xFFFF + 1)
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in ?
|
||||||
|
ValueError: unichr() arg not in range(0x10000) (narrow Python build)
|
||||||
|
>>> unichr(0xFFFF + 1) == u'\U00010000'
|
||||||
|
True
|
||||||
|
>>> unichr(1114111) == u'\U0010FFFF'
|
||||||
|
True
|
||||||
|
>>> unichr(0x10FFFF + 1)
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in ?
|
||||||
|
ValueError: unichr() arg not in range(0x110000)
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
return _narrow_unichr(i)
|
||||||
|
except ValueError:
|
||||||
|
try:
|
||||||
|
padded_hex_str = hex(i)[2:].zfill(8)
|
||||||
|
escape_str = "\\U" + padded_hex_str
|
||||||
|
return escape_str.decode("unicode-escape")
|
||||||
|
except UnicodeDecodeError:
|
||||||
|
raise ValueError('unichr() arg not in range(0x110000)')
|
||||||
|
|
||||||
|
except NameError:
|
||||||
unichr = chr
|
unichr = chr
|
||||||
|
|
||||||
class ColorFormatter:
|
class ColorFormatter:
|
||||||
|
|
Loading…
Reference in New Issue