[python] Use utf-32 / utf-16 based on build of Python

Fixes https://github.com/behdad/harfbuzz/pull/271
This commit is contained in:
Behdad Esfahbod 2016-06-30 11:01:22 -07:00
parent fc9de44a03
commit d3e2a06b0f

View File

@ -3,6 +3,7 @@
from __future__ import print_function
import sys
import array
from gi.repository import HarfBuzz as hb
from gi.repository import GLib
@ -39,7 +40,26 @@ class Debugger(object):
return True
debugger = Debugger()
hb.buffer_set_message_func (buf, debugger.message, 1, 0)
hb.buffer_add_utf8 (buf, text.encode('utf-8'), 0, -1)
##
## Add text to buffer
##
#
# See https://github.com/behdad/harfbuzz/pull/271
#
if False:
# If you do not care about cluster values reflecting Python
# string indices, then this is quickest way to add text to
# buffer:
hb.buffer_add_utf8 (buf, text.encode('utf-8'), 0, -1)
# Otherwise, then following handles both narrow and wide
# Python builds:
elif sys.maxunicode == 0x10FFFF:
hb.buffer_add_utf32 (buf, array.array('I', text.encode('utf-32')), 0, -1)
else:
hb.buffer_add_utf16 (buf, array.array('H', text.encode('utf-16')), 0, -1)
hb.buffer_guess_segment_properties (buf)
hb.shape (font, buf, [])