Reviewed by Eric.
authoroliver <oliver@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 12 Oct 2007 15:28:41 +0000 (15:28 +0000)
committeroliver <oliver@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 12 Oct 2007 15:28:41 +0000 (15:28 +0000)
Fix some issues with rotation & baseline-shift, when spanning
across <tspan> elements. Highlighted by the existing batik tests.

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

35 files changed:
LayoutTests/ChangeLog
LayoutTests/svg/batik/text/longTextOnPath-expected.checksum
LayoutTests/svg/batik/text/longTextOnPath-expected.png
LayoutTests/svg/batik/text/longTextOnPath-expected.txt
LayoutTests/svg/batik/text/smallFonts-expected.txt
LayoutTests/svg/batik/text/textEffect3-expected.checksum
LayoutTests/svg/batik/text/textEffect3-expected.png
LayoutTests/svg/batik/text/textEffect3-expected.txt
LayoutTests/svg/batik/text/textGlyphOrientationHorizontal-expected.checksum
LayoutTests/svg/batik/text/textGlyphOrientationHorizontal-expected.png
LayoutTests/svg/batik/text/textGlyphOrientationHorizontal-expected.txt
LayoutTests/svg/batik/text/textLayout2-expected.checksum
LayoutTests/svg/batik/text/textLayout2-expected.png
LayoutTests/svg/batik/text/textLayout2-expected.txt
LayoutTests/svg/batik/text/textOnPath-expected.checksum
LayoutTests/svg/batik/text/textOnPath-expected.png
LayoutTests/svg/batik/text/textOnPath-expected.txt
LayoutTests/svg/batik/text/textOnPath2-expected.checksum
LayoutTests/svg/batik/text/textOnPath2-expected.png
LayoutTests/svg/batik/text/textOnPath2-expected.txt
LayoutTests/svg/batik/text/textOnPath3-expected.checksum
LayoutTests/svg/batik/text/textOnPath3-expected.png
LayoutTests/svg/batik/text/textOnPath3-expected.txt
LayoutTests/svg/batik/text/textOnPathSpaces-expected.checksum
LayoutTests/svg/batik/text/textOnPathSpaces-expected.png
LayoutTests/svg/batik/text/textOnPathSpaces-expected.txt
LayoutTests/svg/batik/text/verticalText-expected.txt
LayoutTests/svg/batik/text/verticalTextOnPath-expected.checksum
LayoutTests/svg/batik/text/verticalTextOnPath-expected.png
LayoutTests/svg/batik/text/verticalTextOnPath-expected.txt
WebCore/ChangeLog
WebCore/rendering/SVGCharacterLayoutInfo.cpp
WebCore/rendering/SVGCharacterLayoutInfo.h
WebCore/rendering/SVGInlineTextBox.cpp
WebCore/rendering/SVGRootInlineBox.cpp

index 3b03168eac289c5ee17f63d9c3fea71191e4015f..21f0708af6b231a05e21edb74640d1bd5e3a4b97 100644 (file)
@@ -1,3 +1,51 @@
+2007-10-07  Nikolas Zimmermann  <zimmermann@kde.org>
+
+        Reviewed by Eric.
+
+        Update results after the rotation & baseline-shift fixes.
+
+        * svg/W3C-SVG-1.1/text-align-04-b-expected.checksum:
+        * svg/W3C-SVG-1.1/text-align-04-b-expected.png:
+        * svg/W3C-SVG-1.1/text-align-04-b-expected.txt:
+        * svg/W3C-SVG-1.1/text-path-01-b-expected.checksum:
+        * svg/W3C-SVG-1.1/text-path-01-b-expected.png:
+        * svg/W3C-SVG-1.1/text-path-01-b-expected.txt:
+        * svg/batik/text/longTextOnPath-expected.checksum:
+        * svg/batik/text/longTextOnPath-expected.png:
+        * svg/batik/text/longTextOnPath-expected.txt:
+        * svg/batik/text/smallFonts-expected.txt:
+        * svg/batik/text/textEffect3-expected.checksum:
+        * svg/batik/text/textEffect3-expected.png:
+        * svg/batik/text/textEffect3-expected.txt:
+        * svg/batik/text/textGlyphOrientationHorizontal-expected.checksum:
+        * svg/batik/text/textGlyphOrientationHorizontal-expected.png:
+        * svg/batik/text/textGlyphOrientationHorizontal-expected.txt:
+        * svg/batik/text/textLayout2-expected.checksum:
+        * svg/batik/text/textLayout2-expected.png:
+        * svg/batik/text/textLayout2-expected.txt:
+        * svg/batik/text/textOnPath-expected.checksum:
+        * svg/batik/text/textOnPath-expected.png:
+        * svg/batik/text/textOnPath-expected.txt:
+        * svg/batik/text/textOnPath2-expected.checksum:
+        * svg/batik/text/textOnPath2-expected.png:
+        * svg/batik/text/textOnPath2-expected.txt:
+        * svg/batik/text/textOnPath3-expected.checksum:
+        * svg/batik/text/textOnPath3-expected.png:
+        * svg/batik/text/textOnPath3-expected.txt:
+        * svg/batik/text/textOnPathSpaces-expected.checksum:
+        * svg/batik/text/textOnPathSpaces-expected.png:
+        * svg/batik/text/textOnPathSpaces-expected.txt:
+        * svg/batik/text/verticalText-expected.txt:
+        * svg/batik/text/verticalTextOnPath-expected.checksum:
+        * svg/batik/text/verticalTextOnPath-expected.png:
+        * svg/batik/text/verticalTextOnPath-expected.txt:
+        * svg/text/text-align-04-b-expected.checksum:
+        * svg/text/text-align-04-b-expected.png:
+        * svg/text/text-align-04-b-expected.txt:
+        * svg/text/text-path-01-b-expected.checksum:
+        * svg/text/text-path-01-b-expected.png:
+        * svg/text/text-path-01-b-expected.txt:
+
 2007-10-07  Mark Rowe  <mrowe@apple.com>
 
         Reviewed by Maciej.
index 890261253427e03ca602cfd497927a1cb3a6f8a3..28b15bd0dc0e904b6773532114aee843960db5ff 100644 (file)
@@ -1 +1 @@
-cee6c9725e8a57efa2c850d462f7450e
\ No newline at end of file
+2724b83c9100a58e5fad98d7c98700df
\ No newline at end of file
index b6815d1a813ded1880ebf0bb0a24966f283488d0..a92b0fa0b39ce1f62a89ba1bb86656a15df779c2 100644 (file)
Binary files a/LayoutTests/svg/batik/text/longTextOnPath-expected.png and b/LayoutTests/svg/batik/text/longTextOnPath-expected.png differ
index ab2547fbee5904371677be7356201b9066f164ce..1440d1445f0fae8a8266d5a1e5f195d9a3e7fa75 100644 (file)
@@ -12,12 +12,12 @@ layer at (0,0) size 450x500
         RenderSVGContainer {g} at (25,149.50) size 400x281
           RenderPath {path} at (25,149.50) size 400x281 [stroke={[type=SOLID] [color=#0000FF]}] [data="M25.00,150.00L425.00,150.00M25.00,170.00L425.00,170.00M25.00,190.00L425.00,190.00M25.00,210.00L425.00,210.00M25.00,230.00L425.00,230.00M25.00,250.00L425.00,250.00M25.00,270.00L425.00,270.00M25.00,290.00L425.00,290.00M25.00,310.00L425.00,310.00M25.00,330.00L425.00,330.00M25.00,350.00L425.00,350.00M25.00,370.00L425.00,370.00M25.00,390.00L425.00,390.00M25.00,410.00L425.00,410.00M25.00,430.00L425.00,430.00M25.00,450.00"]
       RenderPath {rect} at (20,100) size 205x375 [fill={[type=SOLID] [color=#C8C8FF]}] [data="M20.00,100.00L225.00,100.00L225.00,475.00L20.00,475.00"]
-      RenderSVGText {text} at (21,150) size 406x263 contains 1 chunk(s)
+      RenderSVGText {text} at (26,150) size 406x263 contains 1 chunk(s)
         RenderSVGTextPath {textPath} at (0,0) size 406x263
-          RenderSVGInlineText {#text} at (0,-18) size 406x263
-            chunk 1 text run 1 at (21.00,150.00) startOffset 0 endOffset 410 width 3210.00: "This is an example of a very long string that is split across multiple lines via the textPath tag. The purpose of this test is to ensure that text-selection can keep up even when relatively large numbers of characters are part of the selection. Since I haven't reached the end yet, let me keep going with more really quite useless text just to see if we hit a limit where it really starts to slow things down. "
-            chunk 1 text run 2 at (27.00,310.00) startOffset 0 endOffset 85 width 693.00: "However if it hasn't slowed down by now I'm guessing that it won't slow down at all. "
-            chunk 1 text run 3 at (22.00,330.00) startOffset 0 endOffset 79 width 613.00: "But you never know for sure until you try it, so I am, and here is the result. "
-            chunk 1 text run 4 at (25.00,370.00) startOffset 0 endOffset 70 width 551.00: "Selection does bog down a little near the end but it's redraw related."
+          RenderSVGInlineText {#text} at (-5,-18) size 406x263
+            chunk 1 text run 1 at (26.00,150.00) startOffset 0 endOffset 410 width 3210.00: "This is an example of a very long string that is split across multiple lines via the textPath tag. The purpose of this test is to ensure that text-selection can keep up even when relatively large numbers of characters are part of the selection. Since I haven't reached the end yet, let me keep going with more really quite useless text just to see if we hit a limit where it really starts to slow things down. "
+            chunk 1 text run 2 at (31.50,310.00) startOffset 0 endOffset 85 width 693.00: "However if it hasn't slowed down by now I'm guessing that it won't slow down at all. "
+            chunk 1 text run 3 at (26.50,330.00) startOffset 0 endOffset 79 width 613.00: "But you never know for sure until you try it, so I am, and here is the result. "
+            chunk 1 text run 4 at (29.50,370.00) startOffset 0 endOffset 70 width 551.00: "Selection does bog down a little near the end but it's redraw related."
         RenderSVGInlineText {#text} at (0,0) size 0x0
     RenderSVGContainer {use} at (0,0) size 0x0
index 7f7890ebd8bea1f8d3de4083cac61d35cb565a4e..93cc1b4fe64a6055527b86c5f70729cdb82b7f1b 100644 (file)
@@ -138,15 +138,15 @@ layer at (0,0) size 450x500
           RenderSVGContainer {use} at (264.73,406.72) size 120.27x31.56
             RenderSVGContainer {g} at (264.73,406.72) size 120.27x31.56
               RenderPath {path} at (264.73,406.72) size 120.27x31.56 [transform={m=((0.00,0.00)(0.00,0.00)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#008000] [stroke width=5.00]}] [data="M100.00,200.00C200.00,100.00,300.00,0.00,400.00,100.00C500.00,200.00,600.00,300.00,700.00,200.00C800.00,100.00,900.00,100.00,900.00,100.00"]
-          RenderSVGText {text} at (-4,-1) size 94x14 contains 1 chunk(s)
+          RenderSVGText {text} at (0,0) size 94x14 contains 1 chunk(s)
             RenderSVGTextPath {textPath} at (0,0) size 94x14
-              RenderSVGInlineText {#text} at (1,-10) size 52x14
-                chunk 1 text run 1 at (-3.50,0.00) startOffset 0 endOffset 11 width 50.00: "Small text "
+              RenderSVGInlineText {#text} at (-3,-11) size 52x14
+                chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 11 width 50.00: "Small text "
               RenderSVGTSpan {tspan} at (0,0) size 12x14
-                RenderSVGInlineText {#text} at (51,-10) size 12x14
-                  chunk 1 text run 2 at (47.00,-0.10) startOffset 0 endOffset 2 width 12.00: "on"
+                RenderSVGInlineText {#text} at (47,-11) size 12x14
+                  chunk 1 text run 2 at (50.00,0.00) startOffset 0 endOffset 2 width 12.00: "on"
               RenderSVGTSpan {tspan} at (0,0) size 31x14
-                RenderSVGInlineText {#text} at (64,-10) size 31x14
-                  chunk 1 text run 3 at (60.50,0.00) startOffset 0 endOffset 7 width 32.00: " a Path"
+                RenderSVGInlineText {#text} at (60,-11) size 31x14
+                  chunk 1 text run 3 at (62.00,0.00) startOffset 0 endOffset 7 width 32.00: " a Path"
             RenderSVGInlineText {#text} at (0,0) size 0x0
     RenderSVGContainer {use} at (0,0) size 0x0 [transform={m=((0.02,0.00)(0.00,0.02)) t=(0.00,0.00)}]
index 3b596c51948d872b49c68c366758114885d268d1..793b82f7c3b0bbfb1f0a77519999aa3610fa5f5e 100644 (file)
@@ -1 +1 @@
-8af110ae21e07a15407e5b6c932605bf
\ No newline at end of file
+d5f8dfd26f903716af5035d83dbd031c
\ No newline at end of file
index e39779f02614a28b08393563a08bd506d9dd285a..8bc2628ffe9a33c5a7eb35ce10c1ae5524bba470 100644 (file)
Binary files a/LayoutTests/svg/batik/text/textEffect3-expected.png and b/LayoutTests/svg/batik/text/textEffect3-expected.png differ
index cdf5736a88d7d3b6e758de0462fdbfe88e41bae9..0cf46569b8b412ed53de629fd734b08f5a5d09d1 100644 (file)
@@ -4,8 +4,8 @@ KCanvasResource {id="dropShadow" [type=FILTER]  [bounding box=at (-10.00%,-10.00
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
 layer at (0,0) size 450x500
-  RenderSVGRoot {svg} at (52,16) size 367x387
-    RenderSVGContainer {g} at (52,16) size 367x387
+  RenderSVGRoot {svg} at (52,16) size 363x387
+    RenderSVGContainer {g} at (52,16) size 363x387
       RenderSVGText {text} at (99,30) size 252x17 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,-14) size 252x17
           chunk 1 (middle anchor) text run 1 at (99.50,30.00) startOffset 0 endOffset 37 width 251.00: "Gradient and filter on text and tspan"
@@ -21,7 +21,7 @@ layer at (0,0) size 450x500
           RenderSVGGradientStop {stop} at (0,0) size 0x0
           RenderSVGGradientStop {stop} at (0,0) size 0x0
           RenderSVGGradientStop {stop} at (0,0) size 0x0
-      RenderSVGText {text} at (54,140) size 150x99 contains 1 chunk(s)
+      RenderSVGText {text} at (54,140) size 146x79 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,-28) size 36x59
           chunk 1 (middle anchor) text run 1 at (54.50,160.00) startOffset 0 endOffset 1 width 35.00: "B"
         RenderSVGTSpan {tspan} at (0,0) size 19x30
@@ -33,10 +33,10 @@ layer at (0,0) size 450x500
           RenderSVGInlineText {#text} at (85,-36) size 12x44
             chunk 1 (middle anchor) text run 4 at (139.50,140.00) startOffset 0 endOffset 1 width 11.00: "I"
         RenderSVGTSpan {tspan} at (0,0) size 54x68
-          RenderSVGInlineText {#text} at (96,-68) size 54x68
+          RenderSVGInlineText {#text} at (92,-46) size 54x68
             chunk 1 (middle anchor) text run 5 at (150.50,140.00) startOffset 0 endOffset 1 width 35.00: "K"
         RenderSVGInlineText {#text} at (0,0) size 0x0
-      RenderSVGText {text} at (261,140) size 156x102 contains 1 chunk(s)
+      RenderSVGText {text} at (261,140) size 152x81 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,-28) size 36x61
           chunk 1 (middle anchor) text run 1 at (261.50,160.00) startOffset 0 endOffset 1 width 35.00: "B"
         RenderSVGTSpan {tspan} at (0,0) size 20x31
@@ -48,10 +48,10 @@ layer at (0,0) size 450x500
           RenderSVGInlineText {#text} at (86,-36) size 14x46
             chunk 1 (middle anchor) text run 4 at (347.50,140.00) startOffset 0 endOffset 1 width 13.00: "I"
         RenderSVGTSpan {tspan} at (0,0) size 57x71
-          RenderSVGInlineText {#text} at (99,-69) size 57x71
+          RenderSVGInlineText {#text} at (95,-46) size 57x71
             chunk 1 (middle anchor) text run 5 at (360.50,140.00) startOffset 0 endOffset 1 width 38.00: "K"
         RenderSVGInlineText {#text} at (0,0) size 0x0
-      RenderSVGText {text} at (54,240) size 150x99 contains 1 chunk(s)
+      RenderSVGText {text} at (54,240) size 146x79 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,-28) size 36x59
           chunk 1 (middle anchor) text run 1 at (54.50,260.00) startOffset 0 endOffset 1 width 35.00: "B"
         RenderSVGTSpan {tspan} at (0,0) size 19x30
@@ -63,10 +63,10 @@ layer at (0,0) size 450x500
           RenderSVGInlineText {#text} at (85,-36) size 12x44
             chunk 1 (middle anchor) text run 4 at (139.50,240.00) startOffset 0 endOffset 1 width 11.00: "I"
         RenderSVGTSpan {tspan} at (0,0) size 54x68
-          RenderSVGInlineText {#text} at (96,-68) size 54x68
+          RenderSVGInlineText {#text} at (92,-46) size 54x68
             chunk 1 (middle anchor) text run 5 at (150.50,240.00) startOffset 0 endOffset 1 width 35.00: "K"
         RenderSVGInlineText {#text} at (0,0) size 0x0
-      RenderSVGText {text} at (261,240) size 156x102 contains 1 chunk(s)
+      RenderSVGText {text} at (261,240) size 152x81 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,-28) size 36x61
           chunk 1 (middle anchor) text run 1 at (261.50,260.00) startOffset 0 endOffset 1 width 35.00: "B"
         RenderSVGTSpan {tspan} at (0,0) size 20x31
@@ -78,10 +78,10 @@ layer at (0,0) size 450x500
           RenderSVGInlineText {#text} at (86,-36) size 14x46
             chunk 1 (middle anchor) text run 4 at (347.50,240.00) startOffset 0 endOffset 1 width 13.00: "I"
         RenderSVGTSpan {tspan} at (0,0) size 57x71
-          RenderSVGInlineText {#text} at (99,-69) size 57x71
+          RenderSVGInlineText {#text} at (95,-46) size 57x71
             chunk 1 (middle anchor) text run 5 at (360.50,240.00) startOffset 0 endOffset 1 width 38.00: "K"
         RenderSVGInlineText {#text} at (0,0) size 0x0
-      RenderSVGText {text} at (54,340) size 150x99 contains 1 chunk(s)
+      RenderSVGText {text} at (54,340) size 146x79 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,-28) size 36x59
           chunk 1 (middle anchor) text run 1 at (54.50,360.00) startOffset 0 endOffset 1 width 35.00: "B"
         RenderSVGTSpan {tspan} at (0,0) size 19x30
@@ -93,10 +93,10 @@ layer at (0,0) size 450x500
           RenderSVGInlineText {#text} at (85,-36) size 12x44
             chunk 1 (middle anchor) text run 4 at (139.50,340.00) startOffset 0 endOffset 1 width 11.00: "I"
         RenderSVGTSpan {tspan} at (0,0) size 54x68
-          RenderSVGInlineText {#text} at (96,-68) size 54x68
+          RenderSVGInlineText {#text} at (92,-46) size 54x68
             chunk 1 (middle anchor) text run 5 at (150.50,340.00) startOffset 0 endOffset 1 width 35.00: "K"
         RenderSVGInlineText {#text} at (0,0) size 0x0
-      RenderSVGText {text} at (261,340) size 156x102 contains 1 chunk(s)
+      RenderSVGText {text} at (261,340) size 152x81 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,-28) size 36x61
           chunk 1 (middle anchor) text run 1 at (261.50,360.00) startOffset 0 endOffset 1 width 35.00: "B"
         RenderSVGTSpan {tspan} at (0,0) size 20x31
@@ -108,7 +108,7 @@ layer at (0,0) size 450x500
           RenderSVGInlineText {#text} at (86,-36) size 14x46
             chunk 1 (middle anchor) text run 4 at (347.50,340.00) startOffset 0 endOffset 1 width 13.00: "I"
         RenderSVGTSpan {tspan} at (0,0) size 57x71
-          RenderSVGInlineText {#text} at (99,-69) size 57x71
+          RenderSVGInlineText {#text} at (95,-46) size 57x71
             chunk 1 (middle anchor) text run 5 at (360.50,340.00) startOffset 0 endOffset 1 width 38.00: "K"
         RenderSVGInlineText {#text} at (0,0) size 0x0
       RenderSVGText {text} at (87,400) size 66x14 contains 1 chunk(s)
index 3d032fe1000dc3f601e568f2a1a0f29607e514cd..d2afe2f22a0598763665a8c4394768ca956b1f7c 100644 (file)
@@ -1 +1 @@
-4162cc9623a6ce2a73e273f90943ce29
\ No newline at end of file
+4957f09d86b896a2a73405f456dfd2a0
\ No newline at end of file
index 6e13907c68215300a162e1afafdb769104a4c6f3..7864fd37263f3f4f93958b564bcd46f19b8eab7b 100644 (file)
Binary files a/LayoutTests/svg/batik/text/textGlyphOrientationHorizontal-expected.png and b/LayoutTests/svg/batik/text/textGlyphOrientationHorizontal-expected.png differ
index 0072b31a413025d74be6967121ba634437c59dad..8061380e5beef5ea4627bb9771b40fc0cb5737fc 100644 (file)
@@ -17,16 +17,16 @@ layer at (0,0) size 450x500
         RenderSVGContainer {use} at (239.29,68.42) size 160.71x43.16
           RenderSVGContainer {g} at (239.29,68.42) size 160.71x43.16
             RenderPath {path} at (239.29,68.42) size 160.71x43.16 [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [data="M20.00,40.00C40.00,20.00,60.00,0.00,80.00,20.00C100.00,40.00,120.00,60.00,140.00,40.00C160.00,20.00,180.00,20.00,180.00,20.00"]
-        RenderSVGText {text} at (17,4) size 137x69 contains 1 chunk(s)
+        RenderSVGText {text} at (25,12) size 137x69 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 137x69
-            RenderSVGInlineText {#text} at (-13,-14) size 71x54
-              chunk 1 text run 1 at (17.67,12.16) startOffset 0 endOffset 6 width 60.00: "Batik "
+            RenderSVGInlineText {#text} at (-21,-22) size 71x54
+              chunk 1 text run 1 at (25.67,12.16) startOffset 0 endOffset 6 width 60.00: "Batik "
             RenderSVGTSpan {tspan} at (0,0) size 34x35
-              RenderSVGInlineText {#text} at (55,-19) size 34x35
-                chunk 1 text run 2 at (69.83,4.21) startOffset 0 endOffset 2 width 17.00: "is"
+              RenderSVGInlineText {#text} at (47,-27) size 34x35
+                chunk 1 text run 2 at (72.33,14.21) startOffset 0 endOffset 2 width 17.00: "is"
             RenderSVGTSpan {tspan} at (0,0) size 62x47
-              RenderSVGInlineText {#text} at (62,3) size 62x47
-                chunk 1 text run 3 at (82.43,25.89) startOffset 0 endOffset 5 width 65.00: " Good"
+              RenderSVGInlineText {#text} at (54,-5) size 62x47
+                chunk 1 text run 3 at (85.93,25.89) startOffset 0 endOffset 5 width 65.00: " Good"
           RenderSVGInlineText {#text} at (0,0) size 0x0
       RenderPath {line} at (50,129) size 350x2 [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [fill={[type=SOLID] [color=#000000]}] [data="M50.00,130.00L400.00,130.00"]
       RenderSVGText {text} at (50,130) size 142x27 contains 1 chunk(s)
@@ -36,16 +36,16 @@ layer at (0,0) size 450x500
         RenderSVGContainer {use} at (49.55,158.48) size 320.45x43.05
           RenderSVGContainer {g} at (49.55,158.48) size 320.45x43.05
             RenderPath {path} at (49.55,158.48) size 320.45x43.05 [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [data="M20.00,40.00C60.00,20.00,100.00,0.00,140.00,20.00C180.00,40.00,220.00,60.00,260.00,40.00C300.00,20.00,340.00,20.00,340.00,20.00"]
-        RenderSVGText {text} at (19,3) size 153x62 contains 1 chunk(s)
+        RenderSVGText {text} at (27,11) size 153x62 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 153x62
-            RenderSVGInlineText {#text} at (-9,-7) size 67x48
-              chunk 1 text run 1 at (19.16,17.35) startOffset 0 endOffset 6 width 60.00: "Batik "
+            RenderSVGInlineText {#text} at (-17,-15) size 67x48
+              chunk 1 text run 1 at (27.16,17.35) startOffset 0 endOffset 6 width 60.00: "Batik "
             RenderSVGTSpan {tspan} at (0,0) size 25x29
-              RenderSVGInlineText {#text} at (47,-21) size 25x29
-                chunk 1 text run 2 at (74.95,3.71) startOffset 0 endOffset 2 width 17.00: "is"
+              RenderSVGInlineText {#text} at (39,-29) size 25x29
+                chunk 1 text run 2 at (77.45,13.71) startOffset 0 endOffset 2 width 17.00: "is"
             RenderSVGTSpan {tspan} at (0,0) size 74x41
-              RenderSVGInlineText {#text} at (70,-13) size 74x41
-                chunk 1 text run 3 at (91.61,11.78) startOffset 0 endOffset 5 width 65.00: " Good"
+              RenderSVGInlineText {#text} at (62,-21) size 74x41
+                chunk 1 text run 3 at (95.11,11.78) startOffset 0 endOffset 5 width 65.00: " Good"
           RenderSVGInlineText {#text} at (0,0) size 0x0
       RenderPath {line} at (50,239) size 150x2 [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [fill={[type=SOLID] [color=#000000]}] [data="M50.00,240.00L200.00,240.00"]
       RenderSVGText {text} at (50,240) size 142x27 contains 1 chunk(s)
@@ -55,16 +55,16 @@ layer at (0,0) size 450x500
         RenderSVGContainer {use} at (239.29,228.42) size 160.71x43.16
           RenderSVGContainer {g} at (239.29,228.42) size 160.71x43.16
             RenderPath {path} at (239.29,228.42) size 160.71x43.16 [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [data="M20.00,40.00C40.00,20.00,60.00,0.00,80.00,20.00C100.00,40.00,120.00,60.00,140.00,40.00C160.00,20.00,180.00,20.00,180.00,20.00"]
-        RenderSVGText {text} at (17,4) size 137x69 contains 1 chunk(s)
+        RenderSVGText {text} at (25,12) size 137x69 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 137x69
-            RenderSVGInlineText {#text} at (-13,-14) size 71x54
-              chunk 1 text run 1 at (17.67,12.16) startOffset 0 endOffset 6 width 60.00: "Batik "
+            RenderSVGInlineText {#text} at (-21,-22) size 71x54
+              chunk 1 text run 1 at (25.67,12.16) startOffset 0 endOffset 6 width 60.00: "Batik "
             RenderSVGTSpan {tspan} at (0,0) size 34x35
-              RenderSVGInlineText {#text} at (55,-19) size 34x35
-                chunk 1 text run 2 at (69.83,4.21) startOffset 0 endOffset 2 width 17.00: "is"
+              RenderSVGInlineText {#text} at (47,-27) size 34x35
+                chunk 1 text run 2 at (72.33,14.21) startOffset 0 endOffset 2 width 17.00: "is"
             RenderSVGTSpan {tspan} at (0,0) size 62x47
-              RenderSVGInlineText {#text} at (62,3) size 62x47
-                chunk 1 text run 3 at (82.43,25.89) startOffset 0 endOffset 5 width 65.00: " Good"
+              RenderSVGInlineText {#text} at (54,-5) size 62x47
+                chunk 1 text run 3 at (85.93,25.89) startOffset 0 endOffset 5 width 65.00: " Good"
           RenderSVGInlineText {#text} at (0,0) size 0x0
       RenderPath {line} at (50,319) size 350x2 [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [fill={[type=SOLID] [color=#000000]}] [data="M50.00,320.00L400.00,320.00"]
       RenderSVGText {text} at (50,320) size 142x27 contains 1 chunk(s)
@@ -74,14 +74,14 @@ layer at (0,0) size 450x500
         RenderSVGContainer {use} at (49.55,348.48) size 320.45x43.05
           RenderSVGContainer {g} at (49.55,348.48) size 320.45x43.05
             RenderPath {path} at (49.55,348.48) size 320.45x43.05 [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [data="M20.00,40.00C60.00,20.00,100.00,0.00,140.00,20.00C180.00,40.00,220.00,60.00,260.00,40.00C300.00,20.00,340.00,20.00,340.00,20.00"]
-        RenderSVGText {text} at (19,3) size 153x62 contains 1 chunk(s)
+        RenderSVGText {text} at (27,11) size 153x62 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 153x62
-            RenderSVGInlineText {#text} at (-9,-7) size 67x48
-              chunk 1 text run 1 at (19.16,17.35) startOffset 0 endOffset 6 width 60.00: "Batik "
+            RenderSVGInlineText {#text} at (-17,-15) size 67x48
+              chunk 1 text run 1 at (27.16,17.35) startOffset 0 endOffset 6 width 60.00: "Batik "
             RenderSVGTSpan {tspan} at (0,0) size 25x29
-              RenderSVGInlineText {#text} at (47,-21) size 25x29
-                chunk 1 text run 2 at (74.95,3.71) startOffset 0 endOffset 2 width 17.00: "is"
+              RenderSVGInlineText {#text} at (39,-29) size 25x29
+                chunk 1 text run 2 at (77.45,13.71) startOffset 0 endOffset 2 width 17.00: "is"
             RenderSVGTSpan {tspan} at (0,0) size 74x41
-              RenderSVGInlineText {#text} at (70,-13) size 74x41
-                chunk 1 text run 3 at (91.61,11.78) startOffset 0 endOffset 5 width 65.00: " Good"
+              RenderSVGInlineText {#text} at (62,-21) size 74x41
+                chunk 1 text run 3 at (95.11,11.78) startOffset 0 endOffset 5 width 65.00: " Good"
           RenderSVGInlineText {#text} at (0,0) size 0x0
index 432a3cb64824a7fb1ad7ab0d25203deae82079b2..4526c8720f7c2b1be9f61fcf848febb789577630 100644 (file)
@@ -1 +1 @@
-f16cb802bc9b04fb1386172f7bd44c96
\ No newline at end of file
+2ccde3fc8bdecfdeec597983108b164e
\ No newline at end of file
index 5716a4b6848553aa4f538186d2ebfaf35da71321..8be0770f19b684670d4f166c4149fa557911c74e 100644 (file)
Binary files a/LayoutTests/svg/batik/text/textLayout2-expected.png and b/LayoutTests/svg/batik/text/textLayout2-expected.png differ
index b7fdf7a48a483c841c79b6213e7e07292560b09e..36a3adffd84d6eced20ed7ae6b5ef9672169f4c7 100644 (file)
@@ -1,12 +1,12 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
 layer at (0,0) size 450x500
-  RenderSVGRoot {svg} at (90,36) size 250x433
+  RenderSVGRoot {svg} at (90,36) size 250x436
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
       RenderSVGText {text} at (0,0) size 44x18 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,-14) size 44x18
           chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 6 width 44.00: "sample"
-    RenderSVGContainer {g} at (90,36) size 250x433
+    RenderSVGContainer {g} at (90,36) size 250x436
       RenderSVGText {text} at (140,50) size 170x17 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,-14) size 170x17
           chunk 1 (middle anchor) text run 1 at (140.00,50.00) startOffset 0 endOffset 26 width 170.00: "Text Layout Properties (2)"
@@ -93,15 +93,15 @@ layer at (0,0) size 450x500
           chunk 14 text run 1 at (0.00,60.00) startOffset 13 endOffset 14 width 9.00: "a"
           chunk 15 text run 1 at (0.00,40.00) startOffset 14 endOffset 15 width 7.00: "r"
           chunk 16 text run 1 at (0.00,20.00) startOffset 15 endOffset 16 width 9.00: "e"
-      RenderSVGText {text} at (149,450) size 152x43 contains 1 chunk(s)
+      RenderSVGText {text} at (149,450) size 152x20 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,-13) size 63x17
           chunk 1 (middle anchor) text run 1 at (149.00,450.00) startOffset 0 endOffset 10 width 63.00: "Text with "
-        RenderSVGTSpan {tspan} at (0,0) size 46x43
-          RenderSVGInlineText {#text} at (63,-26) size 46x43
+        RenderSVGTSpan {tspan} at (0,0) size 46x20
+          RenderSVGInlineText {#text} at (62,-15) size 46x20
             chunk 1 (middle anchor) text run 2 at (212.00,450.00) startOffset 0 endOffset 7 width 43.00: "rotated"
         RenderSVGInlineText {#text} at (106,-13) size 46x17
           chunk 1 (middle anchor) text run 3 at (255.00,450.00) startOffset 0 endOffset 7 width 46.00: " glyphs"
-      RenderSVGText {text} at (162,465) size 125x33 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (1,-29) size 125x33
+      RenderSVGText {text} at (162,465) size 131x20 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (-2,-13) size 131x20
           chunk 1 (middle anchor) text run 1 at (162.00,465.00) startOffset 0 endOffset 19 width 126.00: "More rotated glyphs"
     RenderSVGContainer {use} at (0,0) size 0x0
index 245c57d019bd6b8f82bfefba7dcfaeaf67a3b40a..e13bf91a1a97a1b313dd0637d0403c144da787ce 100644 (file)
@@ -1 +1 @@
-d80ced9fe170a3e08fc2f294fc7648a1
\ No newline at end of file
+54488eeee201fcefdde2a5e79d732a8d
\ No newline at end of file
index 77614ed872afc2c236aa9697fcf35e3c318b19c6..52e2b33c4f87a2e33a8ed1f09e228bc529cab310 100644 (file)
Binary files a/LayoutTests/svg/batik/text/textOnPath-expected.png and b/LayoutTests/svg/batik/text/textOnPath-expected.png differ
index 685cfa2e27aee595722890972504ff282a1986b9..daf3b82c296c4b3fbcac136b1933617006a3ba28 100644 (file)
@@ -1,8 +1,8 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
 layer at (0,0) size 450x500
-  RenderSVGRoot {svg} at (11,26) size 427x417
-    RenderSVGContainer {g} at (11,26) size 427x417
+  RenderSVGRoot {svg} at (10,26) size 428x417
+    RenderSVGContainer {g} at (10,26) size 428x417
       RenderSVGText {text} at (160,40) size 130x17 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,-14) size 130x17
           chunk 1 (middle anchor) text run 1 at (160.00,40.00) startOffset 0 endOffset 19 width 130.00: "Text on a path test"
@@ -13,16 +13,16 @@ layer at (0,0) size 450x500
         RenderSVGContainer {use} at (29.70,70.67) size 90.60x49.33
           RenderSVGContainer {g} at (29.70,70.67) size 90.60x49.33
             RenderPath {path} at (29.70,70.67) size 90.60x49.33 [transform={m=((0.30,0.00)(0.00,0.50)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [data="M100.00,100.00C100.00,0.00,400.00,0.00,400.00,100.00"]
-        RenderSVGText {text} at (24,3) size 122x66 contains 1 chunk(s)
+        RenderSVGText {text} at (30,12) size 122x66 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 122x66
-            RenderSVGInlineText {#text} at (-13,-2) size 43x50
-              chunk 1 text run 1 at (24.45,18.29) startOffset 0 endOffset 5 width 42.00: "Text "
+            RenderSVGInlineText {#text} at (-19,-11) size 43x50
+              chunk 1 text run 1 at (30.45,18.29) startOffset 0 endOffset 5 width 42.00: "Text "
             RenderSVGTSpan {tspan} at (0,0) size 28x27
-              RenderSVGInlineText {#text} at (19,-18) size 28x27
-                chunk 1 text run 2 at (51.75,3.11) startOffset 0 endOffset 2 width 20.00: "on"
+              RenderSVGInlineText {#text} at (13,-27) size 28x27
+                chunk 1 text run 2 at (56.75,13.11) startOffset 0 endOffset 2 width 20.00: "on"
             RenderSVGTSpan {tspan} at (0,0) size 62x44
-              RenderSVGInlineText {#text} at (47,-8) size 62x44
-                chunk 1 text run 3 at (71.44,12.51) startOffset 0 endOffset 7 width 55.00: " a Path"
+              RenderSVGInlineText {#text} at (41,-17) size 62x44
+                chunk 1 text run 3 at (73.94,12.51) startOffset 0 endOffset 7 width 55.00: " a Path"
           RenderSVGInlineText {#text} at (0,0) size 0x0
         RenderSVGText {text} at (35,60) size 68x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 68x13
@@ -34,16 +34,16 @@ layer at (0,0) size 450x500
         RenderSVGContainer {use} at (179.70,70.67) size 90.60x49.33
           RenderSVGContainer {g} at (179.70,70.67) size 90.60x49.33
             RenderPath {path} at (179.70,70.67) size 90.60x49.33 [transform={m=((0.30,0.00)(0.00,0.50)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [data="M100.00,100.00C100.00,0.00,400.00,0.00,400.00,100.00"]
-        RenderSVGText {text} at (-6,-10) size 75x75 contains 1 chunk(s)
+        RenderSVGText {text} at (0,0) size 75x75 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 75x75
-            RenderSVGInlineText {#text} at (0,-8) size 46x23
-              chunk 1 (middle anchor) text run 1 at (-6.00,0.00) startOffset 0 endOffset 5 width 42.00: "Text "
+            RenderSVGInlineText {#text} at (-6,-18) size 46x23
+              chunk 1 (middle anchor) text run 1 at (0.00,0.00) startOffset 0 endOffset 5 width 42.00: "Text "
             RenderSVGTSpan {tspan} at (0,0) size 20x24
-              RenderSVGInlineText {#text} at (43,-18) size 20x24
-                chunk 1 (middle anchor) text run 2 at (37.00,-10.00) startOffset 0 endOffset 2 width 20.00: "on"
+              RenderSVGInlineText {#text} at (37,-28) size 20x24
+                chunk 1 (middle anchor) text run 2 at (42.00,0.00) startOffset 0 endOffset 2 width 20.00: "on"
             RenderSVGTSpan {tspan} at (0,0) size 57x51
-              RenderSVGInlineText {#text} at (18,6) size 57x51
-                chunk 1 (middle anchor) text run 3 at (27.72,13.71) startOffset 0 endOffset 7 width 55.00: " a Path"
+              RenderSVGInlineText {#text} at (12,-4) size 57x51
+                chunk 1 (middle anchor) text run 3 at (30.45,13.71) startOffset 0 endOffset 7 width 55.00: " a Path"
           RenderSVGInlineText {#text} at (0,0) size 0x0
         RenderSVGText {text} at (35,60) size 68x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 68x13
@@ -55,16 +55,16 @@ layer at (0,0) size 450x500
         RenderSVGContainer {use} at (329.70,70.67) size 90.60x49.33
           RenderSVGContainer {g} at (329.70,70.67) size 90.60x49.33
             RenderPath {path} at (329.70,70.67) size 90.60x49.33 [transform={m=((0.30,0.00)(0.00,0.50)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [data="M100.00,100.00C100.00,0.00,400.00,0.00,400.00,100.00"]
-        RenderSVGText {text} at (-6,-10) size 81x77 contains 1 chunk(s)
+        RenderSVGText {text} at (0,0) size 81x77 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 81x77
-            RenderSVGInlineText {#text} at (0,-8) size 46x23
-              chunk 1 (end anchor) text run 1 at (-6.00,0.00) startOffset 0 endOffset 5 width 42.00: "Text "
+            RenderSVGInlineText {#text} at (-6,-18) size 46x23
+              chunk 1 (end anchor) text run 1 at (0.00,0.00) startOffset 0 endOffset 5 width 42.00: "Text "
             RenderSVGTSpan {tspan} at (0,0) size 46x77
-              RenderSVGInlineText {#text} at (7,-18) size 46x77
-                chunk 1 (end anchor) text run 2 at (25.39,-10.00) startOffset 0 endOffset 2 width 20.00: "on"
+              RenderSVGInlineText {#text} at (1,-28) size 46x77
+                chunk 1 (end anchor) text run 2 at (30.39,0.00) startOffset 0 endOffset 2 width 20.00: "on"
             RenderSVGTSpan {tspan} at (0,0) size 61x46
-              RenderSVGInlineText {#text} at (20,5) size 61x46
-                chunk 1 (end anchor) text run 3 at (29.74,12.71) startOffset 0 endOffset 7 width 55.00: " a Path"
+              RenderSVGInlineText {#text} at (14,-5) size 61x46
+                chunk 1 (end anchor) text run 3 at (32.24,12.71) startOffset 0 endOffset 7 width 55.00: " a Path"
           RenderSVGInlineText {#text} at (0,0) size 0x0
         RenderSVGText {text} at (35,60) size 73x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 73x13
@@ -72,20 +72,20 @@ layer at (0,0) size 450x500
         RenderSVGText {text} at (35,70) size 72x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 72x13
             chunk 1 text run 1 at (35.00,70.00) startOffset 0 endOffset 17 width 72.00: "text-anchor=\"end\""
-      RenderSVGContainer {g} at (29.70,165) size 140.30x78 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,170.00)}]
+      RenderSVGContainer {g} at (29.70,165) size 153.30x78 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,170.00)}]
         RenderSVGContainer {use} at (29.70,170.67) size 90.60x49.33
           RenderSVGContainer {g} at (29.70,170.67) size 90.60x49.33
             RenderPath {path} at (29.70,170.67) size 90.60x49.33 [transform={m=((0.30,0.00)(0.00,0.50)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [data="M100.00,100.00C100.00,0.00,400.00,0.00,400.00,100.00"]
-        RenderSVGText {text} at (74,12) size 96x59 contains 1 chunk(s)
-          RenderSVGTextPath {textPath} at (0,0) size 96x59
-            RenderSVGInlineText {#text} at (0,-17) size 52x37
-              chunk 1 text run 1 at (74.99,12.80) startOffset 0 endOffset 5 width 42.00: "Text "
+        RenderSVGText {text} at (80,12) size 109x60 contains 1 chunk(s)
+          RenderSVGTextPath {textPath} at (0,0) size 109x60
+            RenderSVGInlineText {#text} at (-6,-17) size 52x37
+              chunk 1 text run 1 at (80.99,12.80) startOffset 0 endOffset 5 width 42.00: "Text "
             RenderSVGTSpan {tspan} at (0,0) size 30x32
-              RenderSVGInlineText {#text} at (43,1) size 30x32
-                chunk 1 text run 2 at (110.39,22.26) startOffset 0 endOffset 2 width 20.00: "on"
-            RenderSVGTSpan {tspan} at (0,0) size 56x24
-              RenderSVGInlineText {#text} at (40,18) size 56x24
-                chunk 1 text run 3 at (117.49,48.94) startOffset 0 endOffset 7 width 55.00: " a Path"
+              RenderSVGInlineText {#text} at (37,1) size 30x32
+                chunk 1 text run 2 at (115.39,32.26) startOffset 0 endOffset 2 width 20.00: "on"
+            RenderSVGTSpan {tspan} at (0,0) size 69x12
+              RenderSVGInlineText {#text} at (34,31) size 69x12
+                chunk 1 text run 3 at (119.99,48.94) startOffset 0 endOffset 7 width 55.00: " a Path"
           RenderSVGInlineText {#text} at (0,0) size 0x0
         RenderSVGText {text} at (35,60) size 73x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 73x13
@@ -97,16 +97,16 @@ layer at (0,0) size 450x500
         RenderSVGContainer {use} at (179.70,170.67) size 90.60x49.33
           RenderSVGContainer {g} at (179.70,170.67) size 90.60x49.33
             RenderPath {path} at (179.70,170.67) size 90.60x49.33 [transform={m=((0.30,0.00)(0.00,0.50)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [data="M100.00,100.00C100.00,0.00,400.00,0.00,400.00,100.00"]
-        RenderSVGText {text} at (26,2) size 124x60 contains 1 chunk(s)
+        RenderSVGText {text} at (32,12) size 124x60 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 124x60
-            RenderSVGInlineText {#text} at (-13,-4) size 47x47
-              chunk 1 (middle anchor) text run 1 at (26.24,15.53) startOffset 0 endOffset 5 width 42.00: "Text "
+            RenderSVGInlineText {#text} at (-19,-14) size 47x47
+              chunk 1 (middle anchor) text run 1 at (32.24,15.53) startOffset 0 endOffset 5 width 42.00: "Text "
             RenderSVGTSpan {tspan} at (0,0) size 25x25
-              RenderSVGInlineText {#text} at (27,-17) size 25x25
-                chunk 1 (middle anchor) text run 2 at (58.57,2.52) startOffset 0 endOffset 2 width 20.00: "on"
+              RenderSVGInlineText {#text} at (21,-27) size 25x25
+                chunk 1 (middle anchor) text run 2 at (63.57,12.52) startOffset 0 endOffset 2 width 20.00: "on"
             RenderSVGTSpan {tspan} at (0,0) size 59x50
-              RenderSVGInlineText {#text} at (52,-7) size 59x50
-                chunk 1 (middle anchor) text run 3 at (78.49,12.80) startOffset 0 endOffset 7 width 55.00: " a Path"
+              RenderSVGInlineText {#text} at (46,-17) size 59x50
+                chunk 1 (middle anchor) text run 3 at (80.99,12.80) startOffset 0 endOffset 7 width 55.00: " a Path"
           RenderSVGInlineText {#text} at (0,0) size 0x0
         RenderSVGText {text} at (35,60) size 73x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 73x13
@@ -118,16 +118,16 @@ layer at (0,0) size 450x500
         RenderSVGContainer {use} at (329.70,170.67) size 90.60x49.33
           RenderSVGContainer {g} at (329.70,170.67) size 90.60x49.33
             RenderPath {path} at (329.70,170.67) size 90.60x49.33 [transform={m=((0.30,0.00)(0.00,0.50)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [data="M100.00,100.00C100.00,0.00,400.00,0.00,400.00,100.00"]
-        RenderSVGText {text} at (29,2) size 121x66 contains 1 chunk(s)
+        RenderSVGText {text} at (35,12) size 121x66 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 121x66
-            RenderSVGInlineText {#text} at (-12,-6) size 50x43
-              chunk 1 (end anchor) text run 1 at (29.43,13.68) startOffset 0 endOffset 5 width 42.00: "Text "
+            RenderSVGInlineText {#text} at (-18,-16) size 50x43
+              chunk 1 (end anchor) text run 1 at (35.43,13.68) startOffset 0 endOffset 5 width 42.00: "Text "
             RenderSVGTSpan {tspan} at (0,0) size 25x23
-              RenderSVGInlineText {#text} at (34,-17) size 25x23
-                chunk 1 (end anchor) text run 2 at (65.56,2.66) startOffset 0 endOffset 2 width 20.00: "on"
+              RenderSVGInlineText {#text} at (28,-27) size 25x23
+                chunk 1 (end anchor) text run 2 at (70.56,12.66) startOffset 0 endOffset 2 width 20.00: "on"
             RenderSVGTSpan {tspan} at (0,0) size 54x55
-              RenderSVGInlineText {#text} at (55,-6) size 54x55
-                chunk 1 (end anchor) text run 3 at (85.45,13.92) startOffset 0 endOffset 7 width 55.00: " a Path"
+              RenderSVGInlineText {#text} at (49,-16) size 54x55
+                chunk 1 (end anchor) text run 3 at (87.95,13.92) startOffset 0 endOffset 7 width 55.00: " a Path"
           RenderSVGInlineText {#text} at (0,0) size 0x0
         RenderSVGText {text} at (35,60) size 78x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 78x13
@@ -135,20 +135,20 @@ layer at (0,0) size 450x500
         RenderSVGText {text} at (35,70) size 72x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 72x13
             chunk 1 text run 1 at (35.00,70.00) startOffset 0 endOffset 17 width 72.00: "text-anchor=\"end\""
-      RenderSVGContainer {g} at (29.70,257) size 120.30x86 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,270.00)}]
+      RenderSVGContainer {g} at (29.70,257) size 133.30x86 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,270.00)}]
         RenderSVGContainer {use} at (29.70,270.67) size 90.60x49.33
           RenderSVGContainer {g} at (29.70,270.67) size 90.60x49.33
             RenderPath {path} at (29.70,270.67) size 90.60x49.33 [transform={m=((0.30,0.00)(0.00,0.50)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [data="M100.00,100.00C100.00,0.00,400.00,0.00,400.00,100.00"]
-        RenderSVGText {text} at (45,4) size 112x60 contains 1 chunk(s)
-          RenderSVGTextPath {textPath} at (0,0) size 112x60
-            RenderSVGInlineText {#text} at (-7,-9) size 51x30
-              chunk 1 text run 1 at (45.19,12.60) startOffset 0 endOffset 5 width 42.00: "Text "
+        RenderSVGText {text} at (51,12) size 125x60 contains 1 chunk(s)
+          RenderSVGTextPath {textPath} at (0,0) size 125x60
+            RenderSVGInlineText {#text} at (-13,-17) size 51x30
+              chunk 1 text run 1 at (51.19,12.60) startOffset 0 endOffset 5 width 42.00: "Text "
             RenderSVGTSpan {tspan} at (0,0) size 31x29
-              RenderSVGInlineText {#text} at (42,-17) size 31x29
-                chunk 1 text run 2 at (86.23,4.76) startOffset 0 endOffset 2 width 20.00: "on"
-            RenderSVGTSpan {tspan} at (0,0) size 49x41
-              RenderSVGInlineText {#text} at (56,2) size 49x41
-                chunk 1 text run 3 at (104.30,22.53) startOffset 0 endOffset 7 width 55.00: " a Path"
+              RenderSVGInlineText {#text} at (36,-25) size 31x29
+                chunk 1 text run 2 at (91.23,14.76) startOffset 0 endOffset 2 width 20.00: "on"
+            RenderSVGTSpan {tspan} at (0,0) size 62x41
+              RenderSVGInlineText {#text} at (50,-6) size 62x41
+                chunk 1 text run 3 at (106.80,22.53) startOffset 0 endOffset 7 width 55.00: " a Path"
           RenderSVGInlineText {#text} at (0,0) size 0x0
         RenderSVGText {text} at (35,60) size 65x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 65x13
@@ -160,16 +160,16 @@ layer at (0,0) size 450x500
         RenderSVGContainer {use} at (179.70,270.67) size 90.60x49.33
           RenderSVGContainer {g} at (179.70,270.67) size 90.60x49.33
             RenderPath {path} at (179.70,270.67) size 90.60x49.33 [transform={m=((0.30,0.00)(0.00,0.50)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [data="M100.00,100.00C100.00,0.00,400.00,0.00,400.00,100.00"]
-        RenderSVGText {text} at (-6,0) size 115x71 contains 1 chunk(s)
+        RenderSVGText {text} at (0,0) size 115x71 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 115x71
-            RenderSVGInlineText {#text} at (0,-18) size 45x71
-              chunk 1 (middle anchor) text run 1 at (-6.00,0.00) startOffset 0 endOffset 5 width 42.00: "Text "
+            RenderSVGInlineText {#text} at (-6,-18) size 45x71
+              chunk 1 (middle anchor) text run 1 at (0.00,0.00) startOffset 0 endOffset 5 width 42.00: "Text "
             RenderSVGTSpan {tspan} at (0,0) size 34x33
-              RenderSVGInlineText {#text} at (18,-4) size 34x33
-                chunk 1 (middle anchor) text run 2 at (32.42,11.40) startOffset 0 endOffset 2 width 20.00: "on"
+              RenderSVGInlineText {#text} at (12,-4) size 34x33
+                chunk 1 (middle anchor) text run 2 at (37.42,21.40) startOffset 0 endOffset 2 width 20.00: "on"
             RenderSVGTSpan {tspan} at (0,0) size 68x29
-              RenderSVGInlineText {#text} at (47,-5) size 68x29
-                chunk 1 (middle anchor) text run 3 at (48.69,12.55) startOffset 0 endOffset 7 width 55.00: " a Path"
+              RenderSVGInlineText {#text} at (41,-5) size 68x29
+                chunk 1 (middle anchor) text run 3 at (51.19,12.55) startOffset 0 endOffset 7 width 55.00: " a Path"
           RenderSVGInlineText {#text} at (0,0) size 0x0
         RenderSVGText {text} at (35,60) size 65x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 65x13
@@ -181,16 +181,16 @@ layer at (0,0) size 450x500
         RenderSVGContainer {use} at (329.70,270.67) size 90.60x49.33
           RenderSVGContainer {g} at (329.70,270.67) size 90.60x49.33
             RenderPath {path} at (329.70,270.67) size 90.60x49.33 [transform={m=((0.30,0.00)(0.00,0.50)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [data="M100.00,100.00C100.00,0.00,400.00,0.00,400.00,100.00"]
-        RenderSVGText {text} at (-6,-10) size 85x80 contains 1 chunk(s)
+        RenderSVGText {text} at (0,0) size 85x80 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 85x80
-            RenderSVGInlineText {#text} at (0,-8) size 46x23
-              chunk 1 (end anchor) text run 1 at (-6.00,0.00) startOffset 0 endOffset 5 width 42.00: "Text "
+            RenderSVGInlineText {#text} at (-6,-18) size 46x23
+              chunk 1 (end anchor) text run 1 at (0.00,0.00) startOffset 0 endOffset 5 width 42.00: "Text "
             RenderSVGTSpan {tspan} at (0,0) size 20x24
-              RenderSVGInlineText {#text} at (43,-18) size 20x24
-                chunk 1 (end anchor) text run 2 at (37.00,-10.00) startOffset 0 endOffset 2 width 20.00: "on"
+              RenderSVGInlineText {#text} at (37,-28) size 20x24
+                chunk 1 (end anchor) text run 2 at (42.00,0.00) startOffset 0 endOffset 2 width 20.00: "on"
             RenderSVGTSpan {tspan} at (0,0) size 68x70
-              RenderSVGInlineText {#text} at (17,-8) size 68x70
-                chunk 1 (end anchor) text run 3 at (24.75,0.00) startOffset 0 endOffset 7 width 55.00: " a Path"
+              RenderSVGInlineText {#text} at (11,-18) size 68x70
+                chunk 1 (end anchor) text run 3 at (30.25,0.00) startOffset 0 endOffset 7 width 55.00: " a Path"
           RenderSVGInlineText {#text} at (0,0) size 0x0
         RenderSVGText {text} at (35,60) size 65x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 65x13
@@ -198,22 +198,22 @@ layer at (0,0) size 450x500
         RenderSVGText {text} at (35,70) size 72x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 72x13
             chunk 1 text run 1 at (35.00,70.00) startOffset 0 endOffset 17 width 72.00: "text-anchor=\"end\""
-      RenderSVGContainer {g} at (15,366) size 130x77 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,370.00)}]
+      RenderSVGContainer {g} at (10,360) size 135x83 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,370.00)}]
         RenderSVGContainer {use} at (24.89,377.29) size 120.11x30.43
           RenderSVGContainer {g} at (24.89,377.29) size 120.11x30.43
             RenderPath {path} at (24.89,377.29) size 120.11x30.43 [transform={m=((0.15,0.00)(0.00,0.15)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [data="M100.00,200.00C200.00,100.00,300.00,0.00,400.00,100.00C500.00,200.00,600.00,300.00,700.00,200.00C800.00,100.00,900.00,100.00,900.00,100.00"]
-        RenderSVGText {text} at (14,8) size 117x45 contains 1 chunk(s)
-          RenderSVGTextPath {textPath} at (0,0) size 117x45
-            RenderSVGTSpan {tspan} at (0,0) size 38x31
-              RenderSVGInlineText {#text} at (-9,-10) size 38x31
-                chunk 1 text run 1 at (14.12,10.38) startOffset 0 endOffset 5 width 34.00: "super"
-            RenderSVGInlineText {#text} at (25,-12) size 38x30
-              chunk 1 text run 2 at (41.70,8.97) startOffset 0 endOffset 5 width 31.00: " and "
-            RenderSVGTSpan {tspan} at (0,0) size 27x23
-              RenderSVGInlineText {#text} at (51,8) size 27x23
-                chunk 1 text run 3 at (66.99,29.16) startOffset 0 endOffset 3 width 22.00: "sub"
-            RenderSVGInlineText {#text} at (70,-1) size 38x34
-              chunk 1 text run 4 at (85.60,20.46) startOffset 0 endOffset 7 width 40.00: "scripts"
+        RenderSVGText {text} at (17,8) size 122x56 contains 1 chunk(s)
+          RenderSVGTextPath {textPath} at (0,0) size 122x56
+            RenderSVGTSpan {tspan} at (0,0) size 40x37
+              RenderSVGInlineText {#text} at (-17,-18) size 40x37
+                chunk 1 text run 1 at (17.12,10.38) startOffset 0 endOffset 5 width 34.00: "super"
+            RenderSVGInlineText {#text} at (22,-12) size 38x30
+              chunk 1 text run 2 at (43.70,8.97) startOffset 0 endOffset 5 width 31.00: " and "
+            RenderSVGTSpan {tspan} at (0,0) size 29x27
+              RenderSVGInlineText {#text} at (42,11) size 29x27
+                chunk 1 text run 3 at (69.99,24.66) startOffset 0 endOffset 3 width 22.00: "sub"
+            RenderSVGInlineText {#text} at (67,-1) size 38x34
+              chunk 1 text run 4 at (88.60,20.46) startOffset 0 endOffset 7 width 40.00: "scripts"
           RenderSVGInlineText {#text} at (0,0) size 0x0
         RenderSVGText {text} at (20,60) size 88x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 88x13
@@ -221,20 +221,20 @@ layer at (0,0) size 450x500
         RenderSVGText {text} at (20,70) size 98x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 98x13
             chunk 1 text run 1 at (20.00,70.00) startOffset 0 endOffset 24 width 98.00: "and baseline-shift=\"sub\""
-      RenderSVGContainer {g} at (160,366) size 130x67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(155.00,370.00)}]
+      RenderSVGContainer {g} at (158,363) size 132x70 [transform={m=((1.00,0.00)(0.00,1.00)) t=(155.00,370.00)}]
         RenderSVGContainer {use} at (169.89,377.29) size 120.11x30.43
           RenderSVGContainer {g} at (169.89,377.29) size 120.11x30.43
             RenderPath {path} at (169.89,377.29) size 120.11x30.43 [transform={m=((0.15,0.00)(0.00,0.15)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [data="M100.00,200.00C200.00,100.00,300.00,0.00,400.00,100.00C500.00,200.00,600.00,300.00,700.00,200.00C800.00,100.00,900.00,100.00,900.00,100.00"]
-        RenderSVGText {text} at (13,8) size 122x46 contains 1 chunk(s)
-          RenderSVGTextPath {textPath} at (0,0) size 122x46
-            RenderSVGTSpan {tspan} at (0,0) size 56x34
-              RenderSVGInlineText {#text} at (-8,-12) size 56x34
-                chunk 1 text run 1 at (13.83,8.83) startOffset 0 endOffset 8 width 49.00: "positive"
-            RenderSVGInlineText {#text} at (40,-7) size 34x34
-              chunk 1 text run 2 at (55.69,12.92) startOffset 0 endOffset 5 width 31.00: " and "
-            RenderSVGTSpan {tspan} at (0,0) size 50x38
-              RenderSVGInlineText {#text} at (64,-4) size 50x38
-                chunk 1 text run 3 at (78.94,18.06) startOffset 0 endOffset 8 width 53.00: "negative"
+        RenderSVGText {text} at (17,8) size 125x50 contains 1 chunk(s)
+          RenderSVGTextPath {textPath} at (0,0) size 125x50
+            RenderSVGTSpan {tspan} at (0,0) size 60x38
+              RenderSVGInlineText {#text} at (-14,-15) size 60x38
+                chunk 1 text run 1 at (17.83,8.83) startOffset 0 endOffset 8 width 49.00: "positive"
+            RenderSVGInlineText {#text} at (36,-7) size 34x34
+              chunk 1 text run 2 at (57.69,12.92) startOffset 0 endOffset 5 width 31.00: " and "
+            RenderSVGTSpan {tspan} at (0,0) size 52x36
+              RenderSVGInlineText {#text} at (59,-1) size 52x36
+                chunk 1 text run 3 at (82.94,18.06) startOffset 0 endOffset 8 width 53.00: "negative"
           RenderSVGInlineText {#text} at (0,0) size 0x0
         RenderSVGText {text} at (20,60) size 97x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 97x13
@@ -244,13 +244,13 @@ layer at (0,0) size 450x500
           RenderSVGContainer {use} at (314.85,390.33) size 45.30x24.67
             RenderSVGContainer {g} at (314.85,390.33) size 45.30x24.67
               RenderPath {path} at (314.85,390.33) size 45.30x24.67 [transform={m=((0.30,0.00)(0.00,0.50)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [data="M100.00,100.00C100.00,0.00,400.00,0.00,400.00,100.00"]
-          RenderSVGText {text} at (28,-20) size 231x89 contains 1 chunk(s)
-            RenderSVGInlineText {#text} at (2,-28) size 143x37
+          RenderSVGText {text} at (30,-20) size 231x89 contains 1 chunk(s)
+            RenderSVGInlineText {#text} at (0,-28) size 143x37
               chunk 1 text run 1 at (30.00,-20.00) startOffset 0 endOffset 12 width 143.00: "before path "
             RenderSVGTextPath {textPath} at (0,0) size 116x56
-              RenderSVGInlineText {#text} at (-20,5) size 116x56
-                chunk 1 text run 2 at (28.21,12.90) startOffset 0 endOffset 7 width 89.00: "on path"
-            RenderSVGInlineText {#text} at (89,12) size 122x36
+              RenderSVGInlineText {#text} at (-22,5) size 116x56
+                chunk 1 text run 2 at (35.71,12.90) startOffset 0 endOffset 7 width 89.00: "on path"
+            RenderSVGInlineText {#text} at (87,12) size 122x36
               chunk 1 text run 3 at (117.77,19.76) startOffset 0 endOffset 11 width 121.00: " after path"
         RenderSVGText {text} at (15,40) size 98x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 98x13
index be44ec55826f45ba39bc2f73d9ef54f1c9d887cf..27a249ac35f53a0c4740e03b2fd2f5807c4f1913 100644 (file)
@@ -1 +1 @@
-9a3908bc8191db59022a5df422469099
\ No newline at end of file
+74ba68b0d92e74767c9927bb75c8b171
\ No newline at end of file
index 721624c6be02b53bae2999d642f09a997541fbc6..72e8334bc4ad0fc2fd99d822aaed92ddd598ab94 100644 (file)
Binary files a/LayoutTests/svg/batik/text/textOnPath2-expected.png and b/LayoutTests/svg/batik/text/textOnPath2-expected.png differ
index c6a534a4d903bb607b19c8e85c47e0bce7686147..0bde1b3925dcc4e8ed392d68a09d5cb609376a96 100644 (file)
@@ -26,68 +26,68 @@ layer at (0,0) size 450x500
       RenderSVGContainer {use} at (139.50,59.33) size 141x125.67
         RenderSVGContainer {g} at (139.50,59.33) size 141x125.67
           RenderPath {path} at (139.50,59.33) size 141x125.67 [stroke={[type=SOLID] [color=#0000FF]}] [data="M100.00,0.00C100.00,-125.00,240.00,-125.00,240.00,0.00"]
-      RenderSVGText {text} at (10,-104) size 403x121 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,90) size 87x18
+      RenderSVGText {text} at (10,-94) size 403x121 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,80) size 87x18
           chunk 1 text run 1 at (10.00,0.00) startOffset 0 endOffset 14 width 87.00: "This is simple"
         RenderSVGTextPath {textPath} at (0,0) size 149x117
-          RenderSVGInlineText {#text} at (75,17) size 46x87
-            chunk 1 text run 2 at (96.67,-74.64) startOffset 0 endOffset 14 width 85.00: "text on a path"
+          RenderSVGInlineText {#text} at (75,7) size 46x87
+            chunk 1 text run 2 at (100.01,-74.64) startOffset 0 endOffset 14 width 85.00: "text on a path"
           RenderSVGTSpan {tspan} at (0,0) size 91x36
-            RenderSVGInlineText {#text} at (104,-13) size 91x36
-              chunk 1 text run 3 at (127.33,-103.72) startOffset 0 endOffset 11 width 72.00: "with nested"
+            RenderSVGInlineText {#text} at (104,-23) size 91x36
+              chunk 1 text run 3 at (133.33,-93.72) startOffset 0 endOffset 11 width 72.00: "with nested"
           RenderSVGTSpan {tspan} at (0,0) size 41x40
-            RenderSVGInlineText {#text} at (183,4) size 41x40
-              chunk 1 text run 4 at (195.48,-87.01) startOffset 0 endOffset 6 width 37.00: " tspan"
-        RenderSVGInlineText {#text} at (218,24) size 33x18
+            RenderSVGInlineText {#text} at (183,-6) size 41x40
+              chunk 1 text run 4 at (197.48,-87.01) startOffset 0 endOffset 6 width 37.00: " tspan"
+        RenderSVGInlineText {#text} at (218,14) size 33x18
           chunk 1 text run 5 at (228.78,-66.97) startOffset 0 endOffset 5 width 32.00: " xxx "
         RenderSVGTSpan {tspan} at (0,0) size 52x18
-          RenderSVGInlineText {#text} at (260,24) size 52x18
+          RenderSVGInlineText {#text} at (260,14) size 52x18
             chunk 1 text run 6 at (270.78,-66.97) startOffset 0 endOffset 9 width 51.00: "all with "
-        RenderSVGInlineText {#text} at (311,24) size 92x18
+        RenderSVGInlineText {#text} at (311,14) size 92x18
           chunk 1 text run 7 at (321.78,-66.97) startOffset 0 endOffset 16 width 91.00: "different links."
     RenderSVGContainer {g} at (50,204.33) size 415x129.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(40.00,330.00)}]
       RenderSVGContainer {use} at (139.50,204.33) size 141x125.67
         RenderSVGContainer {g} at (139.50,204.33) size 141x125.67
           RenderPath {path} at (139.50,204.33) size 141x125.67 [stroke={[type=SOLID] [color=#0000FF]}] [data="M100.00,0.00C100.00,-125.00,240.00,-125.00,240.00,0.00"]
-      RenderSVGText {text} at (10,-104) size 415x121 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,90) size 87x18
+      RenderSVGText {text} at (10,-94) size 415x121 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,80) size 87x18
           chunk 1 text run 1 at (10.00,0.00) startOffset 0 endOffset 14 width 87.00: "This is simple"
         RenderSVGTextPath {textPath} at (0,0) size 159x93
-          RenderSVGInlineText {#text} at (78,1) size 64x79
-            chunk 1 text run 2 at (100.31,-89.20) startOffset 0 endOffset 14 width 85.00: "text on a path"
+          RenderSVGInlineText {#text} at (78,-9) size 64x79
+            chunk 1 text run 2 at (102.61,-89.20) startOffset 0 endOffset 14 width 85.00: "text on a path"
           RenderSVGTSpan {tspan} at (0,0) size 88x41
-            RenderSVGInlineText {#text} at (135,-13) size 88x41
-              chunk 1 text run 3 at (150.76,-103.73) startOffset 0 endOffset 11 width 72.00: "with nested"
+            RenderSVGInlineText {#text} at (135,-23) size 88x41
+              chunk 1 text run 3 at (156.76,-93.73) startOffset 0 endOffset 11 width 72.00: "with nested"
           RenderSVGTSpan {tspan} at (0,0) size 34x43
-            RenderSVGInlineText {#text} at (203,23) size 34x43
-              chunk 1 text run 4 at (215.71,-70.80) startOffset 0 endOffset 6 width 37.00: " tspan"
-        RenderSVGInlineText {#text} at (230,46) size 33x19
+            RenderSVGInlineText {#text} at (203,13) size 34x43
+              chunk 1 text run 4 at (217.71,-70.80) startOffset 0 endOffset 6 width 37.00: " tspan"
+        RenderSVGInlineText {#text} at (230,36) size 33x19
           chunk 1 text run 5 at (240.96,-44.00) startOffset 0 endOffset 5 width 32.00: " xxx "
         RenderSVGTSpan {tspan} at (0,0) size 52x19
-          RenderSVGInlineText {#text} at (272,46) size 52x19
+          RenderSVGInlineText {#text} at (272,36) size 52x19
             chunk 1 text run 6 at (282.96,-44.00) startOffset 0 endOffset 9 width 51.00: "all with "
-        RenderSVGInlineText {#text} at (323,46) size 92x19
+        RenderSVGInlineText {#text} at (323,36) size 92x19
           chunk 1 text run 7 at (333.96,-44.00) startOffset 0 endOffset 16 width 91.00: "different links."
     RenderSVGContainer {g} at (50,349.33) size 417x129.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(40.00,475.00)}]
       RenderSVGContainer {use} at (139.50,349.33) size 141x125.67
         RenderSVGContainer {g} at (139.50,349.33) size 141x125.67
           RenderPath {path} at (139.50,349.33) size 141x125.67 [stroke={[type=SOLID] [color=#0000FF]}] [data="M100.00,0.00C100.00,-125.00,240.00,-125.00,240.00,0.00"]
-      RenderSVGText {text} at (10,-104) size 417x121 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,90) size 87x18
+      RenderSVGText {text} at (10,-94) size 417x121 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,80) size 87x18
           chunk 1 text run 1 at (10.00,0.00) startOffset 0 endOffset 14 width 87.00: "This is simple"
         RenderSVGTextPath {textPath} at (0,0) size 160x86
-          RenderSVGInlineText {#text} at (80,-2) size 69x75
-            chunk 1 text run 2 at (102.26,-91.59) startOffset 0 endOffset 14 width 85.00: "text on a path"
+          RenderSVGInlineText {#text} at (80,-12) size 69x75
+            chunk 1 text run 2 at (104.26,-91.59) startOffset 0 endOffset 14 width 85.00: "text on a path"
           RenderSVGTSpan {tspan} at (0,0) size 85x48
-            RenderSVGInlineText {#text} at (145,-13) size 85x48
-              chunk 1 text run 3 at (158.01,-103.72) startOffset 0 endOffset 11 width 72.00: "with nested"
+            RenderSVGInlineText {#text} at (145,-23) size 85x48
+              chunk 1 text run 3 at (164.01,-93.72) startOffset 0 endOffset 11 width 72.00: "with nested"
           RenderSVGTSpan {tspan} at (0,0) size 33x43
-            RenderSVGInlineText {#text} at (207,30) size 33x43
-              chunk 1 text run 4 at (220.21,-64.99) startOffset 0 endOffset 6 width 37.00: " tspan"
-        RenderSVGInlineText {#text} at (233,53) size 32x19
+            RenderSVGInlineText {#text} at (207,20) size 33x43
+              chunk 1 text run 4 at (222.21,-64.99) startOffset 0 endOffset 6 width 37.00: " tspan"
+        RenderSVGInlineText {#text} at (233,43) size 32x19
           chunk 1 text run 5 at (243.21,-37.01) startOffset 0 endOffset 5 width 32.00: " xxx "
         RenderSVGTSpan {tspan} at (0,0) size 51x19
-          RenderSVGInlineText {#text} at (275,53) size 51x19
+          RenderSVGInlineText {#text} at (275,43) size 51x19
             chunk 1 text run 6 at (285.21,-37.01) startOffset 0 endOffset 9 width 51.00: "all with "
-        RenderSVGInlineText {#text} at (326,53) size 91x19
+        RenderSVGInlineText {#text} at (326,43) size 91x19
           chunk 1 text run 7 at (336.21,-37.01) startOffset 0 endOffset 16 width 91.00: "different links."
index 43606ce3034072fb087056929770010848b91933..97d289a8fd8b0396988148366be47bd82bff563e 100644 (file)
@@ -1 +1 @@
-4efe2a0f72cd03af837aa9cba7bc56c8
\ No newline at end of file
+d1814de6de8fed41d5df457e82d60c1c
\ No newline at end of file
index 96518df592cd367887404972a850cd23c7435533..068731dd301ffd8512cc56b876e01aa0ec00ef73 100644 (file)
Binary files a/LayoutTests/svg/batik/text/textOnPath3-expected.png and b/LayoutTests/svg/batik/text/textOnPath3-expected.png differ
index 819be92a11d75a5e854224a6d685ca860b079cd6..f172e57c3745c0ff9d9d699856014fd9f4dba91e 100644 (file)
@@ -16,10 +16,10 @@ layer at (0,0) size 450x500
       RenderSVGContainer {use} at (139.50,59.33) size 141x125.67
         RenderSVGContainer {g} at (139.50,59.33) size 141x125.67
           RenderPath {path} at (139.50,59.33) size 141x125.67 [stroke={[type=SOLID] [color=#0000FF]}] [data="M100.00,0.00C100.00,-125.00,240.00,-125.00,240.00,0.00"]
-      RenderSVGText {text} at (105,-94) size 156x80 contains 1 chunk(s)
+      RenderSVGText {text} at (110,-94) size 156x80 contains 1 chunk(s)
         RenderSVGTextPath {textPath} at (0,0) size 156x80
-          RenderSVGInlineText {#text} at (-10,-13) size 156x80
-            chunk 1 (middle anchor) text run 1 at (105.76,-93.75) startOffset 0 endOffset 31 width 182.00: "Text on a path for text w/ 'x'."
+          RenderSVGInlineText {#text} at (-15,-13) size 156x80
+            chunk 1 (middle anchor) text run 1 at (110.76,-93.75) startOffset 0 endOffset 31 width 182.00: "Text on a path for text w/ 'x'."
     RenderSVGContainer {g} at (29.50,194.50) size 391x141 [transform={m=((1.00,0.00)(0.00,1.00)) t=(40.00,330.00)}]
       RenderPath {rect} at (29.50,194.50) size 391x21 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#000000]}] [data="M-10.00,-135.00L380.00,-135.00L380.00,-115.00L-10.00,-115.00"]
       RenderPath {rect} at (29.50,214.50) size 391x121 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#FFFFFF]}] [data="M-10.00,-115.00L380.00,-115.00L380.00,5.00L-10.00,5.00"]
@@ -29,10 +29,10 @@ layer at (0,0) size 450x500
       RenderSVGContainer {use} at (139.50,204.33) size 141x125.67
         RenderSVGContainer {g} at (139.50,204.33) size 141x125.67
           RenderPath {path} at (139.50,204.33) size 141x125.67 [stroke={[type=SOLID] [color=#0000FF]}] [data="M100.00,0.00C100.00,-125.00,240.00,-125.00,240.00,0.00"]
-      RenderSVGText {text} at (178,-93) size 125x108 contains 1 chunk(s)
-        RenderSVGTextPath {textPath} at (0,0) size 125x108
-          RenderSVGInlineText {#text} at (0,-13) size 125x108
-            chunk 1 (middle anchor) text run 1 at (178.87,-92.10) startOffset 0 endOffset 31 width 182.00: "Text on a path for text w/ 'x'."
+      RenderSVGText {text} at (183,-93) size 137x110 contains 1 chunk(s)
+        RenderSVGTextPath {textPath} at (0,0) size 137x110
+          RenderSVGInlineText {#text} at (-5,-13) size 137x110
+            chunk 1 (middle anchor) text run 1 at (183.87,-92.10) startOffset 0 endOffset 31 width 182.00: "Text on a path for text w/ 'x'."
     RenderSVGContainer {g} at (-65,339.50) size 485.50x141 [transform={m=((1.00,0.00)(0.00,1.00)) t=(40.00,475.00)}]
       RenderPath {rect} at (29.50,339.50) size 391x21 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#000000]}] [data="M-10.00,-135.00L380.00,-135.00L380.00,-115.00L-10.00,-115.00"]
       RenderPath {rect} at (29.50,359.50) size 391x121 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#FFFFFF]}] [data="M-10.00,-115.00L380.00,-115.00L380.00,5.00L-10.00,5.00"]
@@ -42,10 +42,10 @@ layer at (0,0) size 450x500
       RenderSVGContainer {use} at (139.50,349.33) size 141x125.67
         RenderSVGContainer {g} at (139.50,349.33) size 141x125.67
           RenderPath {path} at (139.50,349.33) size 141x125.67 [stroke={[type=SOLID] [color=#0000FF]}] [data="M100.00,0.00C100.00,-125.00,240.00,-125.00,240.00,0.00"]
-      RenderSVGText {text} at (-105,-94) size 347x111 contains 2 chunk(s)
+      RenderSVGText {text} at (-100,-94) size 347x111 contains 2 chunk(s)
         RenderSVGTextPath {textPath} at (0,0) size 347x111
-          RenderSVGInlineText {#text} at (0,80) size 209x18
-            chunk 1 (middle anchor) text run 1 at (-105.00,-1.44) startOffset 0 endOffset 10 width 64.00: "Text on a "
+          RenderSVGInlineText {#text} at (-5,80) size 209x18
+            chunk 1 (middle anchor) text run 1 at (-100.00,-1.44) startOffset 0 endOffset 10 width 64.00: "Text on a "
           RenderSVGTSpan {tspan} at (0,0) size 119x58
-            RenderSVGInlineText {#text} at (228,-13) size 119x58
-              chunk 2 (middle anchor) text run 1 at (131.30,-93.74) startOffset 0 endOffset 21 width 118.00: "path for text w/ 'x'."
+            RenderSVGInlineText {#text} at (223,-13) size 119x58
+              chunk 2 (middle anchor) text run 1 at (135.30,-93.74) startOffset 0 endOffset 21 width 118.00: "path for text w/ 'x'."
index 299f3d2022cfa9f3b11323fbc66967625abf537e..80b01a65285f3a3fb1b1ec6d9714f798e8fb6671 100644 (file)
@@ -1 +1 @@
-3b2e0bfaa59dd1510a1784ce6fba58b8
\ No newline at end of file
+91a008e0253f60e8d05d36a9a47e51b9
\ No newline at end of file
index 3eb27920f0adeaf69ebdf9703fe3ac12e9881c87..2ad96593426ba326ba550e73fd4c7be820f5b2cd 100644 (file)
Binary files a/LayoutTests/svg/batik/text/textOnPathSpaces-expected.png and b/LayoutTests/svg/batik/text/textOnPathSpaces-expected.png differ
index 41a6c97a4258282da9368b364736b46ab83f3c9e..64714b126145c34d8b9ab7594fba014afc8b9410 100644 (file)
@@ -13,11 +13,11 @@ layer at (0,0) size 450x500
         RenderSVGContainer {use} at (14.89,77.29) size 120.11x30.43
           RenderSVGContainer {g} at (14.89,77.29) size 120.11x30.43
             RenderPath {path} at (14.89,77.29) size 120.11x30.43 [transform={m=((0.15,0.00)(0.00,0.15)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [data="M100.00,200.00C200.00,100.00,300.00,0.00,400.00,100.00C500.00,200.00,600.00,300.00,700.00,200.00C800.00,100.00,900.00,100.00,900.00,100.00"]
-        RenderSVGText {text} at (13,8) size 73x43 contains 1 chunk(s)
+        RenderSVGText {text} at (17,8) size 73x43 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 73x43
             RenderSVGTSpan {tspan} at (0,0) size 73x43
-              RenderSVGInlineText {#text} at (-11,-17) size 73x43
-                chunk 1 text run 1 at (13.83,8.83) startOffset 0 endOffset 6 width 58.00: "sample"
+              RenderSVGInlineText {#text} at (-15,-17) size 73x43
+                chunk 1 text run 1 at (17.83,8.83) startOffset 0 endOffset 6 width 58.00: "sample"
           RenderSVGInlineText {#text} at (0,0) size 0x0
         RenderSVGText {text} at (35,60) size 60x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 60x13
@@ -26,16 +26,16 @@ layer at (0,0) size 450x500
         RenderSVGContainer {use} at (164.89,77.29) size 120.11x30.43
           RenderSVGContainer {g} at (164.89,77.29) size 120.11x30.43
             RenderPath {path} at (164.89,77.29) size 120.11x30.43 [transform={m=((0.15,0.00)(0.00,0.15)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [data="M100.00,200.00C200.00,100.00,300.00,0.00,400.00,100.00C500.00,200.00,600.00,300.00,700.00,200.00C800.00,100.00,900.00,100.00,900.00,100.00"]
-        RenderSVGText {text} at (21,9) size 106x50 contains 6 chunk(s)
+        RenderSVGText {text} at (25,9) size 106x50 contains 6 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 106x50
             RenderSVGTSpan {tspan} at (0,0) size 106x50
-              RenderSVGInlineText {#text} at (-11,-18) size 106x50
-                chunk 1 text run 1 at (21.07,20.27) startOffset 0 endOffset 1 width 8.00: "s"
-                chunk 2 text run 1 at (37.74,9.42) startOffset 1 endOffset 2 width 9.00: "a"
-                chunk 3 text run 1 at (54.76,17.75) startOffset 2 endOffset 3 width 16.00: "m"
-                chunk 4 text run 1 at (74.44,32.02) startOffset 3 endOffset 4 width 10.00: "p"
-                chunk 5 text run 1 at (93.50,35.49) startOffset 4 endOffset 5 width 6.00: "l"
-                chunk 6 text run 1 at (105.16,25.79) startOffset 5 endOffset 6 width 9.00: "e"
+              RenderSVGInlineText {#text} at (-15,-18) size 106x50
+                chunk 1 text run 1 at (25.07,20.27) startOffset 0 endOffset 1 width 8.00: "s"
+                chunk 2 text run 1 at (42.24,9.42) startOffset 1 endOffset 2 width 9.00: "a"
+                chunk 3 text run 1 at (62.76,17.75) startOffset 2 endOffset 3 width 16.00: "m"
+                chunk 4 text run 1 at (79.44,32.02) startOffset 3 endOffset 4 width 10.00: "p"
+                chunk 5 text run 1 at (96.50,35.49) startOffset 4 endOffset 5 width 6.00: "l"
+                chunk 6 text run 1 at (109.66,25.79) startOffset 5 endOffset 6 width 9.00: "e"
           RenderSVGInlineText {#text} at (0,0) size 0x0
         RenderSVGText {text} at (15,60) size 123x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 123x13
@@ -47,11 +47,11 @@ layer at (0,0) size 450x500
         RenderSVGContainer {use} at (314.89,77.29) size 120.11x30.43
           RenderSVGContainer {g} at (314.89,77.29) size 120.11x30.43
             RenderPath {path} at (314.89,77.29) size 120.11x30.43 [transform={m=((0.15,0.00)(0.00,0.15)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [data="M100.00,200.00C200.00,100.00,300.00,0.00,400.00,100.00C500.00,200.00,600.00,300.00,700.00,200.00C800.00,100.00,900.00,100.00,900.00,100.00"]
-        RenderSVGText {text} at (13,8) size 109x72 contains 1 chunk(s)
+        RenderSVGText {text} at (17,8) size 109x72 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 109x72
             RenderSVGTSpan {tspan} at (0,0) size 109x72
-              RenderSVGInlineText {#text} at (-11,-24) size 109x72
-                chunk 1 text run 1 at (13.83,8.83) startOffset 0 endOffset 6 width 58.00: "sample"
+              RenderSVGInlineText {#text} at (-15,-24) size 109x72
+                chunk 1 text run 1 at (17.83,8.83) startOffset 0 endOffset 6 width 58.00: "sample"
           RenderSVGInlineText {#text} at (0,0) size 0x0
         RenderSVGText {text} at (15,60) size 118x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 118x13
@@ -60,10 +60,10 @@ layer at (0,0) size 450x500
         RenderSVGContainer {use} at (14.89,167.29) size 120.11x30.43
           RenderSVGContainer {g} at (14.89,167.29) size 120.11x30.43
             RenderPath {path} at (14.89,167.29) size 120.11x30.43 [transform={m=((0.15,0.00)(0.00,0.15)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [data="M100.00,200.00C200.00,100.00,300.00,0.00,400.00,100.00C500.00,200.00,600.00,300.00,700.00,200.00C800.00,100.00,900.00,100.00,900.00,100.00"]
-        RenderSVGText {text} at (13,8) size 73x43 contains 1 chunk(s)
+        RenderSVGText {text} at (17,8) size 73x43 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 73x43
-            RenderSVGInlineText {#text} at (-11,-17) size 73x43
-              chunk 1 text run 1 at (13.83,8.83) startOffset 0 endOffset 6 width 58.00: "sample"
+            RenderSVGInlineText {#text} at (-15,-17) size 73x43
+              chunk 1 text run 1 at (17.83,8.83) startOffset 0 endOffset 6 width 58.00: "sample"
           RenderSVGInlineText {#text} at (0,0) size 0x0
         RenderSVGText {text} at (35,60) size 72x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 72x13
@@ -72,10 +72,10 @@ layer at (0,0) size 450x500
         RenderSVGContainer {use} at (164.89,167.29) size 120.11x30.43
           RenderSVGContainer {g} at (164.89,167.29) size 120.11x30.43
             RenderPath {path} at (164.89,167.29) size 120.11x30.43 [transform={m=((0.15,0.00)(0.00,0.15)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [data="M100.00,200.00C200.00,100.00,300.00,0.00,400.00,100.00C500.00,200.00,600.00,300.00,700.00,200.00C800.00,100.00,900.00,100.00,900.00,100.00"]
-        RenderSVGText {text} at (13,8) size 73x43 contains 1 chunk(s)
+        RenderSVGText {text} at (17,8) size 73x43 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 73x43
-            RenderSVGInlineText {#text} at (-11,-17) size 73x43
-              chunk 1 text run 1 at (13.83,8.83) startOffset 0 endOffset 6 width 58.00: "sample"
+            RenderSVGInlineText {#text} at (-15,-17) size 73x43
+              chunk 1 text run 1 at (17.83,8.83) startOffset 0 endOffset 6 width 58.00: "sample"
           RenderSVGInlineText {#text} at (0,0) size 0x0
         RenderSVGText {text} at (35,60) size 67x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 67x13
@@ -84,10 +84,10 @@ layer at (0,0) size 450x500
         RenderSVGContainer {use} at (314.89,167.29) size 120.11x30.43
           RenderSVGContainer {g} at (314.89,167.29) size 120.11x30.43
             RenderPath {path} at (314.89,167.29) size 120.11x30.43 [transform={m=((0.15,0.00)(0.00,0.15)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [data="M100.00,200.00C200.00,100.00,300.00,0.00,400.00,100.00C500.00,200.00,600.00,300.00,700.00,200.00C800.00,100.00,900.00,100.00,900.00,100.00"]
-        RenderSVGText {text} at (13,8) size 73x43 contains 1 chunk(s)
+        RenderSVGText {text} at (17,8) size 73x43 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 73x43
-            RenderSVGInlineText {#text} at (-11,-17) size 73x43
-              chunk 1 text run 1 at (13.83,8.83) startOffset 0 endOffset 6 width 58.00: "sample"
+            RenderSVGInlineText {#text} at (-15,-17) size 73x43
+              chunk 1 text run 1 at (17.83,8.83) startOffset 0 endOffset 6 width 58.00: "sample"
           RenderSVGInlineText {#text} at (0,0) size 0x0
         RenderSVGText {text} at (35,60) size 54x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 54x13
@@ -96,10 +96,10 @@ layer at (0,0) size 450x500
         RenderSVGContainer {use} at (14.89,257.29) size 120.11x30.43
           RenderSVGContainer {g} at (14.89,257.29) size 120.11x30.43
             RenderPath {path} at (14.89,257.29) size 120.11x30.43 [transform={m=((0.15,0.00)(0.00,0.15)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [data="M100.00,200.00C200.00,100.00,300.00,0.00,400.00,100.00C500.00,200.00,600.00,300.00,700.00,200.00C800.00,100.00,900.00,100.00,900.00,100.00"]
-        RenderSVGText {text} at (13,8) size 73x43 contains 1 chunk(s)
+        RenderSVGText {text} at (17,8) size 73x43 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 73x43
-            RenderSVGInlineText {#text} at (-11,-17) size 73x43
-              chunk 1 text run 1 at (13.83,8.83) startOffset 0 endOffset 6 width 58.00: "sample"
+            RenderSVGInlineText {#text} at (-15,-17) size 73x43
+              chunk 1 text run 1 at (17.83,8.83) startOffset 0 endOffset 6 width 58.00: "sample"
           RenderSVGInlineText {#text} at (0,0) size 0x0
         RenderSVGText {text} at (35,60) size 72x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 72x13
@@ -114,10 +114,10 @@ layer at (0,0) size 450x500
         RenderSVGContainer {use} at (164.89,257.29) size 120.11x30.43
           RenderSVGContainer {g} at (164.89,257.29) size 120.11x30.43
             RenderPath {path} at (164.89,257.29) size 120.11x30.43 [transform={m=((0.15,0.00)(0.00,0.15)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [data="M100.00,200.00C200.00,100.00,300.00,0.00,400.00,100.00C500.00,200.00,600.00,300.00,700.00,200.00C800.00,100.00,900.00,100.00,900.00,100.00"]
-        RenderSVGText {text} at (13,8) size 73x43 contains 1 chunk(s)
+        RenderSVGText {text} at (17,8) size 73x43 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 73x43
-            RenderSVGInlineText {#text} at (-11,-17) size 73x43
-              chunk 1 text run 1 at (13.83,8.83) startOffset 0 endOffset 6 width 58.00: "sample"
+            RenderSVGInlineText {#text} at (-15,-17) size 73x43
+              chunk 1 text run 1 at (17.83,8.83) startOffset 0 endOffset 6 width 58.00: "sample"
           RenderSVGInlineText {#text} at (0,0) size 0x0
         RenderSVGText {text} at (35,60) size 67x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 67x13
@@ -132,10 +132,10 @@ layer at (0,0) size 450x500
         RenderSVGContainer {use} at (314.89,257.29) size 120.11x30.43
           RenderSVGContainer {g} at (314.89,257.29) size 120.11x30.43
             RenderPath {path} at (314.89,257.29) size 120.11x30.43 [transform={m=((0.15,0.00)(0.00,0.15)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [data="M100.00,200.00C200.00,100.00,300.00,0.00,400.00,100.00C500.00,200.00,600.00,300.00,700.00,200.00C800.00,100.00,900.00,100.00,900.00,100.00"]
-        RenderSVGText {text} at (13,8) size 73x43 contains 1 chunk(s)
+        RenderSVGText {text} at (17,8) size 73x43 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 73x43
-            RenderSVGInlineText {#text} at (-11,-17) size 73x43
-              chunk 1 text run 1 at (13.83,8.83) startOffset 0 endOffset 6 width 58.00: "sample"
+            RenderSVGInlineText {#text} at (-15,-17) size 73x43
+              chunk 1 text run 1 at (17.83,8.83) startOffset 0 endOffset 6 width 58.00: "sample"
           RenderSVGInlineText {#text} at (0,0) size 0x0
         RenderSVGText {text} at (5,60) size 132x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 132x13
@@ -150,10 +150,10 @@ layer at (0,0) size 450x500
         RenderSVGContainer {use} at (14.89,357.29) size 120.11x30.43
           RenderSVGContainer {g} at (14.89,357.29) size 120.11x30.43
             RenderPath {path} at (14.89,357.29) size 120.11x30.43 [transform={m=((0.15,0.00)(0.00,0.15)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [data="M100.00,200.00C200.00,100.00,300.00,0.00,400.00,100.00C500.00,200.00,600.00,300.00,700.00,200.00C800.00,100.00,900.00,100.00,900.00,100.00"]
-        RenderSVGText {text} at (14,8) size 46x43 contains 1 chunk(s)
+        RenderSVGText {text} at (16,8) size 46x43 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 46x43
-            RenderSVGInlineText {#text} at (-12,-17) size 46x43
-              chunk 1 text run 1 at (14.27,8.93) startOffset 0 endOffset 6 width 40.00: "sample"
+            RenderSVGInlineText {#text} at (-14,-17) size 46x43
+              chunk 1 text run 1 at (16.77,8.93) startOffset 0 endOffset 6 width 40.00: "sample"
           RenderSVGInlineText {#text} at (0,0) size 0x0
         RenderSVGText {text} at (35,60) size 75x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 75x13
@@ -162,10 +162,10 @@ layer at (0,0) size 450x500
         RenderSVGContainer {use} at (164.89,357.29) size 120.11x30.43
           RenderSVGContainer {g} at (164.89,357.29) size 120.11x30.43
             RenderPath {path} at (164.89,357.29) size 120.11x30.43 [transform={m=((0.15,0.00)(0.00,0.15)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [data="M100.00,200.00C200.00,100.00,300.00,0.00,400.00,100.00C500.00,200.00,600.00,300.00,700.00,200.00C800.00,100.00,900.00,100.00,900.00,100.00"]
-        RenderSVGText {text} at (13,8) size 116x52 contains 1 chunk(s)
+        RenderSVGText {text} at (17,8) size 116x52 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 116x52
-            RenderSVGInlineText {#text} at (-11,-17) size 116x52
-              chunk 1 text run 1 at (13.83,8.83) startOffset 0 endOffset 13 width 161.00: "sample sample"
+            RenderSVGInlineText {#text} at (-15,-17) size 116x52
+              chunk 1 text run 1 at (17.83,8.83) startOffset 0 endOffset 13 width 161.00: "sample sample"
           RenderSVGInlineText {#text} at (0,0) size 0x0
         RenderSVGText {text} at (35,60) size 72x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 72x13
@@ -177,10 +177,10 @@ layer at (0,0) size 450x500
         RenderSVGContainer {use} at (314.89,357.29) size 120.11x30.43
           RenderSVGContainer {g} at (314.89,357.29) size 120.11x30.43
             RenderPath {path} at (314.89,357.29) size 120.11x30.43 [transform={m=((0.15,0.00)(0.00,0.15)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [data="M100.00,200.00C200.00,100.00,300.00,0.00,400.00,100.00C500.00,200.00,600.00,300.00,700.00,200.00C800.00,100.00,900.00,100.00,900.00,100.00"]
-        RenderSVGText {text} at (13,8) size 116x52 contains 1 chunk(s)
+        RenderSVGText {text} at (17,8) size 116x52 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 116x52
-            RenderSVGInlineText {#text} at (-11,-17) size 116x52
-              chunk 1 text run 1 at (13.83,8.83) startOffset 0 endOffset 13 width 116.00: "sample sample"
+            RenderSVGInlineText {#text} at (-15,-17) size 116x52
+              chunk 1 text run 1 at (17.83,8.83) startOffset 0 endOffset 13 width 116.00: "sample sample"
           RenderSVGInlineText {#text} at (0,0) size 0x0
         RenderSVGText {text} at (35,60) size 72x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 72x13
index 14f606cb83308a0439a454f858d073742a8cd25f..7b6b213be01e7cda343f787f885cc6578c974244 100644 (file)
@@ -64,9 +64,9 @@ layer at (0,0) size 450x500
         RenderSVGContainer {use} at (54.89,457.29) size 315.21x30.43
           RenderSVGContainer {g} at (54.89,457.29) size 315.21x30.43
             RenderPath {path} at (54.89,457.29) size 315.21x30.43 [transform={m=((0.15,0.00)(0.00,0.15)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [data="M100.00,200.00C200.00,100.00,300.00,0.00,400.00,100.00C500.00,200.00,600.00,300.00,700.00,200.00C800.00,100.00,900.00,0.00,1000.00,100.00C1100.00,200.00,1200.00,300.00,1300.00,200.00C1400.00,100.00,1500.00,0.00,1600.00,100.00C1700.00,200.00,1800.00,300.00,1900.00,200.00C2000.00,100.00,2100.00,0.00,2200.00,100.00"]
-        RenderSVGText {text} at (15,15) size 297x43 contains 1 chunk(s)
+        RenderSVGText {text} at (15,22) size 297x43 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 297x43
-            RenderSVGInlineText {#text} at (-13,-11) size 297x43
-              chunk 1 (vertical) text run 1 at (15.47,15.79) startOffset 0 endOffset 25 height 350.00: "Vertical text on a Path\x{753B}\x{50CF}"
+            RenderSVGInlineText {#text} at (-13,-18) size 297x43
+              chunk 1 (vertical) text run 1 at (15.47,22.79) startOffset 0 endOffset 25 height 350.00: "Vertical text on a Path\x{753B}\x{50CF}"
           RenderSVGInlineText {#text} at (0,0) size 0x0
     RenderSVGContainer {use} at (0,0) size 0x0
index f91785379fba9e373f5ac4b0c6057e16d6006edd..5e192634058b7cc1cfb0d8b1b8c2bed0f943f3ad 100644 (file)
@@ -1 +1 @@
-73e592deb9ba2fc31d1c356973d659ef
\ No newline at end of file
+246a31a6cacaa6e149f46eb5140b9420
\ No newline at end of file
index 6bb82fd559ad5e1e5b956fe68feb3c074d144e0d..fd2e81fd773c0e138c286356339bc96f45816fc0 100644 (file)
Binary files a/LayoutTests/svg/batik/text/verticalTextOnPath-expected.png and b/LayoutTests/svg/batik/text/verticalTextOnPath-expected.png differ
index 76f731ef74804973e9d975af0450ba9a2cbec385..43ba26776759e411834d733545bb72c7f324421d 100644 (file)
@@ -9,20 +9,20 @@ layer at (0,0) size 450x500
       RenderSVGHiddenContainer {defs} at (0,0) size 0x0
         RenderPath {path} at (14.95,7.04) size 120.05x30.91 [transform={m=((0.15,0.00)(0.00,0.15)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF]}] [data="M100.00,200.00C200.00,100.00,300.00,0.00,400.00,100.00C500.00,200.00,600.00,300.00,700.00,200.00C800.00,100.00,900.00,100.00,900.00,100.00"]
         RenderPath {path} at (29.85,12.25) size 90.30x37.75 [transform={m=((0.30,0.00)(0.00,0.50)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF]}] [data="M100.00,100.00C100.00,0.00,400.00,0.00,400.00,100.00"]
-      RenderSVGContainer {g} at (1,75) size 134x128 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,70.00)}]
+      RenderSVGContainer {g} at (1,75) size 134x129 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,70.00)}]
         RenderSVGContainer {use} at (14.89,77.29) size 120.11x30.43
           RenderSVGContainer {g} at (14.89,77.29) size 120.11x30.43
             RenderPath {path} at (14.89,77.29) size 120.11x30.43 [transform={m=((0.15,0.00)(0.00,0.15)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [data="M100.00,200.00C200.00,100.00,300.00,0.00,400.00,100.00C500.00,200.00,600.00,300.00,700.00,200.00C800.00,100.00,900.00,100.00,900.00,100.00"]
-        RenderSVGText {text} at (16,17) size 124x128 contains 1 chunk(s)
-          RenderSVGTextPath {textPath} at (0,0) size 124x128
-            RenderSVGInlineText {#text} at (-15,-12) size 89x41
-              chunk 1 (vertical) text run 1 at (16.55,17.65) startOffset 0 endOffset 5 height 85.00: "Text "
+        RenderSVGText {text} at (16,26) size 121x129 contains 1 chunk(s)
+          RenderSVGTextPath {textPath} at (0,0) size 121x129
+            RenderSVGInlineText {#text} at (-15,-21) size 89x41
+              chunk 1 (vertical) text run 1 at (16.55,26.15) startOffset 0 endOffset 5 height 85.00: "Text "
             RenderSVGTSpan {tspan} at (0,0) size 18x32
-              RenderSVGInlineText {#text} at (79,0) size 18x32
-                chunk 1 (vertical) text run 2 at (98.08,36.91) startOffset 0 endOffset 2 height 34.00: "on"
-            RenderSVGTSpan {tspan} at (0,0) size 16x119
-              RenderSVGInlineText {#text} at (93,-3) size 16x119
-                chunk 1 (vertical) text run 3 at (116.63,27.37) startOffset 0 endOffset 7 height 119.00: " a Path"
+              RenderSVGInlineText {#text} at (79,-9) size 18x32
+                chunk 1 (vertical) text run 2 at (88.08,45.41) startOffset 0 endOffset 2 height 34.00: "on"
+            RenderSVGTSpan {tspan} at (0,0) size 15x120
+              RenderSVGInlineText {#text} at (91,-12) size 15x120
+                chunk 1 (vertical) text run 3 at (116.63,35.87) startOffset 0 endOffset 7 height 119.00: " a Path"
           RenderSVGInlineText {#text} at (0,0) size 0x0
         RenderSVGText {text} at (35,60) size 68x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 68x13
@@ -37,16 +37,16 @@ layer at (0,0) size 450x500
         RenderSVGContainer {use} at (164.89,77.29) size 120.11x30.43
           RenderSVGContainer {g} at (164.89,77.29) size 120.11x30.43
             RenderPath {path} at (164.89,77.29) size 120.11x30.43 [transform={m=((0.15,0.00)(0.00,0.15)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [data="M100.00,200.00C200.00,100.00,300.00,0.00,400.00,100.00C500.00,200.00,600.00,300.00,700.00,200.00C800.00,100.00,900.00,100.00,900.00,100.00"]
-        RenderSVGText {text} at (-5,8) size 109x119 contains 1 chunk(s)
+        RenderSVGText {text} at (-5,17) size 109x119 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 109x119
-            RenderSVGInlineText {#text} at (1,-12) size 9x85
-              chunk 1 (middle anchor, vertical) text run 1 at (-4.50,8.50) startOffset 0 endOffset 5 height 85.00: "Text "
+            RenderSVGInlineText {#text} at (1,-21) size 9x85
+              chunk 1 (middle anchor, vertical) text run 1 at (-4.50,17.00) startOffset 0 endOffset 5 height 85.00: "Text "
             RenderSVGTSpan {tspan} at (0,0) size 8x35
-              RenderSVGInlineText {#text} at (11,72) size 8x35
-                chunk 1 (middle anchor, vertical) text run 2 at (6.00,93.50) startOffset 0 endOffset 2 height 34.00: "on"
+              RenderSVGInlineText {#text} at (11,63) size 8x35
+                chunk 1 (middle anchor, vertical) text run 2 at (-4.00,102.00) startOffset 0 endOffset 2 height 34.00: "on"
             RenderSVGTSpan {tspan} at (0,0) size 101x44
-              RenderSVGInlineText {#text} at (9,-3) size 101x44
-                chunk 1 (middle anchor, vertical) text run 3 at (19.05,17.65) startOffset 0 endOffset 7 height 119.00: " a Path"
+              RenderSVGInlineText {#text} at (9,-12) size 101x44
+                chunk 1 (middle anchor, vertical) text run 3 at (19.05,26.15) startOffset 0 endOffset 7 height 119.00: " a Path"
           RenderSVGInlineText {#text} at (0,0) size 0x0
         RenderSVGText {text} at (35,60) size 68x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 68x13
@@ -61,16 +61,16 @@ layer at (0,0) size 450x500
         RenderSVGContainer {use} at (314.89,77.29) size 120.11x30.43
           RenderSVGContainer {g} at (314.89,77.29) size 120.11x30.43
             RenderPath {path} at (314.89,77.29) size 120.11x30.43 [transform={m=((0.15,0.00)(0.00,0.15)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [data="M100.00,200.00C200.00,100.00,300.00,0.00,400.00,100.00C500.00,200.00,600.00,300.00,700.00,200.00C800.00,100.00,900.00,100.00,900.00,100.00"]
-        RenderSVGText {text} at (-5,8) size 87x170 contains 1 chunk(s)
+        RenderSVGText {text} at (-5,17) size 87x170 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 87x170
-            RenderSVGInlineText {#text} at (1,-12) size 9x85
-              chunk 1 (end anchor, vertical) text run 1 at (-4.50,8.50) startOffset 0 endOffset 5 height 85.00: "Text "
+            RenderSVGInlineText {#text} at (1,-21) size 9x85
+              chunk 1 (end anchor, vertical) text run 1 at (-4.50,17.00) startOffset 0 endOffset 5 height 85.00: "Text "
             RenderSVGTSpan {tspan} at (0,0) size 8x35
-              RenderSVGInlineText {#text} at (11,72) size 8x35
-                chunk 1 (end anchor, vertical) text run 2 at (6.00,93.50) startOffset 0 endOffset 2 height 34.00: "on"
+              RenderSVGInlineText {#text} at (11,63) size 8x35
+                chunk 1 (end anchor, vertical) text run 2 at (-4.00,102.00) startOffset 0 endOffset 2 height 34.00: "on"
             RenderSVGTSpan {tspan} at (0,0) size 86x160
-              RenderSVGInlineText {#text} at (2,-2) size 86x160
-                chunk 1 (end anchor, vertical) text run 3 at (-3.50,18.66) startOffset 0 endOffset 7 height 119.00: " a Path"
+              RenderSVGInlineText {#text} at (2,-11) size 86x160
+                chunk 1 (end anchor, vertical) text run 3 at (-3.50,27.16) startOffset 0 endOffset 7 height 119.00: " a Path"
           RenderSVGInlineText {#text} at (0,0) size 0x0
         RenderSVGText {text} at (35,60) size 73x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 73x13
@@ -85,16 +85,16 @@ layer at (0,0) size 450x500
         RenderSVGContainer {use} at (14.89,177.29) size 120.11x30.43
           RenderSVGContainer {g} at (14.89,177.29) size 120.11x30.43
             RenderPath {path} at (14.89,177.29) size 120.11x30.43 [transform={m=((0.15,0.00)(0.00,0.15)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [data="M100.00,200.00C200.00,100.00,300.00,0.00,400.00,100.00C500.00,200.00,600.00,300.00,700.00,200.00C800.00,100.00,900.00,100.00,900.00,100.00"]
-        RenderSVGText {text} at (74,26) size 61x187 contains 1 chunk(s)
-          RenderSVGTextPath {textPath} at (0,0) size 61x187
-            RenderSVGInlineText {#text} at (3,-13) size 49x37
-              chunk 1 (vertical) text run 1 at (74.72,26.10) startOffset 0 endOffset 5 height 85.00: "Text "
-            RenderSVGTSpan {tspan} at (0,0) size 9x34
-              RenderSVGInlineText {#text} at (55,21) size 9x34
-                chunk 1 (vertical) text run 2 at (129.61,60.10) startOffset 0 endOffset 2 height 34.00: "on"
+        RenderSVGText {text} at (74,34) size 58x187 contains 1 chunk(s)
+          RenderSVGTextPath {textPath} at (0,0) size 58x187
+            RenderSVGInlineText {#text} at (3,-21) size 47x37
+              chunk 1 (vertical) text run 1 at (74.72,34.60) startOffset 0 endOffset 5 height 85.00: "Text "
+            RenderSVGTSpan {tspan} at (0,0) size 14x36
+              RenderSVGInlineText {#text} at (47,8) size 14x36
+                chunk 1 (vertical) text run 2 at (119.61,68.60) startOffset 0 endOffset 2 height 34.00: "on"
             RenderSVGTSpan {tspan} at (0,0) size 9x119
-              RenderSVGInlineText {#text} at (45,55) size 9x119
-                chunk 1 (vertical) text run 3 at (119.61,94.10) startOffset 0 endOffset 7 height 119.00: " a Path"
+              RenderSVGInlineText {#text} at (45,47) size 9x119
+                chunk 1 (vertical) text run 3 at (119.61,102.60) startOffset 0 endOffset 7 height 119.00: " a Path"
           RenderSVGInlineText {#text} at (0,0) size 0x0
         RenderSVGText {text} at (35,60) size 73x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 73x13
@@ -109,16 +109,16 @@ layer at (0,0) size 450x500
         RenderSVGContainer {use} at (164.89,177.29) size 120.11x30.43
           RenderSVGContainer {g} at (164.89,177.29) size 120.11x30.43
             RenderPath {path} at (164.89,177.29) size 120.11x30.43 [transform={m=((0.15,0.00)(0.00,0.15)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [data="M100.00,200.00C200.00,100.00,300.00,0.00,400.00,100.00C500.00,200.00,600.00,300.00,700.00,200.00C800.00,100.00,900.00,100.00,900.00,100.00"]
-        RenderSVGText {text} at (-5,8) size 132x85 contains 1 chunk(s)
-          RenderSVGTextPath {textPath} at (0,0) size 132x85
-            RenderSVGInlineText {#text} at (1,-12) size 40x51
-              chunk 1 (middle anchor, vertical) text run 1 at (-4.50,8.50) startOffset 0 endOffset 5 height 85.00: "Text "
+        RenderSVGText {text} at (-5,17) size 129x85 contains 1 chunk(s)
+          RenderSVGTextPath {textPath} at (0,0) size 129x85
+            RenderSVGInlineText {#text} at (1,-21) size 40x51
+              chunk 1 (middle anchor, vertical) text run 1 at (-4.50,17.00) startOffset 0 endOffset 5 height 85.00: "Text "
             RenderSVGTSpan {tspan} at (0,0) size 30x36
-              RenderSVGInlineText {#text} at (65,3) size 30x36
-                chunk 1 (middle anchor, vertical) text run 2 at (59.23,18.66) startOffset 0 endOffset 2 height 34.00: "on"
-            RenderSVGTSpan {tspan} at (0,0) size 49x70
-              RenderSVGInlineText {#text} at (84,3) size 49x70
-                chunk 1 (middle anchor, vertical) text run 3 at (77.22,26.10) startOffset 0 endOffset 7 height 119.00: " a Path"
+              RenderSVGInlineText {#text} at (65,-6) size 30x36
+                chunk 1 (middle anchor, vertical) text run 2 at (49.23,27.16) startOffset 0 endOffset 2 height 34.00: "on"
+            RenderSVGTSpan {tspan} at (0,0) size 46x70
+              RenderSVGInlineText {#text} at (84,-6) size 46x70
+                chunk 1 (middle anchor, vertical) text run 3 at (77.22,34.60) startOffset 0 endOffset 7 height 119.00: " a Path"
           RenderSVGInlineText {#text} at (0,0) size 0x0
         RenderSVGText {text} at (35,60) size 73x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 73x13
@@ -133,16 +133,16 @@ layer at (0,0) size 450x500
         RenderSVGContainer {use} at (314.89,177.29) size 120.11x30.43
           RenderSVGContainer {g} at (314.89,177.29) size 120.11x30.43
             RenderPath {path} at (314.89,177.29) size 120.11x30.43 [transform={m=((0.15,0.00)(0.00,0.15)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [data="M100.00,200.00C200.00,100.00,300.00,0.00,400.00,100.00C500.00,200.00,600.00,300.00,700.00,200.00C800.00,100.00,900.00,100.00,900.00,100.00"]
-        RenderSVGText {text} at (-5,8) size 133x102 contains 1 chunk(s)
+        RenderSVGText {text} at (-5,17) size 133x102 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 133x102
-            RenderSVGInlineText {#text} at (1,-12) size 9x85
-              chunk 1 (end anchor, vertical) text run 1 at (-4.50,8.50) startOffset 0 endOffset 5 height 85.00: "Text "
+            RenderSVGInlineText {#text} at (1,-21) size 9x85
+              chunk 1 (end anchor, vertical) text run 1 at (-4.50,17.00) startOffset 0 endOffset 5 height 85.00: "Text "
             RenderSVGTSpan {tspan} at (0,0) size 26x90
-              RenderSVGInlineText {#text} at (11,0) size 26x90
-                chunk 1 (end anchor, vertical) text run 2 at (6.00,28.12) startOffset 0 endOffset 2 height 34.00: "on"
+              RenderSVGInlineText {#text} at (11,-9) size 26x90
+                chunk 1 (end anchor, vertical) text run 2 at (-4.00,36.62) startOffset 0 endOffset 2 height 34.00: "on"
             RenderSVGTSpan {tspan} at (0,0) size 100x45
-              RenderSVGInlineText {#text} at (34,-3) size 100x45
-                chunk 1 (end anchor, vertical) text run 3 at (37.84,18.71) startOffset 0 endOffset 7 height 119.00: " a Path"
+              RenderSVGInlineText {#text} at (34,-12) size 100x45
+                chunk 1 (end anchor, vertical) text run 3 at (37.84,27.21) startOffset 0 endOffset 7 height 119.00: " a Path"
           RenderSVGInlineText {#text} at (0,0) size 0x0
         RenderSVGText {text} at (35,60) size 78x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 78x13
@@ -157,16 +157,16 @@ layer at (0,0) size 450x500
         RenderSVGContainer {use} at (14.89,277.29) size 120.11x30.43
           RenderSVGContainer {g} at (14.89,277.29) size 120.11x30.43
             RenderPath {path} at (14.89,277.29) size 120.11x30.43 [transform={m=((0.15,0.00)(0.00,0.15)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [data="M100.00,200.00C200.00,100.00,300.00,0.00,400.00,100.00C500.00,200.00,600.00,300.00,700.00,200.00C800.00,100.00,900.00,100.00,900.00,100.00"]
-        RenderSVGText {text} at (46,17) size 89x162 contains 1 chunk(s)
-          RenderSVGTextPath {textPath} at (0,0) size 89x162
-            RenderSVGInlineText {#text} at (1,-12) size 58x44
-              chunk 1 (vertical) text run 1 at (46.63,17.90) startOffset 0 endOffset 5 height 85.00: "Text "
-            RenderSVGTSpan {tspan} at (0,0) size 19x40
-              RenderSVGInlineText {#text} at (71,-9) size 19x40
-                chunk 1 (vertical) text run 2 at (127.54,26.96) startOffset 0 endOffset 2 height 34.00: "on"
+        RenderSVGText {text} at (46,26) size 85x162 contains 1 chunk(s)
+          RenderSVGTextPath {textPath} at (0,0) size 85x162
+            RenderSVGInlineText {#text} at (1,-21) size 58x44
+              chunk 1 (vertical) text run 1 at (46.63,26.40) startOffset 0 endOffset 5 height 85.00: "Text "
+            RenderSVGTSpan {tspan} at (0,0) size 15x36
+              RenderSVGInlineText {#text} at (71,-18) size 15x36
+                chunk 1 (vertical) text run 2 at (117.54,35.46) startOffset 0 endOffset 2 height 34.00: "on"
             RenderSVGTSpan {tspan} at (0,0) size 9x120
-              RenderSVGInlineText {#text} at (71,30) size 9x120
-                chunk 1 (vertical) text run 3 at (117.54,60.96) startOffset 0 endOffset 7 height 119.00: " a Path"
+              RenderSVGInlineText {#text} at (71,21) size 9x120
+                chunk 1 (vertical) text run 3 at (117.54,69.46) startOffset 0 endOffset 7 height 119.00: " a Path"
           RenderSVGInlineText {#text} at (0,0) size 0x0
         RenderSVGText {text} at (35,60) size 65x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 65x13
@@ -181,16 +181,16 @@ layer at (0,0) size 450x500
         RenderSVGContainer {use} at (164.89,277.29) size 120.11x30.43
           RenderSVGContainer {g} at (164.89,277.29) size 120.11x30.43
             RenderPath {path} at (164.89,277.29) size 120.11x30.43 [transform={m=((0.15,0.00)(0.00,0.15)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [data="M100.00,200.00C200.00,100.00,300.00,0.00,400.00,100.00C500.00,200.00,600.00,300.00,700.00,200.00C800.00,100.00,900.00,100.00,900.00,100.00"]
-        RenderSVGText {text} at (-5,8) size 130x85 contains 1 chunk(s)
-          RenderSVGTextPath {textPath} at (0,0) size 130x85
-            RenderSVGInlineText {#text} at (1,-12) size 9x85
-              chunk 1 (middle anchor, vertical) text run 1 at (-4.50,8.50) startOffset 0 endOffset 5 height 85.00: "Text "
+        RenderSVGText {text} at (-5,17) size 127x85 contains 1 chunk(s)
+          RenderSVGTextPath {textPath} at (0,0) size 127x85
+            RenderSVGInlineText {#text} at (1,-21) size 9x85
+              chunk 1 (middle anchor, vertical) text run 1 at (-4.50,17.00) startOffset 0 endOffset 5 height 85.00: "Text "
             RenderSVGTSpan {tspan} at (0,0) size 34x29
-              RenderSVGInlineText {#text} at (15,-7) size 34x29
-                chunk 1 (middle anchor, vertical) text run 2 at (27.77,21.16) startOffset 0 endOffset 2 height 34.00: "on"
-            RenderSVGTSpan {tspan} at (0,0) size 76x44
-              RenderSVGInlineText {#text} at (55,-3) size 76x44
-                chunk 1 (middle anchor, vertical) text run 3 at (49.13,17.90) startOffset 0 endOffset 7 height 119.00: " a Path"
+              RenderSVGInlineText {#text} at (15,-16) size 34x29
+                chunk 1 (middle anchor, vertical) text run 2 at (17.77,29.66) startOffset 0 endOffset 2 height 34.00: "on"
+            RenderSVGTSpan {tspan} at (0,0) size 73x44
+              RenderSVGInlineText {#text} at (55,-12) size 73x44
+                chunk 1 (middle anchor, vertical) text run 3 at (49.13,26.40) startOffset 0 endOffset 7 height 119.00: " a Path"
           RenderSVGInlineText {#text} at (0,0) size 0x0
         RenderSVGText {text} at (35,60) size 65x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 65x13
@@ -202,16 +202,16 @@ layer at (0,0) size 450x500
         RenderSVGContainer {use} at (314.89,277.29) size 120.11x30.43
           RenderSVGContainer {g} at (314.89,277.29) size 120.11x30.43
             RenderPath {path} at (314.89,277.29) size 120.11x30.43 [transform={m=((0.15,0.00)(0.00,0.15)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [data="M100.00,200.00C200.00,100.00,300.00,0.00,400.00,100.00C500.00,200.00,600.00,300.00,700.00,200.00C800.00,100.00,900.00,100.00,900.00,100.00"]
-        RenderSVGText {text} at (-5,8) size 39x204 contains 1 chunk(s)
+        RenderSVGText {text} at (-5,17) size 39x204 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 39x204
-            RenderSVGInlineText {#text} at (1,-12) size 9x85
-              chunk 1 (end anchor, vertical) text run 1 at (-4.50,8.50) startOffset 0 endOffset 5 height 85.00: "Text "
+            RenderSVGInlineText {#text} at (1,-21) size 9x85
+              chunk 1 (end anchor, vertical) text run 1 at (-4.50,17.00) startOffset 0 endOffset 5 height 85.00: "Text "
             RenderSVGTSpan {tspan} at (0,0) size 8x35
-              RenderSVGInlineText {#text} at (11,72) size 8x35
-                chunk 1 (end anchor, vertical) text run 2 at (6.00,93.50) startOffset 0 endOffset 2 height 34.00: "on"
+              RenderSVGInlineText {#text} at (11,63) size 8x35
+                chunk 1 (end anchor, vertical) text run 2 at (-4.00,102.00) startOffset 0 endOffset 2 height 34.00: "on"
             RenderSVGTSpan {tspan} at (0,0) size 39x193
-              RenderSVGInlineText {#text} at (1,-1) size 39x193
-                chunk 1 (end anchor, vertical) text run 3 at (-4.00,21.16) startOffset 0 endOffset 7 height 119.00: " a Path"
+              RenderSVGInlineText {#text} at (1,-10) size 39x193
+                chunk 1 (end anchor, vertical) text run 3 at (-4.00,29.66) startOffset 0 endOffset 7 height 119.00: " a Path"
           RenderSVGInlineText {#text} at (0,0) size 0x0
         RenderSVGText {text} at (35,60) size 65x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 65x13
@@ -222,22 +222,22 @@ layer at (0,0) size 450x500
         RenderSVGText {text} at (35,80) size 107x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 107x13
             chunk 1 text run 1 at (35.00,80.00) startOffset 0 endOffset 25 width 107.00: "glyph-orientation=\"90deg\""
-      RenderSVGContainer {g} at (25,370.67) size 123x262.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,370.00)}]
+      RenderSVGContainer {g} at (18,370.67) size 132x262.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,370.00)}]
         RenderSVGContainer {use} at (39.70,370.67) size 90.60x49.33
           RenderSVGContainer {g} at (39.70,370.67) size 90.60x49.33
             RenderPath {path} at (39.70,370.67) size 90.60x49.33 [transform={m=((0.30,0.00)(0.00,0.50)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [data="M100.00,100.00C100.00,0.00,400.00,0.00,400.00,100.00"]
-        RenderSVGText {text} at (34,21) size 123x256 contains 1 chunk(s)
-          RenderSVGTextPath {textPath} at (0,0) size 123x256
-            RenderSVGTSpan {tspan} at (0,0) size 77x51
-              RenderSVGInlineText {#text} at (-19,-14) size 77x51
-                chunk 1 (vertical) text run 1 at (34.73,21.30) startOffset 0 endOffset 5 height 85.00: "super"
-            RenderSVGInlineText {#text} at (68,-4) size 36x76
-              chunk 1 (vertical) text run 2 at (99.82,27.69) startOffset 0 endOffset 5 height 85.00: " and "
-            RenderSVGTSpan {tspan} at (0,0) size 8x52
-              RenderSVGInlineText {#text} at (73,71) size 8x52
-                chunk 1 (vertical) text run 3 at (107.34,105.89) startOffset 0 endOffset 3 height 51.00: "sub"
-            RenderSVGInlineText {#text} at (81,122) size 9x120
-              chunk 1 (vertical) text run 4 at (115.84,156.89) startOffset 0 endOffset 7 height 119.00: "scripts"
+        RenderSVGText {text} at (27,29) size 132x257 contains 1 chunk(s)
+          RenderSVGTextPath {textPath} at (0,0) size 132x257
+            RenderSVGTSpan {tspan} at (0,0) size 93x43
+              RenderSVGInlineText {#text} at (-19,-23) size 93x43
+                chunk 1 (vertical) text run 1 at (27.93,29.80) startOffset 0 endOffset 5 height 85.00: "super"
+            RenderSVGInlineText {#text} at (75,-12) size 38x84
+              chunk 1 (vertical) text run 2 at (99.82,36.19) startOffset 0 endOffset 5 height 85.00: " and "
+            RenderSVGTSpan {tspan} at (0,0) size 19x44
+              RenderSVGInlineText {#text} at (92,74) size 19x44
+                chunk 1 (vertical) text run 3 at (115.84,114.39) startOffset 0 endOffset 3 height 51.00: "sub"
+            RenderSVGInlineText {#text} at (97,114) size 8x120
+              chunk 1 (vertical) text run 4 at (124.34,165.39) startOffset 0 endOffset 7 height 119.00: "scripts"
           RenderSVGInlineText {#text} at (0,0) size 0x0
         RenderSVGText {text} at (20,65) size 88x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 88x13
@@ -248,20 +248,20 @@ layer at (0,0) size 450x500
         RenderSVGText {text} at (20,85) size 100x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 100x13
             chunk 1 text run 1 at (20.00,85.00) startOffset 0 endOffset 24 width 100.00: "glyph-orientation=\"auto\""
-      RenderSVGContainer {g} at (308,370.67) size 130x279.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(300.00,370.00)}]
+      RenderSVGContainer {g} at (306,370.67) size 133x279.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(300.00,370.00)}]
         RenderSVGContainer {use} at (329.70,370.67) size 90.60x49.33
           RenderSVGContainer {g} at (329.70,370.67) size 90.60x49.33
             RenderPath {path} at (329.70,370.67) size 90.60x49.33 [transform={m=((0.30,0.00)(0.00,0.50)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [data="M100.00,100.00C100.00,0.00,400.00,0.00,400.00,100.00"]
-        RenderSVGText {text} at (29,21) size 130x272 contains 1 chunk(s)
-          RenderSVGTextPath {textPath} at (0,0) size 130x272
-            RenderSVGTSpan {tspan} at (0,0) size 130x62
-              RenderSVGInlineText {#text} at (-21,-13) size 130x62
-                chunk 1 (vertical) text run 1 at (29.93,21.30) startOffset 0 endOffset 8 height 136.00: "positive"
-            RenderSVGInlineText {#text} at (83,37) size 9x86
-              chunk 1 (vertical) text run 2 at (112.84,71.89) startOffset 0 endOffset 5 height 85.00: " and "
+        RenderSVGText {text} at (26,29) size 133x273 contains 1 chunk(s)
+          RenderSVGTextPath {textPath} at (0,0) size 133x273
+            RenderSVGTSpan {tspan} at (0,0) size 133x66
+              RenderSVGInlineText {#text} at (-20,-22) size 133x66
+                chunk 1 (vertical) text run 1 at (26.93,29.80) startOffset 0 endOffset 8 height 136.00: "positive"
+            RenderSVGInlineText {#text} at (86,29) size 9x86
+              chunk 1 (vertical) text run 2 at (112.84,80.39) startOffset 0 endOffset 5 height 85.00: " and "
             RenderSVGTSpan {tspan} at (0,0) size 9x137
-              RenderSVGInlineText {#text} at (80,122) size 9x137
-                chunk 1 (vertical) text run 3 at (109.84,156.89) startOffset 0 endOffset 8 height 136.00: "negative"
+              RenderSVGInlineText {#text} at (83,114) size 9x137
+                chunk 1 (vertical) text run 3 at (112.84,165.39) startOffset 0 endOffset 8 height 136.00: "negative"
           RenderSVGInlineText {#text} at (0,0) size 0x0
         RenderSVGText {text} at (20,65) size 97x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 97x13
@@ -269,17 +269,17 @@ layer at (0,0) size 450x500
         RenderSVGText {text} at (20,75) size 100x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 100x13
             chunk 1 text run 1 at (20.00,75.00) startOffset 0 endOffset 24 width 100.00: "glyph-orientation=\"auto\""
-      RenderSVGContainer {g} at (180,358.75) size 107.25x266.25 [transform={m=((1.00,0.00)(0.00,1.00)) t=(180.00,370.00)}]
-        RenderSVGContainer {g} at (183.75,358.75) size 103.50x266.25 [transform={m=((0.75,0.00)(0.00,0.75)) t=(0.00,0.00)}]
+      RenderSVGContainer {g} at (180,358.75) size 108x266.25 [transform={m=((1.00,0.00)(0.00,1.00)) t=(180.00,370.00)}]
+        RenderSVGContainer {g} at (183.75,358.75) size 104.25x266.25 [transform={m=((0.75,0.00)(0.00,0.75)) t=(0.00,0.00)}]
           RenderSVGContainer {use} at (202.27,370.50) size 67.95x37
             RenderSVGContainer {g} at (202.27,370.50) size 67.95x37
               RenderPath {path} at (202.27,370.50) size 67.95x37 [transform={m=((0.30,0.00)(0.00,0.50)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [data="M100.00,100.00C100.00,0.00,400.00,0.00,400.00,100.00"]
-          RenderSVGText {text} at (5,3) size 138x355 contains 1 chunk(s)
+          RenderSVGText {text} at (5,3) size 139x355 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,-18) size 10x276
               chunk 1 (vertical) text run 1 at (5.00,3.00) startOffset 0 endOffset 12 height 276.00: "before path "
-            RenderSVGTextPath {textPath} at (0,0) size 133x92
-              RenderSVGInlineText {#text} at (5,3) size 133x92
-                chunk 1 (vertical) text run 2 at (33.14,24.21) startOffset 0 endOffset 7 height 161.00: "on path"
+            RenderSVGTextPath {textPath} at (0,0) size 134x106
+              RenderSVGInlineText {#text} at (5,3) size 134x106
+                chunk 1 (vertical) text run 2 at (33.14,35.71) startOffset 0 endOffset 7 height 161.00: "on path"
             RenderSVGInlineText {#text} at (107,106) size 10x231
               chunk 1 (vertical) text run 3 at (112.22,127.87) startOffset 0 endOffset 10 height 230.00: "after path"
         RenderSVGText {text} at (0,100) size 98x13 contains 1 chunk(s)
index b79a93ce0a98c4f230019bf99c727ca6b6e49677..a782d42b9f0630534cb8205665d8b88739c864ff 100644 (file)
@@ -1,3 +1,22 @@
+2007-10-07  Nikolas Zimmermann  <zimmermann@kde.org>
+
+        Reviewed by Eric.
+
+        Fix some issues with rotation & baseline-shift, when spanning
+        across <tspan> elements. Highlighted by the existing batik tests.
+
+        * rendering/SVGCharacterLayoutInfo.cpp:
+        (WebCore::SVGCharacterLayoutInfo::SVGCharacterLayoutInfo):
+        (WebCore::SVGCharacterLayoutInfo::processedChunk):
+        (WebCore::SVGChar::characterTransform):
+        * rendering/SVGCharacterLayoutInfo.h:
+        * rendering/SVGInlineTextBox.cpp:
+        (WebCore::SVGInlineTextBox::calculateGlyphBoundaries):
+        (WebCore::SVGInlineTextBox::paintCharacters):
+        (WebCore::SVGInlineTextBox::paintDecoration):
+        * rendering/SVGRootInlineBox.cpp:
+        (WebCore::SVGRootInlineBox::buildLayoutInformationForTextBox):
+
 2007-10-07  Mark Rowe  <mrowe@apple.com>
 
         Reviewed by Maciej.
index 9075db86da40d1434add5cc286713546f05290cb..90ba5d0e76dd95c1255374f62f691d2d3abcc6a8 100644 (file)
@@ -72,6 +72,7 @@ static float calculateBaselineShift(RenderObject* item)
 SVGCharacterLayoutInfo::SVGCharacterLayoutInfo()
     : curx(0.0)
     , cury(0.0)
+    , angle(0.0)
     , dx(0.0)
     , dy(0.0)
     , shiftx(0.0)
@@ -165,11 +166,19 @@ void SVGCharacterLayoutInfo::processedSingleCharacter()
     baselineShiftStackWalk();
 }
 
-void SVGCharacterLayoutInfo::processedChunk(float lastShiftX, float lastShiftY)
+void SVGCharacterLayoutInfo::processedChunk(float savedShiftX, float savedShiftY)
 {
     // baseline-shift doesn't span across ancestors, unlike dx/dy.
-    curx += lastShiftX - shiftx;
-    cury += lastShiftY - shifty;
+    curx += savedShiftX - shiftx;
+    cury += savedShiftY - shifty;
+
+    if (inPathLayout()) {
+        shiftx = savedShiftX;
+        shifty = savedShiftY;
+    }
+
+    // rotation also doesn't span
+    angle = 0.0;
 
     if (xStackChanged) {
         ASSERT(!xStack.isEmpty());
@@ -485,6 +494,22 @@ void SVGCharacterLayoutInfo::baselineShiftStackWalk()
     }
 }
 
+AffineTransform SVGChar::characterTransform() const
+{
+    AffineTransform ctm;
+
+    // Rotate character around angle 
+    ctm.translate(x, y);
+    ctm.rotate(angle);
+    ctm.translate(-x, -y);
+
+    // Apply transformations which have to be applied after
+    // the rotation - only happens with textPath.
+    ctm.translate(pathXShift, pathYShift);
+
+    return ctm;
+}
+
 } // namespace WebCore
 
 #endif // ENABLE(SVG)
index 4f705a34fa69d23ee232bf8c8446eb9986feb2e9..314c2016e951b79e8f7e48f9e41c5b53bbd22b2b 100644 (file)
@@ -93,7 +93,7 @@ struct SVGCharacterLayoutInfo {
     float angleValueNext() const;
     float baselineShiftValueNext() const;
 
-    void processedChunk(float lastShiftX, float lastShiftY);
+    void processedChunk(float savedShiftX, float savedShiftY);
     void processedSingleCharacter();
 
     bool nextPathLayoutPointAndAngle(float& x, float& y, float& angle, float glyphAdvance, float newOffset);
@@ -111,11 +111,14 @@ struct SVGCharacterLayoutInfo {
     float curx;
     float cury;
 
+    // Global rotation
+    float angle;
+
     // Accumulated dx/dy values
     float dx;
     float dy;
 
-    // Accumulated applied shift values
+    // Accumulated baseline-shift values
     float shiftx;
     float shifty;
 
@@ -164,8 +167,10 @@ private:
 struct SVGChar {
     float x;
     float y;
+    float angle;
 
-    AffineTransform transform;
+    float pathXShift;
+    float pathYShift;
 
     // Determines wheter this char is visible (ie. false for chars "off" the text layout path)
     bool visible : 1;
@@ -175,6 +180,9 @@ struct SVGChar {
 
     // Determines wheter this char starts a new chunk
     bool newTextChunk : 1;
+
+    // Helper method
+    AffineTransform characterTransform() const;
 };
 
 struct SVGInlineBoxCharacterRange {
index dd2156700dad239659e71b6b4aa60a386f8bc4aa..9a3753b9d136feac65b0391d18ec8e2377dccd70 100644 (file)
@@ -107,8 +107,9 @@ FloatRect SVGInlineTextBox::calculateGlyphBoundaries(RenderStyle* style, int off
     FloatRect glyphRect(x1, y1, x2 - x1, y2 - y1);
 
     // Take per-character transformations into account
-    if (!svgChar.transform.isIdentity())
-        glyphRect = svgChar.transform.mapRect(glyphRect);
+    AffineTransform ctm = svgChar.characterTransform();
+    if (!ctm.isIdentity())
+        glyphRect = ctm.mapRect(glyphRect);
 
     return glyphRect;
 }
@@ -339,8 +340,9 @@ void SVGInlineTextBox::paintCharacters(RenderObject::PaintInfo& paintInfo, int t
     if (*font != paintInfo.context->font())
         paintInfo.context->setFont(*font);
 
-    if (!svgChar.transform.isIdentity())
-        paintInfo.context->concatCTM(svgChar.transform);
+    AffineTransform ctm = svgChar.characterTransform();
+    if (!ctm.isIdentity())
+        paintInfo.context->concatCTM(ctm);
 
     // 1. Paint backgrounds behind text if needed.  Examples of such backgrounds include selection
     // and marked text.
@@ -413,8 +415,8 @@ void SVGInlineTextBox::paintCharacters(RenderObject::PaintInfo& paintInfo, int t
     if (setShadow)
         paintInfo.context->clearShadow();
 
-    if (!svgChar.transform.isIdentity())
-        paintInfo.context->concatCTM(svgChar.transform.inverse());
+    if (!ctm.isIdentity())
+        paintInfo.context->concatCTM(ctm.inverse());
 }
 
 void SVGInlineTextBox::paintSelection(int boxStartOffset, const SVGChar& svgChar, const UChar* chars, int length, GraphicsContext* p, RenderStyle* style, const Font* f)
@@ -499,8 +501,9 @@ void SVGInlineTextBox::paintDecoration(ETextDecoration decoration, GraphicsConte
     context->save();
     context->beginPath();
 
-    if (!svgChar.transform.isIdentity())
-        context->concatCTM(svgChar.transform);
+    AffineTransform ctm = svgChar.characterTransform();
+    if (!ctm.isIdentity())
+        context->concatCTM(ctm);
 
     if (isFilled) {
         if (RenderObject* fillObject = info.fillServerMap.get(decoration)) {
index 278a6cc54054d3da4a6d4dcbcdac54d4617baf88..709fe6e4cbe2a66635dcf56e1cdcb7f6d1b1af8a 100644 (file)
@@ -758,7 +758,6 @@ void SVGRootInlineBox::buildLayoutInformationForTextBox(SVGCharacterLayoutInfo&
         svgChar.drawnSeperated = false;
         svgChar.newTextChunk = false;
 
-        float angle = 0.0;
         float glyphWidth = 0.0;
         float glyphHeight = 0.0;
 
@@ -803,17 +802,15 @@ void SVGRootInlineBox::buildLayoutInformationForTextBox(SVGCharacterLayoutInfo&
             else if (assignedY && isVerticalText)
                 newOffset = info.cury;
 
-            svgChar.visible = info.nextPathLayoutPointAndAngle(info.curx, info.cury, angle, glyphAdvance, newOffset);
+            svgChar.visible = info.nextPathLayoutPointAndAngle(info.curx, info.cury, info.angle, glyphAdvance, newOffset);
+            svgChar.drawnSeperated = true;
         }
 
-        float dx = 0.0;
-        float dy = 0.0;
-
         // Apply x-axis shift
         if (info.dxValueAvailable()) {
-            dx = info.dxValueNext();
             svgChar.drawnSeperated = true;
 
+            float dx = info.dxValueNext();
             info.dx += dx;
 
             if (!info.inPathLayout())
@@ -822,9 +819,9 @@ void SVGRootInlineBox::buildLayoutInformationForTextBox(SVGCharacterLayoutInfo&
 
         // Apply y-axis shift
         if (info.dyValueAvailable()) {
-            dy = info.dyValueNext();
             svgChar.drawnSeperated = true;
 
+            float dy = info.dyValueNext();
             info.dy += dy;
 
             if (!info.inPathLayout())
@@ -832,52 +829,41 @@ void SVGRootInlineBox::buildLayoutInformationForTextBox(SVGCharacterLayoutInfo&
         }
 
         // Apply rotation
-        if (info.angleValueAvailable()) {
-            svgChar.drawnSeperated = true;
-            angle = info.angleValueNext();
-        }
+        if (info.angleValueAvailable())
+            info.angle = info.angleValueNext();
 
         // Apply baseline-shift
         if (info.baselineShiftValueAvailable()) {
             svgChar.drawnSeperated = true;
             float shift = info.baselineShiftValueNext();
 
-            if (isVerticalText) {
+            if (isVerticalText)
                 info.shiftx += shift;
-                info.curx += shift;
-            } else {
+            else
                 info.shifty -= shift;
-                info.cury -= shift;
-            }
         }
 
         svgChar.x = info.curx;
         svgChar.y = info.cury;
 
-        float pathXShift = 0.0;
-        float pathYShift = 0.0;
+        // For text paths any shift (dx/dy/baseline-shift) has to be applied after the rotation
+        if (!info.inPathLayout()) {
+            svgChar.x += info.shiftx;
+            svgChar.y += info.shifty;
 
-        // Correct character position for text on path layout
-        // All placed characters on a path use absolute positioning (internally).
-        // So we still have to apply baseline-shift/dx/dy corrections manually.
-        if (info.inPathLayout()) {
-            svgChar.drawnSeperated = true;
+            svgChar.pathXShift = 0.0;
+            svgChar.pathYShift = 0.0;
+        } else {
+            svgChar.pathXShift = info.dx + info.shiftx;
+            svgChar.pathYShift = info.dy + info.shifty;
 
             // Translate to glyph midpoint
             if (isVerticalText)
-                pathYShift = glyphHeight / 2.0;
+                svgChar.pathYShift -= glyphHeight / 2.0;
             else
-                pathXShift = glyphWidth / 2.0;
-
-            // Respect accumulated dx/dy values
-            pathXShift -= info.dx;
-            pathYShift -= info.dy;
-
-            // Alter character position
-            svgChar.x -= pathXShift;
-            svgChar.y -= pathYShift;
+                svgChar.pathXShift -= glyphWidth / 2.0;
         }
-
         // Correct character position for vertical text layout
         if (isVerticalText) {
             svgChar.drawnSeperated = true;
@@ -885,16 +871,10 @@ void SVGRootInlineBox::buildLayoutInformationForTextBox(SVGCharacterLayoutInfo&
             svgChar.y += glyphHeight;
         }
 
-        // Setup affine transform for single glyph
-        if (angle != 0.0) {
-            AffineTransform rotationMatrix;
-
-            rotationMatrix.translate(svgChar.x + pathXShift, svgChar.y + pathYShift);
-            rotationMatrix.rotate(angle);
-            rotationMatrix.translate(-svgChar.x - pathXShift, -svgChar.y - pathYShift);
-
-            svgChar.transform = rotationMatrix;
-        }
+        // Record angle if specified
+        svgChar.angle = info.angle;
+        if (svgChar.angle != 0.0)
+            svgChar.drawnSeperated = true;
 
         // Advance current position
         if (!isVerticalText)