summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2021-07-22 07:21:24 -0400
committerMatthias Clasen <mclasen@redhat.com>2021-07-22 07:28:47 -0400
commit9bed4e1865ffd827d862ac9543d19b9ce108152e (patch)
tree28138ae3f6a9bb6de9bf4c6049a26c6d0c58e668
parent0978052c9c61032082d60bafba6ec1961b047ce2 (diff)
downloadpango-better-ellipsize.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.c19
-rw-r--r--tests/markups/valid-11.expected1
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