From da70111ab234e8b740ce6fb1789a1809fbec0c44 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Wed, 31 Oct 2012 13:45:30 -0700 Subject: [PATCH] Don't clear buffer pre-context if no new context is being provided Patch from Jonathan Kew. Part of fixing: Mozilla Bug 801410 - avoid inserting dotted-circle for run-initial Unicode combining characters in "simple" scripts such as Latin https://bugzilla.mozilla.org/show_bug.cgi?id=801410 --- src/hb-buffer.cc | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/hb-buffer.cc b/src/hb-buffer.cc index 1eb513c7f..06b5c05ee 100644 --- a/src/hb-buffer.cc +++ b/src/hb-buffer.cc @@ -841,7 +841,14 @@ hb_buffer_add_utf (hb_buffer_t *buffer, buffer->ensure (buffer->len + item_length * sizeof (T) / 4); - if (!buffer->len) + /* If buffer is empty and pre-context provided, install it. + * This check is written this way, to make sure people can + * provide pre-context in one add_utf() call, then provide + * text in a follow-up call. See: + * + * https://bugzilla.mozilla.org/show_bug.cgi?id=801410#c13 + */ + if (!buffer->len && item_offset > 0) { /* Add pre-context */ buffer->clear_context (0);