From b957beb0df53a513b60cbcfc4e5e847980789b1f Mon Sep 17 00:00:00 2001 From: Carl Worth Date: Fri, 23 May 2008 08:05:18 -0700 Subject: [PATCH] Add large-font test to exercise a cairo-xlib bug. The original bug report is here: corrupt glyph positions with large font https://bugzilla.redhat.com/show_bug.cgi?id=448104 --- test/.gitignore | 1 + test/Makefile.am | 3 ++ test/large-font-ps-ref.png | Bin 0 -> 5630 bytes test/large-font-ref.png | Bin 0 -> 9819 bytes test/large-font.c | 93 +++++++++++++++++++++++++++++++++++++ 5 files changed, 97 insertions(+) create mode 100644 test/large-font-ps-ref.png create mode 100644 test/large-font-ref.png create mode 100644 test/large-font.c diff --git a/test/.gitignore b/test/.gitignore index 65f9a77da..8fddf6022 100644 --- a/test/.gitignore +++ b/test/.gitignore @@ -92,6 +92,7 @@ infinite-join in-fill-empty-trapezoid in-fill-trapezoid invalid-matrix +large-font large-source leaky-dash leaky-dashed-rectangle diff --git a/test/Makefile.am b/test/Makefile.am index 2b8e1567a..f444ff38f 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -71,6 +71,7 @@ infinite-join$(EXEEXT) \ in-fill-empty-trapezoid$(EXEEXT) \ in-fill-trapezoid$(EXEEXT) \ invalid-matrix$(EXEEXT) \ +large-font$(EXEEXT) \ large-source$(EXEEXT) \ leaky-dash$(EXEEXT) \ leaky-dashed-rectangle$(EXEEXT) \ @@ -441,6 +442,8 @@ REFERENCE_IMAGES = \ image-surface-source-ref.png \ infinite-join-ref.png \ infinite-join-ps-ref.png \ + large-font-ref.png \ + large-font-ps-ref.png \ large-source-ref.png \ leaky-dash-ps-argb32-ref.png \ leaky-dash-ps-rgb24-ref.png \ diff --git a/test/large-font-ps-ref.png b/test/large-font-ps-ref.png new file mode 100644 index 0000000000000000000000000000000000000000..1dbd7cd623d353b1de9c02d5721b1db73875185d GIT binary patch literal 5630 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 literal 0 HcmV?d00001 diff --git a/test/large-font-ref.png b/test/large-font-ref.png new file mode 100644 index 0000000000000000000000000000000000000000..8a555f140def503f93b5df13ee10e1e93c715122 GIT binary patch literal 9819 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 + */ + +/* Bug history: + * + * 2008-05-23: Caolan McNamara noticed a bug in OpenOffice.org where, + * when using a very large font, space would be left for a + * glyph but it would actually be rendered in the wrong + * place. He wrote a minimal test case and posted the bug + * here: + * + * corrupt glyph positions with large font + * https://bugzilla.redhat.com/show_bug.cgi?id=448104 + * + * 2008-05-23: Carl Worth wrote this test for the cairo test suite to + * exercise the bug.k + */ + +#include "cairo-test.h" + +#define WIDTH 400 +#define HEIGHT 200 +#define TEXT_SIZE 160 + +static cairo_test_draw_function_t draw; + +cairo_test_t test = { + "large-font", + "Draws a very large font to exercise a glyph-positioning bug", + WIDTH, HEIGHT, + draw +}; + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + cairo_font_options_t *font_options; + + /* paint white so we don't need separate ref images for + * RGB24 and ARGB32 */ + cairo_set_source_rgb (cr, 1., 1., 1.); + cairo_paint (cr); + + cairo_select_font_face (cr, "Bitstream Vera Sans", + CAIRO_FONT_SLANT_NORMAL, + CAIRO_FONT_WEIGHT_NORMAL); + cairo_set_font_size (cr, TEXT_SIZE); + + font_options = cairo_font_options_create (); + + cairo_get_font_options (cr, font_options); + cairo_font_options_set_hint_metrics (font_options, CAIRO_HINT_METRICS_OFF); + + cairo_set_font_options (cr, font_options); + cairo_font_options_destroy (font_options); + + cairo_set_source_rgb (cr, 0, 0, 0); + + cairo_set_font_size (cr, 160); + cairo_move_to (cr, 5, 160); + cairo_show_text (cr, "MoW"); + + return CAIRO_TEST_SUCCESS; +} + +int +main (void) +{ + return cairo_test (&test); +}