diff options
author | Matthias Clasen <mclasen@redhat.com> | 2021-07-22 07:21:24 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2021-07-22 07:28:47 -0400 |
commit | 9bed4e1865ffd827d862ac9543d19b9ce108152e (patch) | |
tree | 28138ae3f6a9bb6de9bf4c6049a26c6d0c58e668 | |
parent | 0978052c9c61032082d60bafba6ec1961b047ce2 (diff) | |
download | pango-9bed4e1865ffd827d862ac9543d19b9ce108152e.tar.gz |
Correctly handle font attributesbetter-ellipsize
pango_attr_iterator_get_attributes only returns
the innermost attribute of each kind. That is correct
for attributes that supersede each other, but not for
font descriptions, which get merged. So, keep all
font attributes in the returned list.
Update affected tests.
-rw-r--r-- | pango/pango-attributes.c | 19 | ||||
-rw-r--r-- | tests/markups/valid-11.expected | 1 |
2 files changed, 11 insertions, 9 deletions
diff --git a/pango/pango-attributes.c b/pango/pango-attributes.c index 26d08404..cb3d917d 100644 --- a/pango/pango-attributes.c +++ b/pango/pango-attributes.c @@ -2479,15 +2479,16 @@ pango_attr_iterator_get_attrs (PangoAttrIterator *iterator) GSList *tmp_list2; gboolean found = FALSE; - for (tmp_list2 = attrs; tmp_list2; tmp_list2 = tmp_list2->next) - { - PangoAttribute *old_attr = tmp_list2->data; - if (attr->klass->type == old_attr->klass->type) - { - found = TRUE; - break; - } - } + if (attr->klass->type != PANGO_ATTR_FONT_DESC) + for (tmp_list2 = attrs; tmp_list2; tmp_list2 = tmp_list2->next) + { + PangoAttribute *old_attr = tmp_list2->data; + if (attr->klass->type == old_attr->klass->type) + { + found = TRUE; + break; + } + } if (!found) attrs = g_slist_prepend (attrs, pango_attribute_copy (attr)); diff --git a/tests/markups/valid-11.expected b/tests/markups/valid-11.expected index bd3f83f2..797ef399 100644 --- a/tests/markups/valid-11.expected +++ b/tests/markups/valid-11.expected @@ -16,6 +16,7 @@ range 0 5 [0,13]fallback=0 [0,13]language=de range 5 7 +[0,13]font-desc=Sans Italic 12 @wdth=100,wght=200 [0,13]foreground=#0000ffff0000 [0,13]background=#f0f0f0f0f0f0 [0,13]underline=2 |