[Cairo] Text extent of shadowed text is calculated incorrectly
authormrobinson@webkit.org <mrobinson@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 17 Mar 2012 02:54:48 +0000 (02:54 +0000)
committermrobinson@webkit.org <mrobinson@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 17 Mar 2012 02:54:48 +0000 (02:54 +0000)
https://bugs.webkit.org/show_bug.cgi?id=65035

Source/WebCore:

Reviewed by Martin Robinson.

No new tests. This is already covered by fast/canvas/fillText-shadow.html.

Correct determine the size of rendered text using x and y bearing from the font
extents.

* platform/graphics/cairo/FontCairo.cpp:
(WebCore::drawGlyphsShadow): Use the x and y bearing to calculate text extents.
This gives a more accurate sizing and avoids clipping the edges of the shadow.

LayoutTests:

Reviewed by Martin Robinson

* platform/gtk/Skipped: Unskip a test that is now passing.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@111110 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/platform/gtk/Skipped
Source/WebCore/ChangeLog
Source/WebCore/platform/graphics/cairo/FontCairo.cpp

index 61091a5..dbaaa84 100644 (file)
@@ -1,3 +1,12 @@
+2012-03-16  Martin Robinson  <mrobinson@igalia.com>
+
+        [Cairo] Text extent of shadowed text is calculated incorrectly
+        https://bugs.webkit.org/show_bug.cgi?id=65035
+
+        Reviewed by Martin Robinson
+
+        * platform/gtk/Skipped: Unskip a test that is now passing.
+
 2012-03-16  Aaron Colwell  <acolwell@chromium.org>
 
         Rebaselines for compositing tests with video
index 9dd9122..5fab569 100644 (file)
@@ -1303,10 +1303,6 @@ http/tests/inspector/resource-main-cookies.php
 http/tests/inspector/resource-parameters.html
 
 
-# Text shadow extents are calculated incorrectly
-# https://bugs.webkit.org/show_bug.cgi?id=65035
-fast/canvas/fillText-shadow.html
-
 # Font feature settings is not implemented.
 css3/font-feature-settings-rendering.html
 
index 8b154af..c211f2e 100644 (file)
@@ -1,3 +1,19 @@
+2012-03-16  Martin Robinson  <mrobinson@igalia.com>
+
+        [Cairo] Text extent of shadowed text is calculated incorrectly
+        https://bugs.webkit.org/show_bug.cgi?id=65035
+
+        Reviewed by Martin Robinson.
+
+        No new tests. This is already covered by fast/canvas/fillText-shadow.html.
+
+        Correct determine the size of rendered text using x and y bearing from the font
+        extents.
+
+        * platform/graphics/cairo/FontCairo.cpp:
+        (WebCore::drawGlyphsShadow): Use the x and y bearing to calculate text extents.
+        This gives a more accurate sizing and avoids clipping the edges of the shadow.
+
 2012-03-16  Kentaro Hara  <haraken@chromium.org>
 
         [Chromium][Performance] Optimize innerText and outerText in Chromium/Mac
index 35d1e5b..d6e43eb 100644 (file)
@@ -85,7 +85,8 @@ static void drawGlyphsShadow(GraphicsContext* graphicsContext, const FloatPoint&
 
     cairo_text_extents_t extents;
     cairo_scaled_font_glyph_extents(font->platformData().scaledFont(), glyphs, numGlyphs, &extents);
-    FloatRect fontExtentsRect(point.x(), point.y() - extents.height, extents.width, extents.height);
+    FloatRect fontExtentsRect(point.x() + extents.x_bearing, point.y() + extents.y_bearing, extents.width, extents.height);
+
     if (GraphicsContext* shadowContext = shadow.beginShadowLayer(graphicsContext, fontExtentsRect)) {
         drawGlyphsToContext(shadowContext->platformContext()->cr(), font, glyphs, numGlyphs);
         shadow.endShadowLayer(graphicsContext);