summaryrefslogtreecommitdiff
path: root/pango/pango-context.c
diff options
context:
space:
mode:
Diffstat (limited to 'pango/pango-context.c')
-rw-r--r--pango/pango-context.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/pango/pango-context.c b/pango/pango-context.c
index 0e9f7146..c8a7d5c1 100644
--- a/pango/pango-context.c
+++ b/pango/pango-context.c
@@ -510,7 +510,10 @@ pango_context_get_base_dir (PangoContext *context)
* @cached_iter: Cached attribute iterator, or NULL
*
* Breaks a piece of text into segments with consistent
- * directional level and shaping engine.
+ * directional level and shaping engine. Each byte of @text will
+ * be contained in exactly one of the items in the returned list;
+ * the generated list of items will be in logical order (the start
+ * offsets of the items are ascending).
*
* @cached_iter should be an iterator over @attrs currently positioned at a
* range before or containing @start_index; @cached_iter will be advanced to
@@ -565,7 +568,7 @@ pango_itemize (PangoContext *context,
embedding_levels = g_new (guint8, n_chars);
pango_log2vis_get_embedding_levels (text_ucs4, n_chars, &base_dir,
- embedding_levels);
+ embedding_levels);
/* Storing these as ranges would be a lot more efficient,
* but also more complicated... we take the simple
@@ -603,7 +606,11 @@ pango_itemize (PangoContext *context,
fonts[i] != fonts[i-1] ||
extra_attr_lists[i] != extra_attr_lists[i-1])
{
- item = g_new (PangoItem, 1);
+ /* assert that previous item got at least one char */
+ g_assert (item == NULL || item->length > 0);
+ g_assert (item == NULL || item->num_chars > 0);
+
+ item = pango_item_new ();
item->offset = p - text;
item->num_chars = 0;
item->analysis.level = embedding_levels[i];