Large SVG text layout performance regression in r81168
authorzimmermann@webkit.org <zimmermann@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 16 Jan 2012 14:04:25 +0000 (14:04 +0000)
committerzimmermann@webkit.org <zimmermann@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 16 Jan 2012 14:04:25 +0000 (14:04 +0000)
https://bugs.webkit.org/show_bug.cgi?id=65711

Reviewed by Zoltan Herczeg.

Source/WebCore:

Enable simple code path in SVGTextMetricsBuilder, allowing fast-measurement of simple text.
This affects the geometry of several <text> elements, thus several tests need rebaselining.

* rendering/svg/SVGTextMetricsBuilder.cpp:
(WebCore::SVGTextMetricsBuilder::advance):
(WebCore::SVGTextMetricsBuilder::advanceComplexText):

LayoutTests:

Update some test results after enabling the simple code path to measure SVG text.

* platform/mac/svg/W3C-SVG-1.1/animate-elem-06-t-expected.png:
* platform/mac/svg/W3C-SVG-1.1/animate-elem-06-t-expected.txt:
* platform/mac/svg/W3C-SVG-1.1/filters-comptran-01-b-expected.txt:
* platform/mac/svg/W3C-SVG-1.1/text-text-01-b-expected.txt:
* platform/mac/svg/batik/text/smallFonts-expected.png:
* platform/mac/svg/batik/text/textAnchor-expected.txt:
* platform/mac/svg/carto.net/window-expected.png:
* platform/mac/svg/carto.net/window-expected.txt:
* platform/mac/svg/custom/js-late-clipPath-and-object-creation-expected.png:
* platform/mac/svg/custom/js-late-clipPath-and-object-creation-expected.txt:
* platform/mac/svg/custom/js-late-gradient-and-object-creation-expected.png:
* platform/mac/svg/custom/js-late-gradient-and-object-creation-expected.txt:
* platform/mac/svg/custom/js-late-pattern-and-object-creation-expected.png:
* platform/mac/svg/custom/js-late-pattern-and-object-creation-expected.txt:
* platform/mac/svg/custom/text-repaint-including-stroke-expected.png:
* platform/mac/svg/custom/use-clipped-hit-expected.txt:
* platform/mac/svg/custom/use-detach-expected.png:
* platform/mac/svg/custom/use-detach-expected.txt:
* platform/mac/svg/foreignObject/text-tref-02-b-expected.png:
* platform/mac/svg/text/select-textLength-spacingAndGlyphs-squeeze-1-expected.png:
* platform/mac/svg/text/select-textLength-spacingAndGlyphs-squeeze-2-expected.png:
* platform/mac/svg/text/select-textLength-spacingAndGlyphs-squeeze-3-expected.png:
* platform/mac/svg/text/select-textLength-spacingAndGlyphs-squeeze-4-expected.png:
* platform/mac/svg/text/select-textLength-spacingAndGlyphs-squeeze-4-expected.txt:
* platform/mac/svg/text/select-textLength-spacingAndGlyphs-stretch-4-expected.txt:
* platform/mac/svg/text/text-align-01-b-expected.png:
* platform/mac/svg/text/text-align-01-b-expected.txt:
* platform/mac/svg/text/text-align-02-b-expected.txt:
* platform/mac/svg/text/text-align-04-b-expected.txt:
* platform/mac/svg/text/text-align-06-b-expected.png:
* platform/mac/svg/text/text-align-06-b-expected.txt:
* platform/mac/svg/text/text-deco-01-b-expected.txt:
* platform/mac/svg/text/text-fonts-01-t-expected.txt:
* platform/mac/svg/text/text-spacing-01-b-expected.png:
* platform/mac/svg/text/text-text-04-t-expected.png:
* platform/mac/svg/text/text-text-05-t-expected.png:
* platform/mac/svg/transforms/text-with-pattern-inside-transformed-html-expected.txt:
* platform/mac/svg/transforms/text-with-pattern-with-svg-transform-expected.png:
* platform/mac/svg/transforms/text-with-pattern-with-svg-transform-expected.txt:

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

