From f229b1abfb01d3c42cba1dec36a271fe75c503a9 Mon Sep 17 00:00:00 2001 From: Owen Taylor Date: Tue, 23 Aug 2005 13:34:14 +0000 Subject: [PATCH] when creating the temporary mask, do glyph ADD mask, not (glyph IN source) ADD mask. Set the mask as having component alpha when it's 4-channel. test/text-antialias-subpixel.c test/Makefile.am: No longer XFAIL. test/text-antialias-gray.c test/text-antialias-subpixel.c Don't turn off metrics hinting, it doesn't make sense. Update. --- ChangeLog | 15 +++++++++++++++ src/cairo-ft-font.c | 10 ++++++---- test/Makefile.am | 1 - test/text-antialias-gray-ref.png | Bin 723 -> 727 bytes test/text-antialias-gray.c | 1 - test/text-antialias-none-ref.png | Bin 277 -> 278 bytes test/text-antialias-none.c | 1 - test/text-antialias-subpixel-ref.png | Bin 1079 -> 1081 bytes test/text-antialias-subpixel.c | 4 +--- 9 files changed, 22 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9f883a113..7813ceeb4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +2005-08-23 Owen Taylor + + * src/cairo-ft-font.c (_cairo_ft_scaled_font_show_glyphs): + when creating the temporary mask, do glyph ADD mask, not + (glyph IN source) ADD mask. Set the mask as having component + alpha when it's 4-channel. + + * test/text-antialias-subpixel.c test/Makefile.am: No longer XFAIL. + + * test/text-antialias-gray.c test/text-antialias-subpixel.c + * test/text-antialias-none.c (draw): Don't turn off metrics + hinting, it doesn't make sense. + + * test/text-antialias-*-ref.png: Update. + 2005-08-23 Carl Worth * CODING_STYLE: Revise the description of indentation and tabs to diff --git a/src/cairo-ft-font.c b/src/cairo-ft-font.c index 8db223ed2..45322e7ef 100644 --- a/src/cairo-ft-font.c +++ b/src/cairo-ft-font.c @@ -2024,11 +2024,10 @@ _cairo_ft_scaled_font_show_glyphs (void *abstract_font, _cairo_pattern_init_for_surface (&glyph_pattern, &(entries[i]->image->base)); - status = _cairo_surface_composite (CAIRO_OPERATOR_ADD, pattern, - &glyph_pattern.base, + status = _cairo_surface_composite (CAIRO_OPERATOR_ADD, &glyph_pattern.base, + NULL, mask, - x + entries[i]->size.x, - y + entries[i]->size.y, + 0, 0, 0, 0, x + entries[i]->size.x - dest_x, y + entries[i]->size.y - dest_y, @@ -2041,6 +2040,9 @@ _cairo_ft_scaled_font_show_glyphs (void *abstract_font, goto CLEANUP_MASK; } + if (mask_format == CAIRO_FORMAT_ARGB32) + pixman_image_set_component_alpha (((cairo_image_surface_t *)mask)->pixman_image, TRUE); + _cairo_pattern_init_for_surface (&mask_pattern, mask); status = _cairo_surface_composite (operator, pattern, &mask_pattern.base, diff --git a/test/Makefile.am b/test/Makefile.am index 7ceb63850..bc75894e2 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -141,7 +141,6 @@ a8-mask \ filter-nearest-offset \ pixman-rotate \ self-intersecting \ -text-antialias-subpixel \ text-rotate check_PROGRAMS = $(TESTS) diff --git a/test/text-antialias-gray-ref.png b/test/text-antialias-gray-ref.png index 1367ea9efe15539d2a2d15c36aa4b1c871606b07..1cab79a9fcb688a95ee280368b9d620551729d07 100644 GIT binary patch delta 678 zcmV;X0$Kgj1=j_TJ%0!n6eAqM9wS)*00MbQL_t(YiN)4mXx3#E2k_5Zn`T(8#bCsA z!B&vg#lV{&1StqoOv#I2Vi!S$*p;9t;?*EfCP9!9co8)cp~wqCkS-Mblk|t>CdG(e zDQuU;%;DeD#q+%Fw|Bqyw~bx&y?KA1~`Y30{%?BiozMo1ZUWnbfid9&d{O2`}R?b})1D zDe1b~a2v0bkYAE!VFG{PIqd z?8wZ~neyRi2GF;uWeh?B&Nxv=ZR3$2(N(>_e? zR8FuTyML9-Yt|AZsDB$aF6d@80mu+dJeo{xNr7$wH>JodHlKZuWs?{Lbj zUe>0i&+I{BjJP0a|4XgN3y2P)FZZj;@6j|!Q6HfZ(Mvqtq>OX$FG2aS6<@ciZvX%Q M07*qoM6N<$f;(PPWB>pF delta 674 zcmV;T0$u&r1=9tPJ%0xq6ch?>OCD7K00MPML_t(YiN)4Wh*fnI2k_6cdDcYbG%+AD zI>9p`%f&#OK!ivTR7|NwpwuF$kXi{!A+835Vj>7Mf)$7GA&|oWf@%F&@MooN1Bo$6f>u=A^zTaeNX- za1C4V4W7nre1%>N;Xe$P`1jyAF5)z)9y zCTf|qw}P0|Qy<_v9A&24-zXTpiIXMH-Pu0!d@}~}_$(GnC2QgFHvgZn9v|X0W==jK zU3VA$#fB2{^HML2;xAmqFL`egFXIq)V+uF0t}Vu|(tq1<3J)We6Lsmj8`3ov5dFmB z!omQSl_V$oHq6|}Y>089LgAuGEL7o2abFd#Mcz*wAigHHcQ%h<;?cr<8?iBuyNGvk zj4z4ydY1+qCw?S0r9d%8yk6LE&Rly;5lahu9}`1)e3&>vtj$SXC7!QhZgu-GwUHd; zee6;$uYa8munJqzN9|@_TZy-EZZ`6{DqJT#g9q?EQIop<5nQQqnvcSfJ|OkNyc_>y z`@gAG{TKWX^HDhX!?bWjpQLi|ZAzrrtWhUc%!Pb{xI|pR8obxRejh$1E?~rTJ!_NF zCw3oknK&!y{)<)Q1w;?g$Th37dn`3mbkK+xARC@)Q^iu;1>oJW6_yg(@Bjb+07*qo IM6N<$g4seo`v3p{ diff --git a/test/text-antialias-gray.c b/test/text-antialias-gray.c index caa260ade..96044f507 100644 --- a/test/text-antialias-gray.c +++ b/test/text-antialias-gray.c @@ -50,7 +50,6 @@ draw (cairo_t *cr, int width, int height) font_options = cairo_font_options_create (); cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_NONE); - cairo_font_options_set_hint_metrics (font_options, CAIRO_HINT_METRICS_OFF); cairo_font_options_set_antialias (font_options, CAIRO_ANTIALIAS_GRAY); cairo_set_font_options (cr, font_options); diff --git a/test/text-antialias-none-ref.png b/test/text-antialias-none-ref.png index c0281938ce97de3c99d4706b6aebd54d9849227b..141a972704839487f63ae86c4cb1acd4f72062cb 100644 GIT binary patch delta 225 zcmV<703QF90+s@hJ%0!n6eAqM9wS)*006j2L_t(YiN#b~4#Xe`#K!wynf)mZx;zH0 z=_E~P83qI@5fM|2%#Xm-xLy!mMpw2}*OC~03X6;Aur}Co81I?SXI!g#!vVkxKadPaZ4CB6B00000NkvXXu0mjf2oPn= delta 224 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 AW&i*H diff --git a/test/text-antialias-subpixel.c b/test/text-antialias-subpixel.c index 7c151a5c7..ead958d11 100644 --- a/test/text-antialias-subpixel.c +++ b/test/text-antialias-subpixel.c @@ -57,7 +57,6 @@ draw (cairo_t *cr, int width, int height) font_options = cairo_font_options_create (); cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_NONE); - cairo_font_options_set_hint_metrics (font_options, CAIRO_HINT_METRICS_OFF); cairo_font_options_set_antialias (font_options, CAIRO_ANTIALIAS_SUBPIXEL); cairo_font_options_set_subpixel_order (font_options, CAIRO_SUBPIXEL_ORDER_RGB); cairo_set_font_options (cr, font_options); @@ -80,6 +79,5 @@ draw (cairo_t *cr, int width, int height) int main (void) { - return cairo_test_expect_failure (&test, draw, - "Subpixel-antialiased text is not working with the image backend."); + return cairo_test (&test, draw); }