summaryrefslogtreecommitdiff
path: root/tests/test-ellipsize.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2019-08-06 19:33:29 -0700
committerMatthias Clasen <mclasen@redhat.com>2019-08-06 21:59:52 -0700
commit550aafc64bd823748efe88360eab9d95b9f5d4f2 (patch)
treee500555f04cefb9385dc6b94584c35571a0798df /tests/test-ellipsize.c
parent22dfeef4a26984ba81c6ff30117017dac372b706 (diff)
downloadpango-550aafc64bd823748efe88360eab9d95b9f5d4f2.tar.gz
Pass the right attributes when shaping ellipses
Now that we are splitting attributes into those that are relevant for itemization and shaping, we need to make sure to pass the right ones along when ellipsizing, or we risk picking a wildly mismatching font for the ellipsis run, causing things to shift vertically. Test included. Closes: https://gitlab.gnome.org/GNOME/pango/issues/397 Thanks to Jorge Luis Martinez Gomez for his help in tracking this down.
Diffstat (limited to 'tests/test-ellipsize.c')
-rw-r--r--tests/test-ellipsize.c73
1 files changed, 73 insertions, 0 deletions
diff --git a/tests/test-ellipsize.c b/tests/test-ellipsize.c
new file mode 100644
index 00000000..1c262aa1
--- /dev/null
+++ b/tests/test-ellipsize.c
@@ -0,0 +1,73 @@
+/* Pango
+ * test-ellipsize.c: Test Pango harfbuzz apis
+ *
+ * Copyright (C) 2019 Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include <pango/pango.h>
+#include <pango/pangocairo.h>
+#include "test-common.h"
+
+static PangoContext *context;
+
+/* Test that ellipsization does not change the
+ * height of a layout.
+ */
+static void
+test_ellipsize (void)
+{
+ PangoLayout *layout;
+ int height1, height2;
+ PangoFontDescription *desc;
+
+ layout = pango_layout_new (context);
+
+ desc = pango_font_description_from_string ("Fixed 7");
+ pango_layout_set_font_description (layout, desc);
+ pango_font_description_free (desc);
+
+ pango_layout_set_text (layout, "some text that should be ellipsized", -1);
+ g_assert_cmpint (pango_layout_get_line_count (layout), ==, 1);
+ pango_layout_get_pixel_size (layout, NULL, &height1);
+
+ pango_layout_set_width (layout, 100 * PANGO_SCALE);
+ pango_layout_set_ellipsize (layout, PANGO_ELLIPSIZE_END);
+
+ g_assert_cmpint (pango_layout_get_line_count (layout), ==, 1);
+ g_assert_cmpint (pango_layout_is_ellipsized (layout), ==, 1);
+ pango_layout_get_pixel_size (layout, NULL, &height2);
+
+ g_assert_cmpint (height1, ==, height2);
+
+ g_object_unref (layout);
+}
+
+int
+main (int argc, char *argv[])
+{
+ PangoFontMap *fontmap;
+
+ fontmap = pango_cairo_font_map_get_default ();
+ context = pango_font_map_create_context (fontmap);
+
+ g_test_init (&argc, &argv, NULL);
+
+ g_test_add_func ("/layout/ellipsize", test_ellipsize);
+
+ return g_test_run ();
+}