38 files changed:
LayoutTests/ChangeLog
LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-06-t-expected.png
LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-06-t-expected.txt
LayoutTests/platform/mac/svg/W3C-SVG-1.1/filters-comptran-01-b-expected.txt
LayoutTests/platform/mac/svg/W3C-SVG-1.1/text-text-01-b-expected.txt
LayoutTests/platform/mac/svg/batik/text/smallFonts-expected.png
LayoutTests/platform/mac/svg/batik/text/textAnchor-expected.txt
LayoutTests/platform/mac/svg/carto.net/window-expected.png
LayoutTests/platform/mac/svg/carto.net/window-expected.txt
LayoutTests/platform/mac/svg/custom/js-late-clipPath-and-object-creation-expected.png
LayoutTests/platform/mac/svg/custom/js-late-gradient-and-object-creation-expected.png
LayoutTests/platform/mac/svg/custom/js-late-pattern-and-object-creation-expected.png
LayoutTests/platform/mac/svg/custom/text-repaint-including-stroke-expected.png
LayoutTests/platform/mac/svg/custom/use-clipped-hit-expected.png
LayoutTests/platform/mac/svg/custom/use-detach-expected.png
LayoutTests/platform/mac/svg/foreignObject/text-tref-02-b-expected.png
LayoutTests/platform/mac/svg/text/select-textLength-spacingAndGlyphs-squeeze-1-expected.png
LayoutTests/platform/mac/svg/text/select-textLength-spacingAndGlyphs-squeeze-2-expected.png
LayoutTests/platform/mac/svg/text/select-textLength-spacingAndGlyphs-squeeze-3-expected.png
LayoutTests/platform/mac/svg/text/select-textLength-spacingAndGlyphs-squeeze-4-expected.png
LayoutTests/platform/mac/svg/text/select-textLength-spacingAndGlyphs-squeeze-4-expected.txt
LayoutTests/platform/mac/svg/text/select-textLength-spacingAndGlyphs-stretch-4-expected.txt
LayoutTests/platform/mac/svg/text/text-align-01-b-expected.png
LayoutTests/platform/mac/svg/text/text-align-01-b-expected.txt
LayoutTests/platform/mac/svg/text/text-align-02-b-expected.txt
LayoutTests/platform/mac/svg/text/text-align-04-b-expected.txt
LayoutTests/platform/mac/svg/text/text-align-06-b-expected.png
LayoutTests/platform/mac/svg/text/text-align-06-b-expected.txt
LayoutTests/platform/mac/svg/text/text-deco-01-b-expected.txt
LayoutTests/platform/mac/svg/text/text-fonts-01-t-expected.txt
LayoutTests/platform/mac/svg/text/text-spacing-01-b-expected.png
LayoutTests/platform/mac/svg/text/text-text-04-t-expected.png
LayoutTests/platform/mac/svg/text/text-text-05-t-expected.png
LayoutTests/platform/mac/svg/transforms/text-with-pattern-inside-transformed-html-expected.txt
LayoutTests/platform/mac/svg/transforms/text-with-pattern-with-svg-transform-expected.png
LayoutTests/platform/mac/svg/transforms/text-with-pattern-with-svg-transform-expected.txt
Source/WebCore/ChangeLog
Source/WebCore/rendering/svg/SVGTextMetricsBuilder.cpp

index d22d822..142763a 100644 (file)
@@ -1,3 +1,52 @@
+2012-01-16  Nikolas Zimmermann  <nzimmermann@rim.com>
+
+        Large SVG text layout performance regression in r81168
+        https://bugs.webkit.org/show_bug.cgi?id=65711
+
+        Reviewed by Zoltan Herczeg.
+
+        Update some test results after enabling the simple code path to measure SVG text.
+
+        * platform/mac/svg/W3C-SVG-1.1/animate-elem-06-t-expected.png:
+        * platform/mac/svg/W3C-SVG-1.1/animate-elem-06-t-expected.txt:
+        * platform/mac/svg/W3C-SVG-1.1/filters-comptran-01-b-expected.txt:
+        * platform/mac/svg/W3C-SVG-1.1/text-text-01-b-expected.txt:
+        * platform/mac/svg/batik/text/smallFonts-expected.png:
+        * platform/mac/svg/batik/text/textAnchor-expected.txt:
+        * platform/mac/svg/carto.net/window-expected.png:
+        * platform/mac/svg/carto.net/window-expected.txt:
+        * platform/mac/svg/custom/js-late-clipPath-and-object-creation-expected.png:
+        * platform/mac/svg/custom/js-late-clipPath-and-object-creation-expected.txt:
+        * platform/mac/svg/custom/js-late-gradient-and-object-creation-expected.png:
+        * platform/mac/svg/custom/js-late-gradient-and-object-creation-expected.txt:
+        * platform/mac/svg/custom/js-late-pattern-and-object-creation-expected.png:
+        * platform/mac/svg/custom/js-late-pattern-and-object-creation-expected.txt:
+        * platform/mac/svg/custom/text-repaint-including-stroke-expected.png:
+        * platform/mac/svg/custom/use-clipped-hit-expected.txt:
+        * platform/mac/svg/custom/use-detach-expected.png:
+        * platform/mac/svg/custom/use-detach-expected.txt:
+        * platform/mac/svg/foreignObject/text-tref-02-b-expected.png:
+        * platform/mac/svg/text/select-textLength-spacingAndGlyphs-squeeze-1-expected.png:
+        * platform/mac/svg/text/select-textLength-spacingAndGlyphs-squeeze-2-expected.png:
+        * platform/mac/svg/text/select-textLength-spacingAndGlyphs-squeeze-3-expected.png:
+        * platform/mac/svg/text/select-textLength-spacingAndGlyphs-squeeze-4-expected.png:
+        * platform/mac/svg/text/select-textLength-spacingAndGlyphs-squeeze-4-expected.txt:
+        * platform/mac/svg/text/select-textLength-spacingAndGlyphs-stretch-4-expected.txt:
+        * platform/mac/svg/text/text-align-01-b-expected.png:
+        * platform/mac/svg/text/text-align-01-b-expected.txt:
+        * platform/mac/svg/text/text-align-02-b-expected.txt:
+        * platform/mac/svg/text/text-align-04-b-expected.txt:
+        * platform/mac/svg/text/text-align-06-b-expected.png:
+        * platform/mac/svg/text/text-align-06-b-expected.txt:
+        * platform/mac/svg/text/text-deco-01-b-expected.txt:
+        * platform/mac/svg/text/text-fonts-01-t-expected.txt:
+        * platform/mac/svg/text/text-spacing-01-b-expected.png:
+        * platform/mac/svg/text/text-text-04-t-expected.png:
+        * platform/mac/svg/text/text-text-05-t-expected.png:
+        * platform/mac/svg/transforms/text-with-pattern-inside-transformed-html-expected.txt:
+        * platform/mac/svg/transforms/text-with-pattern-with-svg-transform-expected.png:
+        * platform/mac/svg/transforms/text-with-pattern-with-svg-transform-expected.txt:
+
 2012-01-15  Pavel Feldman  <pfeldman@chromium.org>
 
         Web Inspector: editing body multiplies head
