From cbcf1ddd646cfe9a9f7b993d2b69ca1faa353f45 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Wed, 16 Aug 2006 14:27:40 -0400 Subject: [PATCH] [test] New torture tests ft-text-vertical-layout-truetype/type1 that combine vertical layout with font_matrix rotation and translation. Currently Type3 and Type1 font paths both show broken behavior. The type1 test uses "Nimbus Sans L" as the font. --- test/.gitignore | 5 ++- test/Makefile.am | 15 ++++--- ...ft-text-vertical-layout-pdf-argb32-ref.png | Bin 715 -> 0 bytes .../ft-text-vertical-layout-ps-argb32-ref.png | Bin 611 -> 0 bytes test/ft-text-vertical-layout-ref.png | Bin 829 -> 0 bytes test/ft-text-vertical-layout-svg-ref.png | Bin 770 -> 0 bytes test/ft-text-vertical-layout-type1-ref.png | Bin 0 -> 3970 bytes .../ft-text-vertical-layout-type1-svg-ref.png | Bin 0 -> 3948 bytes ...yout.c => ft-text-vertical-layout-type1.c} | 40 +++++++++++++----- 9 files changed, 42 insertions(+), 18 deletions(-) delete mode 100644 test/ft-text-vertical-layout-pdf-argb32-ref.png delete mode 100644 test/ft-text-vertical-layout-ps-argb32-ref.png delete mode 100644 test/ft-text-vertical-layout-ref.png delete mode 100644 test/ft-text-vertical-layout-svg-ref.png create mode 100644 test/ft-text-vertical-layout-type1-ref.png create mode 100644 test/ft-text-vertical-layout-type1-svg-ref.png rename test/{ft-text-vertical-layout.c => ft-text-vertical-layout-type1.c} (77%) 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 f991c649f89170676159b613612b7f4dd7fa1a7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 715 zcmV;+0yO=JP)wa{uudlyWDj#S3`U+hK04Wg)eeY;K&A8vk#f4k&F?)M^ z0QUFyM~VSIm-hcrf52aEhe@xu(`~2VHTfV;IKL(vpX< zSZsND*~5i}1;a4ZLIIHoqyzxVatGz%>?{g}v45iw;_>nE{{9}o?d`3mX`xWa!)CK7 zgiv)IisG8i&)t?z!Lso7=05SqN;n+OWHOdz0gzG(A=cK`Jj`S=;c!^hb+lUO_hFi_ zZ6uS3$MN(8(}beHwkHt-&~;r(3Ba-}A%qaZL*40-WID}Min$yCZf~<#B*0vbD=SQ= z$6nx}WnNrdv~9cDYm0w6OYHG zl&Y$BIvrPBt1+2$We*R$yBmmWwF$)}v)ODupWoTpaj;k{=JWY%HtQfrw%ZH_2{0CO z+sw}sU@*vbdvbBPTn2D_eC%MgS_M!pmj`0f{nfj>Zkw$w0!$<(w~}l$8kI`r`T5zw xR;yL1R2q$jgM<5+{PdO{Lf+@|=5uh9Si002ovPDHLkV1i<#QfmMJ 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 34fd8569bea35f3129b8226ec99a1ead2061cb1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 611 zcmV-p0-XJcP)fEPI59OYFfx~RofZH90oX}IK~z|U?U&(=qc9MKUr-vD7N!NaKuT~6w6H0G zEdg3tmw-#aEx3fa9}^o0WVJf8IZon}EaPVjJ%$;}zKDq6iOWU%^~~?k_dNihX`0ns z^&Sg<&t)rux107~U+=cFX4BxifARf(2LQBfyP7-vFFp;HavCh<`mYTDKwZ}_=Qg*Q zBXRg&d>Sm}G+4@Nn@INWVy+PZ-<&IdOkLNAF~UDy?!5;Qfrzr^oXcw~V^Zjs{j(M$kk*#K%wXnh!a0Y! zu3?PHn)g1hyQZkb2z-9(Gtp8b(&s%Q2xw&H5j2l4pKJLVAfmYih!AOSt+u(gNB(W) zArZ+i3^EMELhHItb5TU3X{N$R#nHCYm`K;`#W;?+2K?2z49=Gkn;}!j4=oyEUuwfo!Bk}W3+;q xwe5+u7DNPV?Lvz&E)1UM!BS3xrJM#!`2(4v002ovPDHLkV1jV13dH~b diff --git a/test/ft-text-vertical-layout-ref.png b/test/ft-text-vertical-layout-ref.png deleted file mode 100644 index 951090638e394f259eb990f048f60dc065e2e12d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 829 zcmV-D1H$}?P)sC;$Kg-$_J4R9J=WmrYA5Q2>VD8FUjtq7)(7 z7x)oWuEI@?vuhXl1KLC%ixzJC5&eJ`fd#d4F`E{JMB_TzxE!!BFr+dvTIRfWajr8? zdaoBo%?mytoO#b-&f_^}X3mjF5>3=84)FE$g~P+cmb$i6+>dql zugE_w(21d-TLxaR?L$(l^;cqbbrq&*wykS<50c^w0*Eh)B=y|yue1mb8Uw!uhk|Yy zctOW&rg<;epx1lCtE(&A-rfQLR#sN9zP|ov!Jj~uWq3RutNfkeYsM`@LAU&$g7td; z&Lf?WB}wd9ibW9^2H^3CUvt)I_wnJb!$P5e>+5SrmdoYZW`#ll2nNYOfIL1XN%H83 z6q_z*HZeg4gLI9iX`G#%b!4GXi1YLFj%;dbikhZTPNjfAK%9XAAfLDYMRPVj4y01< zMh^fKMZx3aBTA(b0H9bb!sqj0WMssVmCI!)iUL_x#nd%qZf@+GHOl!sV4C)U-VJ`g zA4^M1(0_NB&*za$Cb71*=E#~3I`1JI| zxw$!#bzP?< zNvu|@wqQ0ZBpO1c68Z4p6wGG3CrFa{=i5E2Ls^d z#);=au~-BEl*{Fjwy{$@kGlIS>c2KHiKRiWEWE+7i=^M5uZdhP_iNk8K1j+h2q3>G ziZWAg6B#kMXe@jUE)9BR;SIXBnc=gb#jMYSS65fKy}bnh?C$PjZ*R}lzVI1bZZlq4 z8uZHlX>c%@-+g2fs-nmf%fo{d?(P7ePyU8AtKa*(w*ecC1}-lzUE0OP#aOM;XaJE2 z84ibFaVgQ z^A^L}>MD@Wd&?dG2qEzN{EVlkCjh|X<0FE>AOeAaOKY`S5JEuJG&yyand@ukVODIK zz~`rPq4z>46hb~!R!sMmpZ8%QRBcpP|nk(#1N zeHsPwOlNulrw&V{62#Czxm*sVQpv7Adx~FQNxxraD;jm)bbVcF ze!uK9O$vnq0kBr9*;=()B>)x*1zUp^SW|p_>^$V)Kx&D^bj^`uv)N>&Qen5-wY5&C z!%C&XX0vH)uJa%{dJi6_&6DMU)hkPbURij9U!5aWUGkMFDF6Tf07*qoM6N<$f`Nuz A^8f$< 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 0000000000000000000000000000000000000000..7a81d7f470a7a2ab72b50aadeb71bef96fb2e6d0 GIT binary patch literal 3970 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 literal 0 HcmV?d00001 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);