summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBehdad Esfahbod <behdad@behdad.org>2016-06-30 11:01:22 -0700
committerBehdad Esfahbod <behdad@behdad.org>2016-06-30 11:01:22 -0700
commitd3e2a06b0f2587e913a9c3ff1a20c187f260db80 (patch)
tree8f7ddff097915565e93efef1db6239bdb7a1797e
parentfc9de44a03a97f6e93bd98d804596cb1f9f4b5fd (diff)
downloadharfbuzz-d3e2a06b0f2587e913a9c3ff1a20c187f260db80.tar.gz
[python] Use utf-32 / utf-16 based on build of Python
Fixes https://github.com/behdad/harfbuzz/pull/271
-rwxr-xr-xsrc/sample.py22
1 files changed, 21 insertions, 1 deletions
diff --git a/src/sample.py b/src/sample.py
index 19a4fdcb..c2cb94d5 100755
--- a/src/sample.py
+++ b/src/sample.py
@@ -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, [])