summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2021-11-27 09:14:12 -0500
committerMatthias Clasen <mclasen@redhat.com>2021-11-27 10:10:04 -0500
commit88ab72ed2f92cd1bf70ca7b720723329fdca7945 (patch)
treecbcedacbb3ef4c3a0c85f5e11edf5c4df7435404
parentac2bf585e04c49be419f44a97c4ef0de0fd21014 (diff)
downloadpango-88ab72ed2f92cd1bf70ca7b720723329fdca7945.tar.gz
font: Avoid cosmetic ugliness
When setting variations to "", font descriptions would add an ugly useless " @" at the end of their serialization. Avoid that. Test included.
-rw-r--r--pango/fonts.c5
-rw-r--r--tests/test-font.c31
2 files changed, 32 insertions, 4 deletions
diff --git a/pango/fonts.c b/pango/fonts.c
index d94feaf8..129e84d3 100644
--- a/pango/fonts.c
+++ b/pango/fonts.c
@@ -546,7 +546,7 @@ pango_font_description_set_variations_static (PangoFontDescription *desc,
/**
* pango_font_description_set_variations:
* @desc: a `PangoFontDescription`.
- * @variations: a string representing the variations
+ * @variations: (nullable): a string representing the variations
*
* Sets the variations field of a font description.
*
@@ -1492,7 +1492,8 @@ pango_font_description_to_string (const PangoFontDescription *desc)
g_string_append (result, "px");
}
- if (desc->variations && desc->mask & PANGO_FONT_MASK_VARIATIONS)
+ if ((desc->variations && desc->mask & PANGO_FONT_MASK_VARIATIONS) &&
+ desc->variations[0] != '\0')
{
g_string_append (result, " @");
g_string_append (result, desc->variations);
diff --git a/tests/test-font.c b/tests/test-font.c
index bfe321a0..2eef4396 100644
--- a/tests/test-font.c
+++ b/tests/test-font.c
@@ -82,7 +82,7 @@ test_roundtrip (void)
}
static void
-test_variation (void)
+test_variations (void)
{
PangoFontDescription *desc1;
PangoFontDescription *desc2;
@@ -119,6 +119,32 @@ test_variation (void)
}
static void
+test_empty_variations (void)
+{
+ PangoFontDescription *desc;
+ gchar *str;
+
+ desc = pango_font_description_from_string ("Cantarell 14");
+ g_assert_nonnull (desc);
+ g_assert_cmpint ((pango_font_description_get_set_fields (desc) & PANGO_FONT_MASK_VARIATIONS), ==, 0);
+ g_assert_null (pango_font_description_get_variations (desc));
+
+ str = pango_font_description_to_string (desc);
+ g_assert_cmpstr (str, ==, "Cantarell 14");
+ g_free (str);
+
+ pango_font_description_set_variations (desc, "");
+ g_assert_cmpint ((pango_font_description_get_set_fields (desc) & PANGO_FONT_MASK_VARIATIONS), ==, PANGO_FONT_MASK_VARIATIONS);
+ g_assert_cmpstr (pango_font_description_get_variations (desc), ==, "");
+
+ str = pango_font_description_to_string (desc);
+ g_assert_cmpstr (str, ==, "Cantarell 14");
+ g_free (str);
+
+ pango_font_description_free (desc);
+}
+
+static void
test_metrics (void)
{
PangoFontDescription *desc;
@@ -543,7 +569,8 @@ main (int argc, char *argv[])
g_test_add_func ("/pango/font/metrics", test_metrics);
g_test_add_func ("/pango/fontdescription/parse", test_parse);
g_test_add_func ("/pango/fontdescription/roundtrip", test_roundtrip);
- g_test_add_func ("/pango/fontdescription/variation", test_variation);
+ g_test_add_func ("/pango/fontdescription/variations", test_variations);
+ g_test_add_func ("/pango/fontdescription/empty-variations", test_empty_variations);
g_test_add_func ("/pango/fontdescription/to-filename", test_to_filename);
g_test_add_func ("/pango/fontdescription/set-gravity", test_set_gravity);
g_test_add_func ("/pango/fontdescription/match", test_match);