diff options
Diffstat (limited to 'pango/pango-layout.c')
-rw-r--r-- | pango/pango-layout.c | 21 |
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); |