summaryrefslogtreecommitdiff
path: root/pango/pango-layout.c
diff options
context:
space:
mode:
Diffstat (limited to 'pango/pango-layout.c')
-rw-r--r--pango/pango-layout.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/pango/pango-layout.c b/pango/pango-layout.c
index a1ebfbcc..c0939ca9 100644
--- a/pango/pango-layout.c
+++ b/pango/pango-layout.c
@@ -1149,6 +1149,7 @@ pango_layout_set_text (PangoLayout *layout,
g_warning ("Invalid UTF-8 string passed to pango_layout_set_text()");
layout->n_chars = pango_utf8_strlen (layout->text, -1);
+ layout->length = strlen (layout->text);
layout_changed (layout);
@@ -3031,13 +3032,22 @@ ensure_tab_width (PangoLayout *layout)
PangoAttribute *attr;
PangoAttrList *layout_attrs;
PangoAttrList *tmp_attrs;
- PangoAttrIterator *iter;
PangoFontDescription *font_desc = pango_font_description_copy_static (pango_context_get_font_description (layout->context));
- PangoLanguage *language;
+ PangoLanguage *language = NULL;
+ PangoShapeFlags shape_flags = PANGO_SHAPE_NONE;
+
+ if (pango_context_get_round_glyph_positions (layout->context))
+ shape_flags |= PANGO_SHAPE_ROUND_POSITIONS;
layout_attrs = pango_layout_get_effective_attributes (layout);
- iter = pango_attr_list_get_iterator (layout_attrs);
- pango_attr_iterator_get_font (iter, font_desc, &language, NULL);
+ if (layout_attrs)
+ {
+ PangoAttrIterator *iter;
+
+ iter = pango_attr_list_get_iterator (layout_attrs);
+ pango_attr_iterator_get_font (iter, font_desc, &language, NULL);
+ pango_attr_iterator_destroy (iter);
+ }
tmp_attrs = pango_attr_list_new ();
@@ -3053,7 +3063,6 @@ ensure_tab_width (PangoLayout *layout)
items = pango_itemize (layout->context, " ", 0, 1, tmp_attrs, NULL);
- pango_attr_iterator_destroy (iter);
if (layout_attrs != layout->attrs)
{
pango_attr_list_unref (layout_attrs);
@@ -3062,7 +3071,7 @@ ensure_tab_width (PangoLayout *layout)
pango_attr_list_unref (tmp_attrs);
item = items->data;
- pango_shape (" ", 8, &item->analysis, glyphs);
+ pango_shape_with_flags (" ", 8, " ", 8, &item->analysis, glyphs, shape_flags);
pango_item_free (item);
g_list_free (items);