diff options
author | Matthias Clasen <mclasen@redhat.com> | 2019-08-06 19:33:29 -0700 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2019-08-06 21:59:52 -0700 |
commit | 550aafc64bd823748efe88360eab9d95b9f5d4f2 (patch) | |
tree | e500555f04cefb9385dc6b94584c35571a0798df /tests/test-ellipsize.c | |
parent | 22dfeef4a26984ba81c6ff30117017dac372b706 (diff) | |
download | pango-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.c | 73 |
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 (); +} |