Merge branch 'master' into conflictingFontFix

This commit is contained in:
Dominik Röttsches 2016-06-20 10:25:43 +03:00 committed by GitHub
commit f7da0486ed
2 changed files with 39 additions and 2 deletions

View File

@ -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, [])

View File

@ -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: