diff --git a/test/.gitignore b/test/.gitignore index 8206bbb43..440bd2a59 100644 --- a/test/.gitignore +++ b/test/.gitignore @@ -43,9 +43,10 @@ fill-and-stroke-alpha fill-and-stroke-alpha-add fill-rule filter-nearest-offset -ft-font-create-for-ft-face -ft-text-vertical-layout ft-text-antialias-none +ft-font-create-for-ft-face +ft-text-vertical-layout-truetype +ft-text-vertical-layout-type1 font-face-get-type font-matrix-translation get-and-set diff --git a/test/Makefile.am b/test/Makefile.am index e2e5f4f8f..eac3f2988 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -94,7 +94,8 @@ endif if CAIRO_HAS_FT_FONT TESTS += bitmap-font TESTS += ft-font-create-for-ft-face -TESTS += ft-text-vertical-layout +TESTS += ft-text-vertical-layout-truetype +TESTS += ft-text-vertical-layout-type1 TESTS += ft-text-antialias-none endif @@ -208,10 +209,14 @@ fill-rule-ps-argb32-ref.png \ filter-nearest-offset-ref.png \ ft-text-antialias-none-ref.png \ ft-text-antialias-none-ps-argb32-ref.png \ -ft-text-vertical-layout-ref.png \ -ft-text-vertical-layout-pdf-argb32-ref.png \ -ft-text-vertical-layout-ps-argb32-ref.png \ -ft-text-vertical-layout-svg-ref.png \ +ft-text-vertical-layout-truetype-ref.png \ +ft-text-vertical-layout-truetype-pdf-argb32-ref.png \ +ft-text-vertical-layout-truetype-ps-argb32-ref.png \ +ft-text-vertical-layout-truetype-svg-ref.png \ +ft-text-vertical-layout-type1-ref.png \ +ft-text-vertical-layout-type1-pdf-argb32-ref.png \ +ft-text-vertical-layout-type1-ps-argb32-ref.png \ +ft-text-vertical-layout-type1-svg-ref.png \ font-matrix-translation-ref.png \ font-matrix-translation-ps-argb32-ref.png \ font-matrix-translation-svg-ref.png \ diff --git a/test/ft-text-vertical-layout-pdf-argb32-ref.png b/test/ft-text-vertical-layout-pdf-argb32-ref.png deleted file mode 100644 index f991c649f..000000000 Binary files a/test/ft-text-vertical-layout-pdf-argb32-ref.png and /dev/null differ diff --git a/test/ft-text-vertical-layout-ps-argb32-ref.png b/test/ft-text-vertical-layout-ps-argb32-ref.png deleted file mode 100644 index 34fd8569b..000000000 Binary files a/test/ft-text-vertical-layout-ps-argb32-ref.png and /dev/null differ diff --git a/test/ft-text-vertical-layout-ref.png b/test/ft-text-vertical-layout-ref.png deleted file mode 100644 index 951090638..000000000 Binary files a/test/ft-text-vertical-layout-ref.png and /dev/null differ diff --git a/test/ft-text-vertical-layout-svg-ref.png b/test/ft-text-vertical-layout-svg-ref.png deleted file mode 100644 index e65fadb8d..000000000 Binary files a/test/ft-text-vertical-layout-svg-ref.png and /dev/null differ diff --git a/test/ft-text-vertical-layout-type1-ref.png b/test/ft-text-vertical-layout-type1-ref.png new file mode 100644 index 000000000..7a81d7f47 Binary files /dev/null and b/test/ft-text-vertical-layout-type1-ref.png differ diff --git a/test/ft-text-vertical-layout-type1-svg-ref.png b/test/ft-text-vertical-layout-type1-svg-ref.png new file mode 100644 index 000000000..13e07924f Binary files /dev/null and b/test/ft-text-vertical-layout-type1-svg-ref.png differ diff --git a/test/ft-text-vertical-layout.c b/test/ft-text-vertical-layout-type1.c similarity index 77% rename from test/ft-text-vertical-layout.c rename to test/ft-text-vertical-layout-type1.c index 9f2e98ff8..be5fe33b7 100644 --- a/test/ft-text-vertical-layout.c +++ b/test/ft-text-vertical-layout-type1.c @@ -29,15 +29,15 @@ #include "cairo-test.h" #include -#define WIDTH 40 -#define HEIGHT 40 -#define TEXT_SIZE 12 +#define WIDTH 80 +#define HEIGHT 240 +#define TEXT_SIZE 30 static cairo_test_draw_function_t draw; cairo_test_t test = { - "ft-text-vertical-layout", - "Tests text rendering for vertical layout", + "ft-text-vertical-layout-type1", + "Tests text rendering for vertical layout with TrueType fonts", WIDTH, HEIGHT, draw }; @@ -59,7 +59,7 @@ create_scaled_font (cairo_t * cr) pattern = FcPatternCreate (); - FcPatternAddString (pattern, FC_FAMILY, (FcChar8 *)"Bitstream Vera Sans"); + FcPatternAddString (pattern, FC_FAMILY, (FcChar8 *)"Nimbus Sans L"); FcPatternAddDouble (pattern, FC_PIXEL_SIZE, TEXT_SIZE); FcConfigSubstitute (NULL, pattern, FcMatchPattern); @@ -76,7 +76,8 @@ create_scaled_font (cairo_t * cr) font_face = cairo_ft_font_face_create_for_pattern (resolved); - cairo_matrix_init_identity (&font_matrix); + cairo_matrix_init_translate (&font_matrix, 10, 30); + cairo_matrix_rotate (&font_matrix, M_PI_2/3); cairo_matrix_scale (&font_matrix, pixel_size, pixel_size); cairo_get_matrix (cr, &ctm); @@ -100,6 +101,9 @@ draw (cairo_t *cr, int width, int height) cairo_text_extents_t extents; cairo_scaled_font_t * scaled_font; static char text[] = "i-W"; + double line_width, x, y; + + line_width = cairo_get_line_width (cr); /* We draw in the default black, so paint white first. */ cairo_save (cr); @@ -113,15 +117,29 @@ draw (cairo_t *cr, int width, int height) cairo_set_line_width (cr, 1.0); cairo_set_source_rgb (cr, 0, 0, 0); /* black */ cairo_text_extents (cr, text, &extents); - cairo_move_to (cr, - width - (extents.width + extents.x_bearing), - -extents.y_bearing); + x = width - (extents.width + extents.x_bearing) - 5; + y = height - (extents.height + extents.y_bearing) - 5; + cairo_move_to (cr, x, y); cairo_show_text (cr, text); + cairo_rectangle (cr, + x + extents.x_bearing - line_width / 2, + y + extents.y_bearing - line_width / 2, + extents.width + line_width, + extents.height + line_width); + cairo_stroke (cr); cairo_set_source_rgb (cr, 0, 0, 1); /* blue */ cairo_text_extents (cr, text, &extents); - cairo_move_to (cr, -extents.x_bearing, -extents.y_bearing); + x = -extents.x_bearing + 5; + y = -extents.y_bearing + 5; + cairo_move_to (cr, x, y); cairo_text_path (cr, text); + cairo_fill (cr); + cairo_rectangle (cr, + x + extents.x_bearing - line_width / 2, + y + extents.y_bearing - line_width / 2, + extents.width + line_width, + extents.height + line_width); cairo_stroke (cr); cairo_scaled_font_destroy (scaled_font);