index d7f97b3..398bd48 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-06-t-expected.png and b/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-06-t-expected.png differ
index 0073c20..0ae48c6 100644 (file)
@@ -6,8 +6,8 @@ layer at (0,0) size 480x360
       RenderSVGText {text} at (7,0) size 67x9 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 67x9
           chunk 1 text run 1 at (7.00,8.00) startOffset 0 endOffset 18 width 66.33: "Test a motion path"
-      RenderSVGText {text} at (11,10) size 53x9 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,0) size 53x9
+      RenderSVGText {text} at (11,10) size 52x9 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 52x9
           chunk 1 text run 1 at (11.00,18.00) startOffset 0 endOffset 17 width 52.00: "'path' attribute."
       RenderSVGContainer {g} at (42,120) size 426x192
         RenderSVGPath {path} at (87,120) size 305x141 [stroke={[type=SOLID] [color=#000000]}] [data="M 15 43 C 15 43 36 20 65 33"]
index ded4533..102c5cf 100644 (file)
@@ -53,8 +53,8 @@ layer at (0,0) size 480x360
               chunk 1 text run 1 at (10.00,180.00) startOffset 0 endOffset 11 width 162.40: "type: table"
           RenderSVGRect {rect} at (22,155) size 415x29 [fill={[type=LINEAR-GRADIENT] [id="MyGradient"]}] [x=10.00] [y=210.00] [width=580.00] [height=40.00]
             [filter="Linear"] RenderSVGResourceFilter {filter} at (10,210) size 580x40
-          RenderSVGText {text} at (10,250) size 588x36 contains 1 chunk(s)
-            RenderSVGInlineText {#text} at (0,0) size 588x36
+          RenderSVGText {text} at (10,250) size 589x36 contains 1 chunk(s)
+            RenderSVGInlineText {#text} at (0,0) size 589x36
               chunk 1 text run 1 at (10.00,280.00) startOffset 0 endOffset 40 width 588.00: "type:linear slope:.5 intercepts:.25/0/.5"
           RenderSVGRect {rect} at (22,226) size 415x29 [fill={[type=LINEAR-GRADIENT] [id="MyGradient"]}] [x=10.00] [y=310.00] [width=580.00] [height=40.00]
             [filter="Gamma"] RenderSVGResourceFilter {filter} at (10,310) size 580x40
index 369ec4d..82904a8 100644 (file)
@@ -188,14 +188,14 @@ layer at (0,0) size 480x360
           RenderSVGText {text} at (6,32) size 62x7 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,0) size 62x7
               chunk 1 text run 1 at (6.00,38.00) startOffset 0 endOffset 22 width 61.67: "textLength: 25% longer"
-          RenderSVGText {text} at (6,38) size 48x7 contains 1 chunk(s)
-            RenderSVGInlineText {#text} at (0,0) size 48x7
+          RenderSVGText {text} at (6,38) size 49x7 contains 1 chunk(s)
+            RenderSVGInlineText {#text} at (0,0) size 49x7
               chunk 1 text run 1 at (6.00,44.00) startOffset 0 endOffset 17 width 48.00: "lengthAdjust: sAG"
           RenderSVGText {text} at (76,32) size 64x7 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,0) size 64x7
               chunk 1 text run 1 at (76.00,38.00) startOffset 0 endOffset 23 width 63.67: "textLength: 20% shorter"
-          RenderSVGText {text} at (76,38) size 48x7 contains 1 chunk(s)
-            RenderSVGInlineText {#text} at (0,0) size 48x7
+          RenderSVGText {text} at (76,38) size 49x7 contains 1 chunk(s)
+            RenderSVGInlineText {#text} at (0,0) size 49x7
               chunk 1 text run 1 at (76.00,44.00) startOffset 0 endOffset 17 width 48.00: "lengthAdjust: sAG"
     RenderSVGText {text} at (5,109) size 53x10 contains 1 chunk(s)
       RenderSVGInlineText {#text} at (0,0) size 53x10
index ae86792..1444b7f 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/batik/text/smallFonts-expected.png and b/LayoutTests/platform/mac/svg/batik/text/smallFonts-expected.png differ
index dbbab0e..3364ee1 100644 (file)
@@ -31,7 +31,7 @@ layer at (0,0) size 450x500
                 chunk 1 text run 1 at (320.00,30.00) startOffset 0 endOffset 18 width 116.00: "another text chunk"
             RenderSVGInlineText {#text} at (0,0) size 0x0
         RenderSVGContainer {g} at (108,123) size 276x30 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,40.00)}]
-          RenderSVGText {text} at (69,15) size 367x39 contains 1 chunk(s)
+          RenderSVGText {text} at (69,15) size 366x39 contains 1 chunk(s)
             RenderSVGTSpan {tspan} at (0,0) size 51x19
               RenderSVGInlineText {#text} at (0,20) size 51x19
                 chunk 1 (middle anchor) text run 1 at (70.00,50.00) startOffset 0 endOffset 8 width 50.67: "I am the"
@@ -42,7 +42,7 @@ layer at (0,0) size 450x500
                 chunk 1 text run 1 at (124.67,50.00) startOffset 0 endOffset 15 width 101.33: "same text chunk"
             RenderSVGInlineText {#text} at (156,20) size 4x19
               chunk 1 text run 1 at (226.00,50.00) startOffset 0 endOffset 1 width 4.00: " "
-            RenderSVGTSpan {tspan} at (0,0) size 117x19
+            RenderSVGTSpan {tspan} at (0,0) size 116x19
               RenderSVGInlineText {#text} at (250,0) size 116x19
                 chunk 1 text run 1 at (320.00,30.00) startOffset 0 endOffset 18 width 116.00: "another text chunk"
             RenderSVGInlineText {#text} at (0,0) size 0x0
@@ -80,7 +80,7 @@ layer at (0,0) size 450x500
                 chunk 1 (middle anchor) text run 1 at (262.00,30.00) startOffset 0 endOffset 18 width 116.00: "another text chunk"
             RenderSVGInlineText {#text} at (0,0) size 0x0
         RenderSVGContainer {g} at (108,251) size 232x30 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,160.00)}]
-          RenderSVGText {text} at (69,15) size 309x39 contains 1 chunk(s)
+          RenderSVGText {text} at (69,15) size 308x39 contains 1 chunk(s)
             RenderSVGTSpan {tspan} at (0,0) size 51x19
               RenderSVGInlineText {#text} at (0,20) size 51x19
                 chunk 1 (middle anchor) text run 1 at (70.00,50.00) startOffset 0 endOffset 8 width 50.67: "I am the"
@@ -91,7 +91,7 @@ layer at (0,0) size 450x500
                 chunk 1 text run 1 at (124.67,50.00) startOffset 0 endOffset 15 width 101.33: "same text chunk"
             RenderSVGInlineText {#text} at (156,20) size 4x19
               chunk 1 text run 1 at (226.00,50.00) startOffset 0 endOffset 1 width 4.00: " "
-            RenderSVGTSpan {tspan} at (0,0) size 117x19
+            RenderSVGTSpan {tspan} at (0,0) size 116x19
               RenderSVGInlineText {#text} at (192,0) size 116x19
                 chunk 1 (middle anchor) text run 1 at (262.00,30.00) startOffset 0 endOffset 18 width 116.00: "another text chunk"
             RenderSVGInlineText {#text} at (0,0) size 0x0
@@ -129,7 +129,7 @@ layer at (0,0) size 450x500
                 chunk 1 (end anchor) text run 1 at (204.00,30.00) startOffset 0 endOffset 18 width 116.00: "another text chunk"
             RenderSVGInlineText {#text} at (0,0) size 0x0
         RenderSVGContainer {g} at (108,378) size 189x30 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,300.00)}]
-          RenderSVGText {text} at (69,15) size 251x39 contains 1 chunk(s)
+          RenderSVGText {text} at (69,15) size 250x39 contains 1 chunk(s)
             RenderSVGTSpan {tspan} at (0,0) size 51x19
               RenderSVGInlineText {#text} at (0,20) size 51x19
                 chunk 1 (middle anchor) text run 1 at (70.00,50.00) startOffset 0 endOffset 8 width 50.67: "I am the"
@@ -140,7 +140,7 @@ layer at (0,0) size 450x500
                 chunk 1 text run 1 at (124.67,50.00) startOffset 0 endOffset 15 width 101.33: "same text chunk"
             RenderSVGInlineText {#text} at (156,20) size 4x19
               chunk 1 text run 1 at (226.00,50.00) startOffset 0 endOffset 1 width 4.00: " "
-            RenderSVGTSpan {tspan} at (0,0) size 117x19
+            RenderSVGTSpan {tspan} at (0,0) size 116x19
               RenderSVGInlineText {#text} at (134,0) size 116x19
                 chunk 1 (end anchor) text run 1 at (204.00,30.00) startOffset 0 endOffset 18 width 116.00: "another text chunk"
             RenderSVGInlineText {#text} at (0,0) size 0x0
index 0e4c635..83f5391 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/carto.net/window-expected.png and b/LayoutTests/platform/mac/svg/carto.net/window-expected.png differ
index 4354ef4..15d4df2 100644 (file)
@@ -113,8 +113,8 @@ layer at (0,0) size 800x600
           RenderSVGRect {rect} at (38,143) size 549x392 [stroke={[type=SOLID] [color=#696969]}] [fill={[type=SOLID] [color=#F0F8FF]}] [x=0.00] [y=0.00] [width=700.00] [height=500.00]
           RenderSVGContainer {g} at (0,0) size 0x0
           RenderSVGRect {rect} at (38,523) size 549x12 [stroke={[type=SOLID] [color=#696969]}] [fill={[type=SOLID] [color=#F0F8FF]}] [x=0.00] [y=487.00] [width=700.00] [height=13.00]
-          RenderSVGText {text} at (3,487) size 128x12 contains 1 chunk(s)
-            RenderSVGInlineText {#text} at (0,0) size 128x12
+          RenderSVGText {text} at (3,487) size 129x12 contains 1 chunk(s)
+            RenderSVGInlineText {#text} at (0,0) size 129x12
               chunk 1 text run 1 at (3.00,497.00) startOffset 0 endOffset 28 width 128.00: "This is a big movable window"
           RenderSVGContainer {g} at (77,182) size 315x236 [transform={m=((1.00,0.00)(0.00,1.00)) t=(50.00,50.00)}]
             RenderSVGContainer {g} at (77,182) size 315x236
index 76db98a..877268b 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/custom/js-late-clipPath-and-object-creation-expected.png and b/LayoutTests/platform/mac/svg/custom/js-late-clipPath-and-object-creation-expected.png differ
index 9e93038..0e747ff 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/custom/js-late-gradient-and-object-creation-expected.png and b/LayoutTests/platform/mac/svg/custom/js-late-gradient-and-object-creation-expected.png differ
index 924e1bd..0a0459e 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/custom/js-late-pattern-and-object-creation-expected.png and b/LayoutTests/platform/mac/svg/custom/js-late-pattern-and-object-creation-expected.png differ
index 6a5a885..508180a 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/custom/text-repaint-including-stroke-expected.png and b/LayoutTests/platform/mac/svg/custom/text-repaint-including-stroke-expected.png differ
index d42b185..b99ece1 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/custom/use-clipped-hit-expected.png and b/LayoutTests/platform/mac/svg/custom/use-clipped-hit-expected.png differ
index 8e610ed..b8b3cb9 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/custom/use-detach-expected.png and b/LayoutTests/platform/mac/svg/custom/use-detach-expected.png differ
index a887f50..b2feeb1 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/foreignObject/text-tref-02-b-expected.png and b/LayoutTests/platform/mac/svg/foreignObject/text-tref-02-b-expected.png differ
index 7a904cf..7244f80 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/text/select-textLength-spacingAndGlyphs-squeeze-1-expected.png and b/LayoutTests/platform/mac/svg/text/select-textLength-spacingAndGlyphs-squeeze-1-expected.png differ
index 9d70cc6..e758462 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/text/select-textLength-spacingAndGlyphs-squeeze-2-expected.png and b/LayoutTests/platform/mac/svg/text/select-textLength-spacingAndGlyphs-squeeze-2-expected.png differ
index dc8aff3..9d3abd8 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/text/select-textLength-spacingAndGlyphs-squeeze-3-expected.png and b/LayoutTests/platform/mac/svg/text/select-textLength-spacingAndGlyphs-squeeze-3-expected.png differ
index cfbf013..7870e52 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/text/select-textLength-spacingAndGlyphs-squeeze-4-expected.png and b/LayoutTests/platform/mac/svg/text/select-textLength-spacingAndGlyphs-squeeze-4-expected.png differ
index 0891c77..3199cfc 100644 (file)
@@ -5,7 +5,7 @@ layer at (0,0) size 800x600
     RenderSVGContainer {g} at (47,4) size 256x57
       RenderSVGPath {svg:line} at (47,4) size 6x57 [stroke={[type=SOLID] [color=#008000]}] [fill={[type=SOLID] [color=#000000]}] [x1=10.00] [y1=0.95] [x2=10.00] [y2=12.17]
       RenderSVGPath {svg:line} at (297,4) size 6x57 [stroke={[type=SOLID] [color=#008000]}] [fill={[type=SOLID] [color=#000000]}] [x1=60.00] [y1=0.95] [x2=60.00] [y2=12.17]
-      RenderSVGRect {svg:rect} at (50,4) size 250x57 [fill={[type=SOLID] [color=#FF0000] [opacity=0.40]}] [x=10.00] [y=0.95] [width=50.00] [height=11.17]
+      RenderSVGRect {svg:rect} at (50,4) size 251x57 [fill={[type=SOLID] [color=#FF0000] [opacity=0.40]}] [x=10.00] [y=0.95] [width=50.00] [height=11.17]
     RenderSVGText {text} at (10,0) size 50x12 contains 1 chunk(s)
       RenderSVGInlineText {#text} at (0,0) size 50x12
         chunk 1 text run 1 at (10.00,10.00) startOffset 0 endOffset 15 width 73.20: "Text to Squeeze"
index 221e6f3..14dcae1 100644 (file)
@@ -5,7 +5,7 @@ layer at (0,0) size 800x600
     RenderSVGContainer {g} at (47,4) size 706x57
       RenderSVGPath {svg:line} at (47,4) size 6x57 [stroke={[type=SOLID] [color=#008000]}] [fill={[type=SOLID] [color=#000000]}] [x1=10.00] [y1=0.95] [x2=10.00] [y2=12.17]
       RenderSVGPath {svg:line} at (747,4) size 6x57 [stroke={[type=SOLID] [color=#008000]}] [fill={[type=SOLID] [color=#000000]}] [x1=150.00] [y1=0.95] [x2=150.00] [y2=12.17]
-      RenderSVGRect {svg:rect} at (50,4) size 700x57 [fill={[type=SOLID] [color=#FF0000] [opacity=0.40]}] [x=10.00] [y=0.95] [width=140.00] [height=11.17]
+      RenderSVGRect {svg:rect} at (50,4) size 701x57 [fill={[type=SOLID] [color=#FF0000] [opacity=0.40]}] [x=10.00] [y=0.95] [width=140.00] [height=11.17]
     RenderSVGText {text} at (10,0) size 140x12 contains 1 chunk(s)
       RenderSVGInlineText {#text} at (0,0) size 140x12
         chunk 1 text run 1 at (10.00,10.00) startOffset 0 endOffset 15 width 65.40: "Text to Stretch"
index c37c279..2ef979a 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/text/text-align-01-b-expected.png and b/LayoutTests/platform/mac/svg/text/text-align-01-b-expected.png differ
index 5607838..755c12f 100644 (file)
@@ -6,7 +6,7 @@ layer at (0,0) size 800x600
       RenderSVGText {text} at (5,9) size 446x39 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 446x39
           chunk 1 text run 1 at (5.00,40.00) startOffset 0 endOffset 31 width 445.20: "Test 'text-anchor' (horizontal)"
-      RenderSVGContainer {g} at (33,170) size 729x309
+      RenderSVGContainer {g} at (31,170) size 731x309
         RenderSVGContainer {g} at (378,170) size 384x59 [transform={m=((1.00,0.00)(0.00,1.00)) t=(230.00,130.00)}]
           RenderSVGPath {line} at (383,215) size 84x3 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#000000]}] [x1=0.00] [y1=0.00] [x2=50.00] [y2=0.00]
           RenderSVGPath {circle} at (378,211) size 11x11 [fill={[type=SOLID] [color=#000000]}] [cx=0.00] [cy=0.00] [r=3.00]
@@ -25,11 +25,11 @@ layer at (0,0) size 800x600
           RenderSVGText {text} at (-125,-28) size 249x34 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,0) size 249x34
               chunk 1 (middle anchor) text run 1 at (-124.20,0.00) startOffset 0 endOffset 18 width 248.40: "text-anchor:middle"
-        RenderSVGContainer {g} at (33,420) size 356x59 [transform={m=((1.00,0.00)(0.00,1.00)) t=(230.00,280.00)}]
+        RenderSVGContainer {g} at (31,420) size 358x59 [transform={m=((1.00,0.00)(0.00,1.00)) t=(230.00,280.00)}]
           RenderSVGPath {line} at (300,465) size 84x3 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#000000]}] [x1=-50.00] [y1=0.00] [x2=0.00] [y2=0.00]
           RenderSVGPath {circle} at (378,461) size 11x11 [fill={[type=SOLID] [color=#000000]}] [cx=0.00] [cy=0.00] [r=3.00]
-          RenderSVGText {text} at (-210,-28) size 210x34 contains 1 chunk(s)
-            RenderSVGInlineText {#text} at (0,0) size 210x34
+          RenderSVGText {text} at (-211,-28) size 211x34 contains 1 chunk(s)
+            RenderSVGInlineText {#text} at (0,0) size 211x34
               chunk 1 (end anchor) text run 1 at (-210.00,0.00) startOffset 0 endOffset 15 width 210.00: "text-anchor:end"
     RenderSVGText {text} at (10,303) size 269x47 contains 1 chunk(s)
       RenderSVGInlineText {#text} at (0,0) size 269x47
index 9698bbe..b5676ad 100644 (file)
@@ -6,7 +6,7 @@ layer at (0,0) size 800x600
       RenderSVGText {text} at (5,9) size 477x39 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 477x39
           chunk 1 text run 1 at (5.00,40.00) startOffset 0 endOffset 34 width 476.40: "Test 'baseline-shift' (horizontal)"
-      RenderSVGContainer {g} at (25,141) size 672x333 [transform={m=((1.00,0.00)(0.00,1.00)) t=(15.00,120.00)}]
+      RenderSVGContainer {g} at (25,141) size 670x333 [transform={m=((1.00,0.00)(0.00,1.00)) t=(15.00,120.00)}]
         RenderSVGText {text} at (0,-35) size 349x41 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,7) size 98x34
             chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 6 width 97.20: "Normal"
@@ -15,7 +15,7 @@ layer at (0,0) size 800x600
               chunk 1 text run 1 at (97.20,-7.00) startOffset 0 endOffset 16 width 202.80: "baseline-shift:7"
           RenderSVGInlineText {#text} at (300,7) size 49x34
             chunk 1 text run 1 at (300.00,0.00) startOffset 0 endOffset 4 width 48.60: "text"
-        RenderSVGText {text} at (0,42) size 403x55 contains 1 chunk(s)
+        RenderSVGText {text} at (0,42) size 402x55 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,0) size 98x34
             chunk 1 text run 1 at (0.00,70.00) startOffset 0 endOffset 6 width 97.20: "Normal"
           RenderSVGTSpan {tspan} at (0,0) size 257x34
index 9f753b9..d003f77 100644 (file)
@@ -33,7 +33,7 @@ layer at (0,0) size 800x600
             RenderSVGInlineText {#text} at (0,0) size 160x34
               chunk 1 (end anchor) text run 1 at (60.40,220.00) startOffset 0 endOffset 13 width 159.60: "end text tref"
           RenderSVGInlineText {#text} at (0,0) size 0x0
-        RenderSVGText {text} at (-6,232) size 226x34 contains 1 chunk(s)
+        RenderSVGText {text} at (-5,232) size 226x34 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 226x34
             RenderSVGInlineText {#text} at (0,0) size 226x34
               chunk 1 (end anchor) text run 1 at (-0.80,260.00) startOffset 12 endOffset 13 width 8.40: " "
index 7c7469e..5eac31b 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/text/text-align-06-b-expected.png and b/LayoutTests/platform/mac/svg/text/text-align-06-b-expected.png differ
index 5aba641..b43d5a0 100644 (file)
@@ -12,8 +12,8 @@ layer at (0,0) size 800x600
             RenderSVGInlineText {#text} at (0,0) size 17x68
               chunk 1 (vertical) text run 1 at (-10.40,0.00) startOffset 0 endOffset 1 height 33.52: "t"
               chunk 1 (vertical) text run 2 at (-10.40,33.52) startOffset 1 endOffset 2 height 33.52: "e"
-            RenderSVGTSpan {tspan} at (0,0) size 18x34
-              RenderSVGInlineText {#text} at (6,67) size 17x34
+            RenderSVGTSpan {tspan} at (0,0) size 17x34
+              RenderSVGInlineText {#text} at (7,67) size 17x34
                 chunk 1 (vertical) text run 1 at (-3.40,67.03) startOffset 0 endOffset 1 height 33.52: "7"
             RenderSVGInlineText {#text} at (0,100) size 15x68
               chunk 1 (vertical) text run 1 at (-10.40,100.55) startOffset 0 endOffset 1 height 33.52: "x"
index 2c7f310..400d20b 100644 (file)
@@ -3,8 +3,8 @@ layer at (0,0) size 800x600
 layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (0,0) size 800x600
     RenderSVGContainer {g} at (16,8) size 634x462
-      RenderSVGText {text} at (10,5) size 156x19 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,0) size 156x19
+      RenderSVGText {text} at (10,5) size 157x19 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 157x19
           chunk 1 text run 1 at (10.00,20.00) startOffset 0 endOffset 23 width 156.00: "Test 'text-decoration'."
       RenderSVGContainer {g} at (40,70) size 610x400
         RenderSVGText {text} at (25,43) size 122x27 contains 1 chunk(s)
index e8f9ff9..f521b15 100644 (file)
@@ -14,8 +14,8 @@ layer at (0,0) size 800x600
           RenderSVGInlineText {#text} at (0,0) size 293x28
             chunk 1 text run 1 at (20.00,240.00) startOffset 0 endOffset 19 width 292.80: "A mono (iW) face \x{753B}\x{50CF}"
         RenderSVGContainer {g} at (66,46) size 489x314
-          RenderSVGText {text} at (40,28) size 189x28 contains 1 chunk(s)
-            RenderSVGInlineText {#text} at (0,0) size 189x28
+          RenderSVGText {text} at (40,28) size 190x28 contains 1 chunk(s)
+            RenderSVGInlineText {#text} at (0,0) size 190x28
               chunk 1 text run 1 at (40.00,50.00) startOffset 0 endOffset 17 width 189.00: "A serifed face \x{753B}\x{50CF}"
           RenderSVGText {text} at (40,107) size 233x28 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,0) size 233x28
index 51c074a..ec77fa3 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/text/text-spacing-01-b-expected.png and b/LayoutTests/platform/mac/svg/text/text-spacing-01-b-expected.png differ
index ef72609..ee51c97 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/text/text-text-04-t-expected.png and b/LayoutTests/platform/mac/svg/text/text-text-04-t-expected.png differ
index 0818ea9..d3967ac 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/text/text-text-05-t-expected.png and b/LayoutTests/platform/mac/svg/text/text-text-05-t-expected.png differ
index 3344624..9a4c4cb 100644 (file)
@@ -23,8 +23,8 @@ layer at (58,84) size 402x402
         RenderSVGRect {rect} at (146,113) size 13x12 [fill={[type=SOLID] [color=#0000FF]}] [x=0.00] [y=10.00] [width=10.00] [height=10.00]
         RenderSVGRect {rect} at (154,115) size 12x13 [fill={[type=SOLID] [color=#FFFF00]}] [x=10.00] [y=10.00] [width=10.00] [height=10.00]
       RenderSVGRect {rect} at (125,190) size 357x172 [stroke={[type=PATTERN] [id="pat2"] [stroke width=20.00]}] [x=35.00] [y=110.00] [width=410.00] [height=40.00]
-      RenderSVGText {text} at (25,164) size 318x14 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,0) size 318x14
+      RenderSVGText {text} at (25,164) size 319x14 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 319x14
           chunk 1 text run 1 at (25.00,175.00) startOffset 0 endOffset 59 width 318.00: "Pattern of 4 rectangles applied to a stroke of a rectangle."
       RenderSVGResourcePattern {pattern} [id="pat3"] [patternUnits=objectBoundingBox] [patternContentUnits=userSpaceOnUse]
         RenderSVGRect {rect} at (149,105) size 12x13 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=10.00] [height=10.00]
index 1e57459..5f86bcd 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/transforms/text-with-pattern-with-svg-transform-expected.png and b/LayoutTests/platform/mac/svg/transforms/text-with-pattern-with-svg-transform-expected.png differ
index ee67531..5010c5f 100644 (file)
@@ -16,8 +16,8 @@ layer at (0,0) size 800x600
         RenderSVGRect {rect} at (0,7) size 4x12 [fill={[type=SOLID] [color=#0000FF]}] [x=0.00] [y=10.00] [width=10.00] [height=10.00]
         RenderSVGRect {rect} at (0,11) size 11x12 [fill={[type=SOLID] [color=#FFFF00]}] [x=10.00] [y=10.00] [width=10.00] [height=10.00]
       RenderSVGRect {rect} at (0,82) size 287x224 [stroke={[type=PATTERN] [id="pat2"] [stroke width=20.00]}] [x=35.00] [y=110.00] [width=410.00] [height=40.00]
-      RenderSVGText {text} at (25,164) size 318x14 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,0) size 318x14
+      RenderSVGText {text} at (25,164) size 319x14 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 319x14
           chunk 1 text run 1 at (25.00,175.00) startOffset 0 endOffset 59 width 318.00: "Pattern of 4 rectangles applied to a stroke of a rectangle."
       RenderSVGResourcePattern {pattern} [id="pat3"] [patternUnits=objectBoundingBox] [patternContentUnits=userSpaceOnUse]
         RenderSVGRect {rect} at (0,0) size 8x12 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=10.00] [height=10.00]
index 7bd5446..578975f 100644 (file)
@@ -1,3 +1,17 @@
+2012-01-16  Nikolas Zimmermann  <nzimmermann@rim.com>
+
+        Large SVG text layout performance regression in r81168
+        https://bugs.webkit.org/show_bug.cgi?id=65711
+
+        Reviewed by Zoltan Herczeg.
+
+        Enable simple code path in SVGTextMetricsBuilder, allowing fast-measurement of simple text.
+        This affects the geometry of several <text> elements, thus several tests need rebaselining.
+
+        * rendering/svg/SVGTextMetricsBuilder.cpp:
+        (WebCore::SVGTextMetricsBuilder::advance):
+        (WebCore::SVGTextMetricsBuilder::advanceComplexText):
+
 2012-01-16  Peter Rybin  <peter.rybin@gmail.com>
 
         Web Inspector: CodeGeneratorInspector.py: generate array types.
index be758f2..ff4050f 100644 (file)
@@ -51,8 +51,6 @@ bool SVGTextMetricsBuilder::advance()
 #if PLATFORM(QT)
     advanceComplexText();
 #else
-    // FIXME: Enabling the simple code path, affects some layout test results, so this will be landed seperated.
-    m_isComplexText = true;
     if (m_isComplexText)
         advanceComplexText();
     else
@@ -92,9 +90,7 @@ void SVGTextMetricsBuilder::advanceComplexText()
     unsigned metricsLength = currentCharacterStartsSurrogatePair() ? 2 : 1;
     m_currentMetrics = SVGTextMetrics::measureCharacterRange(m_text, m_textPosition, metricsLength);
     m_complexStartToCurrentMetrics = SVGTextMetrics::measureCharacterRange(m_text, 0, m_textPosition + metricsLength);
-
-    // FIXME: Re-enable this assertion, once SVG Fonts stop using this code path.
-    // ASSERT(m_currentMetrics.length() == metricsLength);
+    ASSERT(m_currentMetrics.length() == metricsLength);
 
     // Frequent case for Arabic text: when measuring a single character the arabic isolated form is taken
     // when rendering the glyph "in context" (with it's surrounding characters) it changes due to shaping.