From 1c9a486d608af5475162768f707d36386bed5e3c Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Fri, 3 May 2019 01:18:42 +0000 Subject: [PATCH 1/2] css: Use multiple font-family values Pango API to support this, so we can implement this very easily. Closes: https://gitlab.gnome.org/GNOME/gtk/issues/1854 --- gtk/gtkcssshorthandpropertyimpl.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/gtk/gtkcssshorthandpropertyimpl.c b/gtk/gtkcssshorthandpropertyimpl.c index fcd250befd..0ada0f6a3e 100644 --- a/gtk/gtkcssshorthandpropertyimpl.c +++ b/gtk/gtkcssshorthandpropertyimpl.c @@ -1143,8 +1143,18 @@ pack_font_description (GtkCssShorthandProperty *shorthand, v = (* query_func) (GTK_CSS_PROPERTY_FONT_FAMILY, query_data); if (v) { - /* xxx: Can we set all the families here somehow? */ - pango_font_description_set_family (description, _gtk_css_string_value_get (_gtk_css_array_value_get_nth (v, 0))); + int i; + GString *s = g_string_new (""); + + for (i = 0; i < _gtk_css_array_value_get_n_values (v); i++) + { + if (i > 0) + g_string_append (s, ","); + g_string_append (s, _gtk_css_string_value_get (_gtk_css_array_value_get_nth (v, i))); + } + + pango_font_description_set_family (description, s->str); + g_string_free (s, TRUE); } v = (* query_func) (GTK_CSS_PROPERTY_FONT_SIZE, query_data); From 7037ff8f3db7cb272bc92eaf7226c90f49518182 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Fri, 3 May 2019 01:33:09 +0000 Subject: [PATCH 2/2] Add a reftest for multiple font families This tests that listing multiple font families in the css font-family property works as expected. --- testsuite/reftests/label-fonts.css | 3 +++ testsuite/reftests/label-fonts.ref.ui | 11 +++++++++++ testsuite/reftests/label-fonts.ui | 11 +++++++++++ testsuite/reftests/meson.build | 3 +++ 4 files changed, 28 insertions(+) create mode 100644 testsuite/reftests/label-fonts.css create mode 100644 testsuite/reftests/label-fonts.ref.ui create mode 100644 testsuite/reftests/label-fonts.ui diff --git a/testsuite/reftests/label-fonts.css b/testsuite/reftests/label-fonts.css new file mode 100644 index 0000000000..aa44addd77 --- /dev/null +++ b/testsuite/reftests/label-fonts.css @@ -0,0 +1,3 @@ +* { + font-family: nonexisting,Sans; +} diff --git a/testsuite/reftests/label-fonts.ref.ui b/testsuite/reftests/label-fonts.ref.ui new file mode 100644 index 0000000000..b00757eeb8 --- /dev/null +++ b/testsuite/reftests/label-fonts.ref.ui @@ -0,0 +1,11 @@ + + + + popup + + + abcdefg + + + + diff --git a/testsuite/reftests/label-fonts.ui b/testsuite/reftests/label-fonts.ui new file mode 100644 index 0000000000..b00757eeb8 --- /dev/null +++ b/testsuite/reftests/label-fonts.ui @@ -0,0 +1,11 @@ + + + + popup + + + abcdefg + + + + diff --git a/testsuite/reftests/meson.build b/testsuite/reftests/meson.build index 9845b42e06..44dbc487e7 100644 --- a/testsuite/reftests/meson.build +++ b/testsuite/reftests/meson.build @@ -267,6 +267,9 @@ testdata = [ 'label-ellipsize-small.ui', 'label-ellipsize-with-big.ref.ui', 'label-ellipsize-with-big.ui', + 'label-fonts.css', + 'label-fonts.ref.ui', + 'label-fonts.ui', 'label-shadows.css', 'label-shadows.ref.ui', 'label-shadows.ui',