Reviewed by Oliver & Rob.
authoroliver <oliver@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 12 Oct 2007 13:25:46 +0000 (13:25 +0000)
committeroliver <oliver@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 12 Oct 2007 13:25:46 +0000 (13:25 +0000)
Enable SVG textPath selection. Actually build chunks for them instead of
ignoring them - was easier than I thought. Respect per-character transformation
when calculating the chunk boundaries for the selection rectangles. Also fixes
selection rect drawing of rotated characters.

Next thing todo is to unify the glyph size calculations, as per-glyph transformations
are not respected when calculating flow box sizes in SVGRootInlineBox.

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

70 files changed:
LayoutTests/ChangeLog
LayoutTests/svg/batik/text/longTextOnPath-expected.txt
LayoutTests/svg/batik/text/textGlyphOrientationHorizontal-expected.txt
LayoutTests/svg/batik/text/textOnPath-expected.txt
LayoutTests/svg/batik/text/textOnPath2-expected.txt
LayoutTests/svg/batik/text/textOnPath3-expected.txt
LayoutTests/svg/batik/text/textOnPathSpaces-expected.txt
LayoutTests/svg/batik/text/verticalText-expected.txt
LayoutTests/svg/batik/text/verticalTextOnPath-expected.txt
LayoutTests/svg/text/text-align-01-b-expected.checksum
LayoutTests/svg/text/text-align-01-b-expected.png
LayoutTests/svg/text/text-align-02-b-expected.checksum
LayoutTests/svg/text/text-align-02-b-expected.png
LayoutTests/svg/text/text-align-03-b-expected.checksum
LayoutTests/svg/text/text-align-03-b-expected.png
LayoutTests/svg/text/text-align-04-b-expected.checksum
LayoutTests/svg/text/text-align-04-b-expected.png
LayoutTests/svg/text/text-align-04-b-expected.txt
LayoutTests/svg/text/text-align-05-b-expected.checksum
LayoutTests/svg/text/text-align-05-b-expected.png
LayoutTests/svg/text/text-align-06-b-expected.checksum
LayoutTests/svg/text/text-align-06-b-expected.png
LayoutTests/svg/text/text-altglyph-01-b-expected.checksum
LayoutTests/svg/text/text-altglyph-01-b-expected.png
LayoutTests/svg/text/text-deco-01-b-expected.checksum
LayoutTests/svg/text/text-deco-01-b-expected.png
LayoutTests/svg/text/text-fonts-01-t-expected.checksum
LayoutTests/svg/text/text-fonts-01-t-expected.png
LayoutTests/svg/text/text-fonts-02-t-expected.checksum
LayoutTests/svg/text/text-fonts-02-t-expected.png
LayoutTests/svg/text/text-intro-05-t-expected.checksum
LayoutTests/svg/text/text-intro-05-t-expected.png
LayoutTests/svg/text/text-path-01-b-expected.checksum
LayoutTests/svg/text/text-path-01-b-expected.png
LayoutTests/svg/text/text-path-01-b-expected.txt
LayoutTests/svg/text/text-spacing-01-b-expected.checksum
LayoutTests/svg/text/text-spacing-01-b-expected.png
LayoutTests/svg/text/text-text-01-b-expected.checksum
LayoutTests/svg/text/text-text-01-b-expected.png
LayoutTests/svg/text/text-text-03-b-expected.checksum
LayoutTests/svg/text/text-text-03-b-expected.png
LayoutTests/svg/text/text-text-04-t-expected.checksum
LayoutTests/svg/text/text-text-04-t-expected.png
LayoutTests/svg/text/text-text-05-t-expected.checksum
LayoutTests/svg/text/text-text-05-t-expected.png
LayoutTests/svg/text/text-text-06-t-expected.checksum
LayoutTests/svg/text/text-text-06-t-expected.png
LayoutTests/svg/text/text-text-07-t-expected.checksum
LayoutTests/svg/text/text-text-07-t-expected.png
LayoutTests/svg/text/text-text-08-b-expected.checksum
LayoutTests/svg/text/text-text-08-b-expected.png
LayoutTests/svg/text/text-tref-01-b-expected.checksum
LayoutTests/svg/text/text-tref-01-b-expected.png
LayoutTests/svg/text/text-tselect-01-b-expected.checksum
LayoutTests/svg/text/text-tselect-01-b-expected.png
LayoutTests/svg/text/text-tselect-02-f-expected.checksum
LayoutTests/svg/text/text-tselect-02-f-expected.png
LayoutTests/svg/text/text-tspan-01-b-expected.checksum
LayoutTests/svg/text/text-tspan-01-b-expected.png
LayoutTests/svg/text/text-ws-01-t-expected.checksum
LayoutTests/svg/text/text-ws-01-t-expected.png
LayoutTests/svg/text/text-ws-02-t-expected.checksum
LayoutTests/svg/text/text-ws-02-t-expected.png
WebCore/ChangeLog
WebCore/rendering/RenderObject.h
WebCore/rendering/RenderSVGHiddenContainer.h
WebCore/rendering/RenderSVGInlineText.cpp
WebCore/rendering/SVGCharacterLayoutInfo.h
WebCore/rendering/SVGInlineTextBox.cpp
WebCore/rendering/SVGRootInlineBox.cpp

index ac0c2a98c4be5ea1ad78d04e41bedd0b1b8d8775..006344c4a362dc7691e1319515d069409abd707c 100644 (file)
@@ -1,3 +1,75 @@
+2007-07-29  Nikolas Zimmermann  <zimmermann@kde.org>
+
+        Reviewed by Rob.
+
+        Update layout tests now that textPaths participate in
+        text chunk building and after the selection rect fixes.
+
+        * svg/W3C-SVG-1.1/text-align-04-b-expected.txt:
+        * svg/W3C-SVG-1.1/text-path-01-b-expected.txt:
+        * svg/batik/text/longTextOnPath-expected.txt:
+        * svg/batik/text/textGlyphOrientationHorizontal-expected.txt:
+        * svg/batik/text/textOnPath-expected.txt:
+        * svg/batik/text/textOnPath2-expected.txt:
+        * svg/batik/text/textOnPath3-expected.txt:
+        * svg/batik/text/textOnPathSpaces-expected.txt:
+        * svg/batik/text/verticalText-expected.txt:
+        * svg/batik/text/verticalTextOnPath-expected.txt:
+        * svg/text/text-align-01-b-expected.checksum:
+        * svg/text/text-align-01-b-expected.png:
+        * svg/text/text-align-02-b-expected.checksum:
+        * svg/text/text-align-02-b-expected.png:
+        * svg/text/text-align-03-b-expected.checksum:
+        * svg/text/text-align-03-b-expected.png:
+        * 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-align-05-b-expected.checksum:
+        * svg/text/text-align-05-b-expected.png:
+        * svg/text/text-align-06-b-expected.checksum:
+        * svg/text/text-align-06-b-expected.png:
+        * svg/text/text-altglyph-01-b-expected.checksum:
+        * svg/text/text-altglyph-01-b-expected.png:
+        * svg/text/text-deco-01-b-expected.checksum:
+        * svg/text/text-deco-01-b-expected.png:
+        * svg/text/text-fonts-01-t-expected.checksum:
+        * svg/text/text-fonts-01-t-expected.png:
+        * svg/text/text-fonts-02-t-expected.checksum:
+        * svg/text/text-fonts-02-t-expected.png:
+        * svg/text/text-intro-05-t-expected.checksum:
+        * svg/text/text-intro-05-t-expected.png:
+        * svg/text/text-path-01-b-expected.checksum:
+        * svg/text/text-path-01-b-expected.png:
+        * svg/text/text-path-01-b-expected.txt:
+        * svg/text/text-spacing-01-b-expected.checksum:
+        * svg/text/text-spacing-01-b-expected.png:
+        * svg/text/text-text-01-b-expected.checksum:
+        * svg/text/text-text-01-b-expected.png:
+        * svg/text/text-text-03-b-expected.checksum:
+        * svg/text/text-text-03-b-expected.png:
+        * svg/text/text-text-04-t-expected.checksum:
+        * svg/text/text-text-04-t-expected.png:
+        * svg/text/text-text-05-t-expected.checksum:
+        * svg/text/text-text-05-t-expected.png:
+        * svg/text/text-text-06-t-expected.checksum:
+        * svg/text/text-text-06-t-expected.png:
+        * svg/text/text-text-07-t-expected.checksum:
+        * svg/text/text-text-07-t-expected.png:
+        * svg/text/text-text-08-b-expected.checksum:
+        * svg/text/text-text-08-b-expected.png:
+        * svg/text/text-tref-01-b-expected.checksum:
+        * svg/text/text-tref-01-b-expected.png:
+        * svg/text/text-tselect-01-b-expected.checksum:
+        * svg/text/text-tselect-01-b-expected.png:
+        * svg/text/text-tselect-02-f-expected.checksum:
+        * svg/text/text-tselect-02-f-expected.png:
+        * svg/text/text-tspan-01-b-expected.checksum:
+        * svg/text/text-tspan-01-b-expected.png:
+        * svg/text/text-ws-01-t-expected.checksum:
+        * svg/text/text-ws-01-t-expected.png:
+        * svg/text/text-ws-02-t-expected.checksum:
+        * svg/text/text-ws-02-t-expected.png:
+
 2007-07-26  Rob Buis  <buis@kde.org>
 
         Reviewed by Nikolas.
index 18b32af52e18c59f0d2ead16e13497515dd4bd7b..fd9fd5c29e339385eca2b33252bbd86ec35aa749 100644 (file)
@@ -12,8 +12,9 @@ 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 0 chunk(s)
+      RenderSVGText {text} at (21,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. "
         RenderSVGInlineText {#text} at (0,0) size 0x0
     RenderSVGContainer {use} at (0,0) size 0x0
index d21bc4bc8d3c5b516bf171b6f1b0f89fd3a60ab1..a94b14160fda7a29be95611e91c0c83b88accf3d 100644 (file)
@@ -17,13 +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 122x71 contains 0 chunk(s)
+        RenderSVGText {text} at (17,4) size 122x71 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 122x71
             RenderSVGInlineText {#text} at (0,-13) size 52x49
+              chunk 1 text run 1 at (17.67,12.16) startOffset 0 endOffset 6 width 60.00: "Batik "
             RenderSVGTSpan {tspan} at (0,0) size 16x32 [color=#FF0000]
               RenderSVGInlineText {#text} at (52,-21) size 15x31
+                chunk 1 text run 2 at (69.83,4.21) startOffset 0 endOffset 2 width 17.00: "is"
             RenderSVGTSpan {tspan} at (0,0) size 57x50
               RenderSVGInlineText {#text} at (65,0) size 57x49
+                chunk 1 text run 3 at (82.43,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)
@@ -33,13 +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 135x60 contains 0 chunk(s)
+        RenderSVGText {text} at (19,3) size 135x60 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 135x60
             RenderSVGInlineText {#text} at (0,-7) size 56x46
+              chunk 1 text run 1 at (19.16,17.35) startOffset 0 endOffset 6 width 60.00: "Batik "
             RenderSVGTSpan {tspan} at (0,0) size 17x29 [color=#FF0000]
               RenderSVGInlineText {#text} at (55,-21) size 16x28
+                chunk 1 text run 2 at (74.95,3.71) startOffset 0 endOffset 2 width 17.00: "is"
             RenderSVGTSpan {tspan} at (0,0) size 63x39
               RenderSVGInlineText {#text} at (72,-13) size 62x39
+                chunk 1 text run 3 at (91.61,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)
@@ -49,13 +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 122x71 contains 0 chunk(s)
+        RenderSVGText {text} at (17,4) size 122x71 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 122x71
             RenderSVGInlineText {#text} at (0,-13) size 52x49
+              chunk 1 text run 1 at (17.67,12.16) startOffset 0 endOffset 6 width 60.00: "Batik "
             RenderSVGTSpan {tspan} at (0,0) size 16x32 [color=#FF0000]
               RenderSVGInlineText {#text} at (52,-21) size 15x31
+                chunk 1 text run 2 at (69.83,4.21) startOffset 0 endOffset 2 width 17.00: "is"
             RenderSVGTSpan {tspan} at (0,0) size 57x50
               RenderSVGInlineText {#text} at (65,0) size 57x49
+                chunk 1 text run 3 at (82.43,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)
@@ -65,11 +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 135x60 contains 0 chunk(s)
+        RenderSVGText {text} at (19,3) size 135x60 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 135x60
             RenderSVGInlineText {#text} at (0,-7) size 56x46
+              chunk 1 text run 1 at (19.16,17.35) startOffset 0 endOffset 6 width 60.00: "Batik "
             RenderSVGTSpan {tspan} at (0,0) size 17x29 [color=#FF0000]
               RenderSVGInlineText {#text} at (55,-21) size 16x28
+                chunk 1 text run 2 at (74.95,3.71) startOffset 0 endOffset 2 width 17.00: "is"
             RenderSVGTSpan {tspan} at (0,0) size 63x39
               RenderSVGInlineText {#text} at (72,-13) size 62x39
+                chunk 1 text run 3 at (91.61,11.78) startOffset 0 endOffset 5 width 65.00: " Good"
           RenderSVGInlineText {#text} at (0,0) size 0x0
index 64c70770afe79777c0a3ef6e596e44749cecf0f2..6ed5443aff5e41c8a572447c9367e0be50d5ee5f 100644 (file)
@@ -13,13 +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 96x64 contains 0 chunk(s)
+        RenderSVGText {text} at (24,3) size 96x64 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 96x64
             RenderSVGInlineText {#text} at (0,-2) size 27x48
+              chunk 1 text run 1 at (24.45,18.29) startOffset 0 endOffset 5 width 42.00: "Text "
             RenderSVGTSpan {tspan} at (0,0) size 20x25 [color=#FF0000]
               RenderSVGInlineText {#text} at (27,-17) size 19x25
+                chunk 1 text run 2 at (51.75,3.11) startOffset 0 endOffset 2 width 20.00: "on"
             RenderSVGTSpan {tspan} at (0,0) size 49x42
               RenderSVGInlineText {#text} at (47,-8) size 48x42
+                chunk 1 text run 3 at (71.44,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
@@ -31,13 +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 74x77 contains 0 chunk(s)
+        RenderSVGText {text} at (-6,-10) size 74x77 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 74x77
             RenderSVGInlineText {#text} at (0,-8) size 45x23
+              chunk 1 (middle anchor) text run 1 at (-6.00,0.00) startOffset 0 endOffset 5 width 42.00: "Text "
             RenderSVGTSpan {tspan} at (0,0) size 20x23 [color=#FF0000]
               RenderSVGInlineText {#text} at (43,-18) size 20x23
+                chunk 1 (middle anchor) text run 2 at (37.00,-10.00) startOffset 0 endOffset 2 width 20.00: "on"
             RenderSVGTSpan {tspan} at (0,0) size 41x54
               RenderSVGInlineText {#text} at (33,5) size 40x53
+                chunk 1 (middle anchor) text run 3 at (27.72,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
@@ -49,13 +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 81x70 contains 0 chunk(s)
+        RenderSVGText {text} at (-6,-10) size 81x70 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 81x70
             RenderSVGInlineText {#text} at (0,-8) size 45x23
+              chunk 1 (end anchor) text run 1 at (-6.00,0.00) startOffset 0 endOffset 5 width 42.00: "Text "
             RenderSVGTSpan {tspan} at (0,0) size 22x67 [color=#FF0000]
               RenderSVGInlineText {#text} at (31,-18) size 21x67
+                chunk 1 (end anchor) text run 2 at (25.39,-10.00) startOffset 0 endOffset 2 width 20.00: "on"
             RenderSVGTSpan {tspan} at (0,0) size 46x48
               RenderSVGInlineText {#text} at (35,4) size 45x47
+                chunk 1 (end anchor) text run 3 at (29.74,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
@@ -67,13 +76,16 @@ layer at (0,0) size 450x500
         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 95x59 contains 0 chunk(s)
+        RenderSVGText {text} at (74,12) size 95x59 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 95x59
             RenderSVGInlineText {#text} at (0,-17) size 38x36
+              chunk 1 text run 1 at (74.99,12.80) startOffset 0 endOffset 5 width 42.00: "Text "
             RenderSVGTSpan {tspan} at (0,0) size 14x32 [color=#FF0000]
               RenderSVGInlineText {#text} at (36,-7) size 13x32
+                chunk 1 text run 2 at (110.39,22.26) startOffset 0 endOffset 2 width 20.00: "on"
             RenderSVGTSpan {tspan} at (0,0) size 52x23
               RenderSVGInlineText {#text} at (43,18) size 52x23
+                chunk 1 text run 3 at (117.49,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
@@ -85,13 +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 97x59 contains 0 chunk(s)
+        RenderSVGText {text} at (26,2) size 97x59 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 97x59
             RenderSVGInlineText {#text} at (0,-4) size 32x44
+              chunk 1 (middle anchor) text run 1 at (26.24,15.53) startOffset 0 endOffset 5 width 42.00: "Text "
             RenderSVGTSpan {tspan} at (0,0) size 20x24 [color=#FF0000]
               RenderSVGInlineText {#text} at (32,-17) size 19x24
+                chunk 1 (middle anchor) text run 2 at (58.57,2.52) startOffset 0 endOffset 2 width 20.00: "on"
             RenderSVGTSpan {tspan} at (0,0) size 45x49
               RenderSVGInlineText {#text} at (52,-7) size 44x48
+                chunk 1 (middle anchor) text run 3 at (78.49,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
@@ -103,13 +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 95x66 contains 0 chunk(s)
+        RenderSVGText {text} at (29,2) size 95x66 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 95x66
             RenderSVGInlineText {#text} at (0,-6) size 36x40
+              chunk 1 (end anchor) text run 1 at (29.43,13.68) startOffset 0 endOffset 5 width 42.00: "Text "
             RenderSVGTSpan {tspan} at (0,0) size 20x23 [color=#FF0000]
               RenderSVGInlineText {#text} at (36,-17) size 19x23
+                chunk 1 (end anchor) text run 2 at (65.56,2.66) startOffset 0 endOffset 2 width 20.00: "on"
             RenderSVGTSpan {tspan} at (0,0) size 39x55
               RenderSVGInlineText {#text} at (56,-6) size 39x54
+                chunk 1 (end anchor) text run 3 at (85.45,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
@@ -121,13 +139,16 @@ layer at (0,0) size 450x500
         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 104x59 contains 0 chunk(s)
+        RenderSVGText {text} at (45,4) size 104x59 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 104x59
             RenderSVGInlineText {#text} at (0,-9) size 41x28
+              chunk 1 text run 1 at (45.19,12.60) startOffset 0 endOffset 5 width 42.00: "Text "
             RenderSVGTSpan {tspan} at (0,0) size 19x27 [color=#FF0000]
               RenderSVGInlineText {#text} at (41,-17) size 19x26
+                chunk 1 text run 2 at (86.23,4.76) startOffset 0 endOffset 2 width 20.00: "on"
             RenderSVGTSpan {tspan} at (0,0) size 45x41
               RenderSVGInlineText {#text} at (59,0) size 45x40
+                chunk 1 text run 3 at (104.30,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
@@ -139,13 +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 108x70 contains 0 chunk(s)
+        RenderSVGText {text} at (-6,0) size 108x70 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 108x70
             RenderSVGInlineText {#text} at (0,-18) size 41x70
+              chunk 1 (middle anchor) text run 1 at (-6.00,0.00) startOffset 0 endOffset 5 width 42.00: "Text "
             RenderSVGTSpan {tspan} at (0,0) size 17x30 [color=#FF0000]
               RenderSVGInlineText {#text} at (38,-6) size 17x29
+                chunk 1 (middle anchor) text run 2 at (32.42,11.40) startOffset 0 endOffset 2 width 20.00: "on"
             RenderSVGTSpan {tspan} at (0,0) size 54x28
               RenderSVGInlineText {#text} at (54,-5) size 53x28
+                chunk 1 (middle anchor) text run 3 at (48.69,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
@@ -157,13 +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 89x78 contains 0 chunk(s)
+        RenderSVGText {text} at (-6,-10) size 89x78 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 89x78
             RenderSVGInlineText {#text} at (0,-8) size 45x23
+              chunk 1 (end anchor) text run 1 at (-6.00,0.00) startOffset 0 endOffset 5 width 42.00: "Text "
             RenderSVGTSpan {tspan} at (0,0) size 20x23 [color=#FF0000]
               RenderSVGInlineText {#text} at (43,-18) size 20x23
+                chunk 1 (end anchor) text run 2 at (37.00,-10.00) startOffset 0 endOffset 2 width 20.00: "on"
             RenderSVGTSpan {tspan} at (0,0) size 59x68
               RenderSVGInlineText {#text} at (30,-8) size 58x68
+                chunk 1 (end anchor) text run 3 at (24.75,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
@@ -175,14 +202,18 @@ layer at (0,0) size 450x500
         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 106x44 contains 0 chunk(s)
+        RenderSVGText {text} at (14,8) size 106x44 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 106x44
             RenderSVGTSpan {tspan} at (0,0) size 27x29 [color=#008000]
               RenderSVGInlineText {#text} at (0,-10) size 27x29
+                chunk 1 text run 1 at (14.12,10.38) startOffset 0 endOffset 5 width 34.00: "super"
             RenderSVGInlineText {#text} at (27,-12) size 26x29
+              chunk 1 text run 2 at (41.70,8.97) startOffset 0 endOffset 5 width 31.00: " and "
             RenderSVGTSpan {tspan} at (0,0) size 20x21 [color=#FF0000]
               RenderSVGInlineText {#text} at (52,8) size 19x21
+                chunk 1 text run 3 at (66.99,29.16) startOffset 0 endOffset 3 width 22.00: "sub"
             RenderSVGInlineText {#text} at (71,0) size 34x32
+              chunk 1 text run 4 at (85.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
@@ -194,13 +225,16 @@ layer at (0,0) size 450x500
         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 112x45 contains 0 chunk(s)
+        RenderSVGText {text} at (13,8) size 112x45 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 112x45
             RenderSVGTSpan {tspan} at (0,0) size 43x33 [color=#008000]
               RenderSVGInlineText {#text} at (0,-12) size 42x32
+                chunk 1 text run 1 at (13.83,8.83) startOffset 0 endOffset 8 width 49.00: "positive"
             RenderSVGInlineText {#text} at (42,-8) size 24x34
+              chunk 1 text run 2 at (55.69,12.92) startOffset 0 endOffset 5 width 31.00: " and "
             RenderSVGTSpan {tspan} at (0,0) size 47x35 [color=#FF0000]
               RenderSVGInlineText {#text} at (65,-2) size 47x35
+                chunk 1 text run 3 at (78.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
@@ -215,8 +249,9 @@ layer at (0,0) size 450x500
               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 82x54 [color=#FF0000]
               RenderSVGInlineText {#text} at (0,4) size 82x53
+                chunk 1 text run 2 at (28.21,12.90) startOffset 0 endOffset 7 width 89.00: "on path"
             RenderSVGInlineText {#text} at (89,11) size 120x36
-              chunk 1 text run 2 at (28.21,12.90) startOffset 0 endOffset 11 width 121.00: " after path"
+              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
             chunk 1 text run 1 at (15.00,40.00) startOffset 0 endOffset 26 width 98.00: "text before/after textPath"
index 6fec3aab1eb8696dc5ba3cec14a037b50a49c20d..7136c05123ffca8cc4167e6cb0e86e3b578e8774 100644 (file)
@@ -31,17 +31,20 @@ layer at (0,0) size 450x500
           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 128x119 [color=#DC143C]
           RenderSVGInlineText {#text} at (86,15) size 33x90
+            chunk 1 text run 2 at (96.67,-74.64) startOffset 0 endOffset 14 width 85.00: "text on a path"
           RenderSVGTSpan {tspan} at (0,0) size 69x30 [color=#FFA500]
             RenderSVGInlineText {#text} at (117,-13) size 68x30
+              chunk 1 text run 3 at (127.33,-103.72) startOffset 0 endOffset 11 width 72.00: "with nested"
           RenderSVGTSpan {tspan} at (0,0) size 29x39 [color=#008000]
             RenderSVGInlineText {#text} at (185,2) size 29x38
+              chunk 1 text run 4 at (195.48,-87.01) startOffset 0 endOffset 6 width 37.00: " tspan"
         RenderSVGInlineText {#text} at (218,23) size 32x18
-          chunk 1 text run 2 at (96.67,-24.89) startOffset 0 endOffset 5 width 32.00: " xxx "
+          chunk 1 text run 5 at (228.78,-66.97) startOffset 0 endOffset 5 width 32.00: " xxx "
         RenderSVGTSpan {tspan} at (0,0) size 51x18 [color=#0000FF]
           RenderSVGInlineText {#text} at (260,23) size 51x18
-            chunk 1 text run 3 at (99.21,-74.64) startOffset 0 endOffset 9 width 51.00: "all with "
+            chunk 1 text run 6 at (270.78,-66.97) startOffset 0 endOffset 9 width 51.00: "all with "
         RenderSVGInlineText {#text} at (311,23) size 91x18
-          chunk 1 text run 4 at (127.33,-103.72) startOffset 0 endOffset 16 width 91.00: " different links"
+          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 414x129.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
@@ -51,17 +54,20 @@ layer at (0,0) size 450x500
           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 136x94 [color=#DC143C]
           RenderSVGInlineText {#text} at (90,0) size 50x79
+            chunk 1 text run 2 at (100.31,-89.20) startOffset 0 endOffset 14 width 85.00: "text on a path"
           RenderSVGTSpan {tspan} at (0,0) size 67x36 [color=#FFA500]
             RenderSVGInlineText {#text} at (140,-13) size 66x36
+              chunk 1 text run 3 at (150.76,-103.73) startOffset 0 endOffset 11 width 72.00: "with nested"
           RenderSVGTSpan {tspan} at (0,0) size 21x44 [color=#008000]
             RenderSVGInlineText {#text} at (205,19) size 21x44
+              chunk 1 text run 4 at (215.71,-70.80) startOffset 0 endOffset 6 width 37.00: " tspan"
         RenderSVGInlineText {#text} at (230,45) size 31x18
-          chunk 1 text run 2 at (100.31,-49.86) startOffset 0 endOffset 5 width 32.00: " xxx "
+          chunk 1 text run 5 at (240.96,-44.00) startOffset 0 endOffset 5 width 32.00: " xxx "
         RenderSVGTSpan {tspan} at (0,0) size 51x18 [color=#0000FF]
           RenderSVGInlineText {#text} at (272,45) size 51x18
-            chunk 1 text run 3 at (107.94,-89.20) startOffset 0 endOffset 9 width 51.00: "all with "
+            chunk 1 text run 6 at (282.96,-44.00) startOffset 0 endOffset 9 width 51.00: "all with "
         RenderSVGInlineText {#text} at (323,45) size 91x18
-          chunk 1 text run 4 at (150.76,-103.73) startOffset 0 endOffset 16 width 91.00: " different links"
+          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
@@ -71,14 +77,17 @@ layer at (0,0) size 450x500
           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 137x86 [color=#DC143C]
           RenderSVGInlineText {#text} at (92,-1) size 55x74
+            chunk 1 text run 2 at (102.26,-91.59) startOffset 0 endOffset 14 width 85.00: "text on a path"
           RenderSVGTSpan {tspan} at (0,0) size 64x42 [color=#FFA500]
             RenderSVGInlineText {#text} at (148,-13) size 64x41
+              chunk 1 text run 3 at (158.01,-103.72) startOffset 0 endOffset 11 width 72.00: "with nested"
           RenderSVGTSpan {tspan} at (0,0) size 19x45 [color=#008000]
             RenderSVGInlineText {#text} at (210,25) size 18x45
+              chunk 1 text run 4 at (220.21,-64.99) startOffset 0 endOffset 6 width 37.00: " tspan"
         RenderSVGInlineText {#text} at (233,52) size 32x18
-          chunk 1 text run 2 at (102.26,-56.47) startOffset 0 endOffset 5 width 32.00: " xxx "
+          chunk 1 text run 5 at (243.21,-37.01) startOffset 0 endOffset 5 width 32.00: " xxx "
         RenderSVGTSpan {tspan} at (0,0) size 51x18 [color=#0000FF]
           RenderSVGInlineText {#text} at (275,52) size 51x18
-            chunk 1 text run 3 at (111.58,-91.59) startOffset 0 endOffset 9 width 51.00: "all with "
+            chunk 1 text run 6 at (285.21,-37.01) startOffset 0 endOffset 9 width 51.00: "all with "
         RenderSVGInlineText {#text} at (326,52) size 91x18
-          chunk 1 text run 4 at (158.01,-103.72) startOffset 0 endOffset 16 width 91.00: " different links"
+          chunk 1 text run 7 at (336.21,-37.01) startOffset 0 endOffset 16 width 91.00: " different links"
index a5f6babc6e01619dc5710047c898656052ed3838..c4af4272aad238a13244c6e67ca02f9ee8bb07fd 100644 (file)
@@ -16,9 +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 133x80 contains 0 chunk(s)
+      RenderSVGText {text} at (105,-94) size 133x80 contains 1 chunk(s)
         RenderSVGTextPath {textPath} at (0,0) size 133x80 [color=#DC143C]
           RenderSVGInlineText {#text} at (0,-13) size 132x80
+            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'."
     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"]
@@ -28,9 +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 124x107 contains 0 chunk(s)
+      RenderSVGText {text} at (178,-93) size 124x107 contains 1 chunk(s)
         RenderSVGTextPath {textPath} at (0,0) size 124x107 [color=#DC143C]
           RenderSVGInlineText {#text} at (0,-13) size 124x107
+            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'."
     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"]
@@ -40,8 +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 335x111 contains 0 chunk(s)
+      RenderSVGText {text} at (-105,-94) size 335x111 contains 2 chunk(s)
         RenderSVGTextPath {textPath} at (0,0) size 335x111 [color=#DC143C]
           RenderSVGInlineText {#text} at (0,78) size 207x19
+            chunk 1 (middle anchor) text run 1 at (-105.00,-1.44) startOffset 0 endOffset 10 width 64.00: "Text on a "
           RenderSVGTSpan {tspan} at (0,0) size 99x58
             RenderSVGInlineText {#text} at (236,-13) size 99x57
+              chunk 2 (middle anchor) text run 1 at (131.30,-93.74) startOffset 0 endOffset 21 width 118.00: "path for text w/ 'x'."
index ba4ba58733c97374ccd5ae02ac9313638472dec0..fadfbed500e4789db6a7d07a92947290f1f8f93c 100644 (file)
@@ -13,10 +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 51x42 contains 0 chunk(s)
+        RenderSVGText {text} at (13,8) size 51x42 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 51x42
             RenderSVGTSpan {tspan} at (0,0) size 51x42
               RenderSVGInlineText {#text} at (0,-17) size 50x41
+                chunk 1 text run 1 at (13.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
@@ -25,10 +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 93x49 contains 0 chunk(s)
+        RenderSVGText {text} at (21,9) size 93x49 contains 6 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 93x49
             RenderSVGTSpan {tspan} at (0,0) size 93x49
               RenderSVGInlineText {#text} at (0,-17) size 93x49
+                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 (0,0) size 0x0
         RenderSVGText {text} at (15,60) size 123x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 123x13
@@ -40,10 +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 101x42 contains 0 chunk(s)
+        RenderSVGText {text} at (13,8) size 101x42 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 101x42
             RenderSVGTSpan {tspan} at (0,0) size 101x42
               RenderSVGInlineText {#text} at (0,-17) size 100x41
+                chunk 1 text run 1 at (13.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
@@ -52,9 +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 51x42 contains 0 chunk(s)
+        RenderSVGText {text} at (13,8) size 51x42 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 51x42
             RenderSVGInlineText {#text} at (0,-17) size 50x41
+              chunk 1 text run 1 at (13.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
@@ -63,9 +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 51x42 contains 0 chunk(s)
+        RenderSVGText {text} at (13,8) size 51x42 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 51x42
             RenderSVGInlineText {#text} at (0,-17) size 50x41
+              chunk 1 text run 1 at (13.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
@@ -74,9 +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 51x42 contains 0 chunk(s)
+        RenderSVGText {text} at (13,8) size 51x42 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 51x42
             RenderSVGInlineText {#text} at (0,-17) size 50x41
+              chunk 1 text run 1 at (13.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
@@ -85,9 +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 51x42 contains 0 chunk(s)
+        RenderSVGText {text} at (13,8) size 51x42 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 51x42
             RenderSVGInlineText {#text} at (0,-17) size 50x41
+              chunk 1 text run 1 at (13.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
@@ -102,9 +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 51x42 contains 0 chunk(s)
+        RenderSVGText {text} at (13,8) size 51x42 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 51x42
             RenderSVGInlineText {#text} at (0,-17) size 50x41
+              chunk 1 text run 1 at (13.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
@@ -119,9 +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 51x42 contains 0 chunk(s)
+        RenderSVGText {text} at (13,8) size 51x42 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 51x42
             RenderSVGInlineText {#text} at (0,-17) size 50x41
+              chunk 1 text run 1 at (13.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
@@ -136,9 +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 33x43 contains 0 chunk(s)
+        RenderSVGText {text} at (14,8) size 33x43 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 33x43
             RenderSVGInlineText {#text} at (0,-17) size 33x42
+              chunk 1 text run 1 at (14.27,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
@@ -147,9 +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 102x50 contains 0 chunk(s)
+        RenderSVGText {text} at (13,8) size 102x50 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 102x50
             RenderSVGInlineText {#text} at (0,-17) size 101x49
+              chunk 1 text run 1 at (13.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
@@ -161,9 +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 102x50 contains 0 chunk(s)
+        RenderSVGText {text} at (13,8) size 102x50 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 102x50
             RenderSVGInlineText {#text} at (0,-17) size 101x49
+              chunk 1 text run 1 at (13.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 9a2c2eb558a1dcf4dd720d8e4ba4e3f3a72ecd53..01a369a8d99be33570867ffa42591385596d9be2 100644 (file)
@@ -64,8 +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 289x42 contains 0 chunk(s)
+        RenderSVGText {text} at (15,15) size 289x42 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 289x42
             RenderSVGInlineText {#text} at (0,-10) size 288x41
+              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 (0,0) size 0x0
     RenderSVGContainer {use} at (0,0) size 0x0
index b445546d63585944155d1bf0a8a883e59b458728..c7b756e66710be884265a0002c5e32e57f6ddefa 100644 (file)
@@ -13,13 +13,16 @@ 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 (16,17) size 110x129 contains 0 chunk(s)
+        RenderSVGText {text} at (16,17) size 110x129 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 110x129
             RenderSVGInlineText {#text} at (0,-12) size 61x37
+              chunk 1 (vertical) text run 1 at (16.55,17.65) startOffset 0 endOffset 5 height 85.00: "Text "
             RenderSVGTSpan {tspan} at (0,0) size 22x25 [color=#FF0000]
               RenderSVGInlineText {#text} at (82,6) size 22x24
+                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 10x119
               RenderSVGInlineText {#text} at (100,-2) size 10x119
+                chunk 1 (vertical) text run 3 at (116.63,27.37) 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
@@ -34,13 +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 114x119 contains 0 chunk(s)
+        RenderSVGText {text} at (-5,8) size 114x119 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 114x119
             RenderSVGInlineText {#text} at (0,-12) size 6x85
+              chunk 1 (middle anchor, vertical) text run 1 at (-4.50,8.50) startOffset 0 endOffset 5 height 85.00: "Text "
             RenderSVGTSpan {tspan} at (0,0) size 8x34 [color=#FF0000]
               RenderSVGInlineText {#text} at (11,72) size 8x34
+                chunk 1 (middle anchor, vertical) text run 2 at (6.00,93.50) startOffset 0 endOffset 2 height 34.00: "on"
             RenderSVGTSpan {tspan} at (0,0) size 91x44
               RenderSVGInlineText {#text} at (24,-3) size 91x44
+                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 (0,0) size 0x0
         RenderSVGText {text} at (35,60) size 68x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 68x13
@@ -55,13 +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 74x170 contains 0 chunk(s)
+        RenderSVGText {text} at (-5,8) size 74x170 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 74x170
             RenderSVGInlineText {#text} at (0,-12) size 6x85
+              chunk 1 (end anchor, vertical) text run 1 at (-4.50,8.50) startOffset 0 endOffset 5 height 85.00: "Text "
             RenderSVGTSpan {tspan} at (0,0) size 8x34 [color=#FF0000]
               RenderSVGInlineText {#text} at (11,72) size 8x34
+                chunk 1 (end anchor, vertical) text run 2 at (6.00,93.50) startOffset 0 endOffset 2 height 34.00: "on"
             RenderSVGTSpan {tspan} at (0,0) size 73x160
               RenderSVGInlineText {#text} at (1,-2) size 73x159
+                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 (0,0) size 0x0
         RenderSVGText {text} at (35,60) size 73x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 73x13
@@ -76,13 +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 63x187 contains 0 chunk(s)
+        RenderSVGText {text} at (74,26) size 63x187 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 63x187
             RenderSVGInlineText {#text} at (0,-12) size 50x35
+              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 8x34 [color=#FF0000]
               RenderSVGInlineText {#text} at (55,21) size 8x34
+                chunk 1 (vertical) text run 2 at (129.61,60.10) startOffset 0 endOffset 2 height 34.00: "on"
             RenderSVGTSpan {tspan} at (0,0) size 10x119
               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 (0,0) size 0x0
         RenderSVGText {text} at (35,60) size 73x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 73x13
@@ -97,13 +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 133x86 contains 0 chunk(s)
+        RenderSVGText {text} at (-5,8) size 133x86 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 133x86
             RenderSVGInlineText {#text} at (0,-12) size 43x51
+              chunk 1 (middle anchor, vertical) text run 1 at (-4.50,8.50) startOffset 0 endOffset 5 height 85.00: "Text "
             RenderSVGTSpan {tspan} at (0,0) size 21x28 [color=#FF0000]
               RenderSVGInlineText {#text} at (64,-2) size 20x27
+                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 52x68
               RenderSVGInlineText {#text} at (82,5) size 52x68
+                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 (0,0) size 0x0
         RenderSVGText {text} at (35,60) size 73x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 73x13
@@ -118,13 +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 134x102 contains 0 chunk(s)
+        RenderSVGText {text} at (-5,8) size 134x102 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 134x102
             RenderSVGInlineText {#text} at (0,-12) size 6x85
+              chunk 1 (end anchor, vertical) text run 1 at (-4.50,8.50) startOffset 0 endOffset 5 height 85.00: "Text "
             RenderSVGTSpan {tspan} at (0,0) size 33x82 [color=#FF0000]
               RenderSVGInlineText {#text} at (11,7) size 33x82
+                chunk 1 (end anchor, vertical) text run 2 at (6.00,28.12) startOffset 0 endOffset 2 height 34.00: "on"
             RenderSVGTSpan {tspan} at (0,0) size 93x42
               RenderSVGInlineText {#text} at (42,-2) size 92x41
+                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 (0,0) size 0x0
         RenderSVGText {text} at (35,60) size 78x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 78x13
@@ -139,13 +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 0 chunk(s)
+        RenderSVGText {text} at (46,17) size 89x162 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 89x162
             RenderSVGInlineText {#text} at (0,-12) size 62x43
+              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 8x34 [color=#FF0000]
               RenderSVGInlineText {#text} at (81,-3) size 8x34
+                chunk 1 (vertical) text run 2 at (127.54,26.96) startOffset 0 endOffset 2 height 34.00: "on"
             RenderSVGTSpan {tspan} at (0,0) size 10x119
               RenderSVGInlineText {#text} at (71,30) size 10x119
+                chunk 1 (vertical) text run 3 at (117.54,60.96) 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
@@ -160,13 +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 131x85 contains 0 chunk(s)
+        RenderSVGText {text} at (-5,8) size 131x85 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 131x85
             RenderSVGInlineText {#text} at (0,-12) size 6x85
+              chunk 1 (middle anchor, vertical) text run 1 at (-4.50,8.50) startOffset 0 endOffset 5 height 85.00: "Text "
             RenderSVGTSpan {tspan} at (0,0) size 21x27 [color=#FF0000]
               RenderSVGInlineText {#text} at (32,0) size 21x27
+                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 78x44
               RenderSVGInlineText {#text} at (54,-3) size 78x43
+                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 (0,0) size 0x0
         RenderSVGText {text} at (35,60) size 65x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 65x13
@@ -178,13 +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 42x204 contains 0 chunk(s)
+        RenderSVGText {text} at (-5,8) size 42x204 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 42x204
             RenderSVGInlineText {#text} at (0,-12) size 6x85
+              chunk 1 (end anchor, vertical) text run 1 at (-4.50,8.50) startOffset 0 endOffset 5 height 85.00: "Text "
             RenderSVGTSpan {tspan} at (0,0) size 8x34 [color=#FF0000]
               RenderSVGInlineText {#text} at (11,72) size 8x34
+                chunk 1 (end anchor, vertical) text run 2 at (6.00,93.50) startOffset 0 endOffset 2 height 34.00: "on"
             RenderSVGTSpan {tspan} at (0,0) size 42x191
               RenderSVGInlineText {#text} at (1,0) size 42x191
+                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 (0,0) size 0x0
         RenderSVGText {text} at (35,60) size 65x13 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-10) size 65x13
@@ -199,14 +226,18 @@ layer at (0,0) size 450x500
         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 89x254 contains 0 chunk(s)
+        RenderSVGText {text} at (34,21) size 89x254 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 89x254
             RenderSVGTSpan {tspan} at (0,0) size 54x46 [color=#008000]
               RenderSVGInlineText {#text} at (0,-12) size 53x45
+                chunk 1 (vertical) text run 1 at (34.73,21.30) startOffset 0 endOffset 5 height 85.00: "super"
             RenderSVGInlineText {#text} at (65,-6) size 22x78
+              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 9x51 [color=#FF0000]
               RenderSVGInlineText {#text} at (73,71) size 9x51
+                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 8x119
+              chunk 1 (vertical) text run 4 at (115.84,156.89) 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
@@ -221,13 +252,16 @@ layer at (0,0) size 450x500
         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 94x271 contains 0 chunk(s)
+        RenderSVGText {text} at (29,21) size 94x271 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 94x271
             RenderSVGTSpan {tspan} at (0,0) size 94x50 [color=#008000]
               RenderSVGInlineText {#text} at (0,-12) size 93x50
+                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 6x85
+              chunk 1 (vertical) text run 2 at (112.84,71.89) startOffset 0 endOffset 5 height 85.00: " and "
             RenderSVGTSpan {tspan} at (0,0) size 9x136 [color=#FF0000]
               RenderSVGInlineText {#text} at (80,122) size 9x136
+                chunk 1 (vertical) text run 3 at (109.84,156.89) 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
@@ -245,8 +279,9 @@ layer at (0,0) size 450x500
               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 91x92 [color=#FF0000]
               RenderSVGInlineText {#text} at (28,3) size 91x92
+                chunk 1 (vertical) text run 2 at (33.14,24.21) startOffset 0 endOffset 7 height 161.00: "on path"
             RenderSVGInlineText {#text} at (107,106) size 12x230
-              chunk 1 (vertical) text run 2 at (33.14,24.21) startOffset 0 endOffset 10 height 230.00: "after path"
+              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)
           RenderSVGInlineText {#text} at (0,-10) size 98x13
             chunk 1 text run 1 at (0.00,100.00) startOffset 0 endOffset 26 width 98.00: "text before/after textPath"
index 7c3880213677aab734aeb6202a9843b5adafdcec..d2cf1fe6269f2af0762a107d8c54c0f0b7beed17 100644 (file)
@@ -1 +1 @@
-f2aa5926e0ed54cb112b83071a3fb142
\ No newline at end of file
+8e6a70af163a7808d980a8bca7a6d172
\ No newline at end of file
index c3fa921675a754563b4cb1231530c00b0572bdf8..f11844354a9efc806c0920d82beef50cbd5bb47c 100644 (file)
Binary files a/LayoutTests/svg/text/text-align-01-b-expected.png and b/LayoutTests/svg/text/text-align-01-b-expected.png differ
index 38bff817048d040bf7fdc0ee5616e26ceb0f0a7a..228c220c637754f28637f40db49e949f51cac98f 100644 (file)
@@ -1 +1 @@
-48d6172c306fa90bc2c36c943341cd3c
\ No newline at end of file
+f7f4170c359af0eec99a4faa9802b3eb
\ No newline at end of file
index e5e7b528a5c0c4d4160d8e05b12842a523e77ffa..293c3d9e8efa1426b3db888f0fba7e0aae990b91 100644 (file)
Binary files a/LayoutTests/svg/text/text-align-02-b-expected.png and b/LayoutTests/svg/text/text-align-02-b-expected.png differ
index 3b2c56433aa61cfa69f39e830e0c4f6d8e646331..c2aab4a39b8d5c7e05aea5730cce65bf2fe712ab 100644 (file)
@@ -1 +1 @@
-22635d02eddb02adb4d18a1870561e79
\ No newline at end of file
+b0732f962c16beec2a37e85365d66f3c
\ No newline at end of file
index 6c83660c4d4fd43e3d92f1aca9dc5eeae72fbe8f..170f0a631907385a8150bee9f6085b58b1ca7c08 100644 (file)
Binary files a/LayoutTests/svg/text/text-align-03-b-expected.png and b/LayoutTests/svg/text/text-align-03-b-expected.png differ
index d9fa9a11d50e8433df41fe3c855ab78eb06966b4..b2db32c74ba6e091e83ee72bb63c18e92043f2de 100644 (file)
@@ -1 +1 @@
-ace28c381e95e966adfe3b1f5f98eb53
\ No newline at end of file
+424445b808cc8200dd55418a0e7e5512
\ No newline at end of file
index d09530043313bcd099fd3f1be7a0caeee59f59c1..4aa8059f76e97eb3afa6cac019dd6b76a4d568b9 100644 (file)
Binary files a/LayoutTests/svg/text/text-align-04-b-expected.png and b/LayoutTests/svg/text/text-align-04-b-expected.png differ
index 88e4680c57eed33482a95d703b363fc310245bd3..55e00c2fb9dd489806f9a9159c5b210ab57cfeb9 100644 (file)
@@ -33,9 +33,10 @@ layer at (0,0) size 800x600
             RenderSVGInlineText {#text} at (0,-27) size 158x33
               chunk 1 (end anchor) text run 1 at (62.00,220.00) startOffset 0 endOffset 13 width 158.00: "end text tref"
           RenderSVGInlineText {#text} at (0,0) size 0x0
-        RenderSVGText {text} at (-9,0) size 229x293 contains 0 chunk(s) [color=#0000FF]
+        RenderSVGText {text} at (-9,0) size 229x293 contains 1 chunk(s) [color=#0000FF]
           RenderSVGTextPath {textPath} at (0,0) size 229x293
             RenderSVGInlineText {#text} at (0,-27) size 229x293
+              chunk 1 (end anchor) text run 1 at (-9.00,0.00) startOffset 0 endOffset 29 width 393.00: "Text-anchor: end text on path"
           RenderSVGInlineText {#text} at (0,0) size 0x0
     RenderSVGText {text} at (10,340) size 264x46 contains 1 chunk(s)
       RenderSVGInlineText {#text} at (0,-36) size 264x46
index eb7e2ce549f61a8a201ba3ac38fa508e0c799afa..b37b4cb5817b4a3b25b29282b9bd88ac7aeaf97f 100644 (file)
@@ -1 +1 @@
-56fe9073442ccf4de3670b663c02b5e8
\ No newline at end of file
+2612ace66227159723eecb180408084d
\ No newline at end of file
index 99c33b9b04b5e083fc8a7088de6102edd81a75dd..53c12d5f9abdc54d750ca55ab08766ea109c16d4 100644 (file)
Binary files a/LayoutTests/svg/text/text-align-05-b-expected.png and b/LayoutTests/svg/text/text-align-05-b-expected.png differ
index 106628b68b36df1c4474b35858aa4d7f2776fc79..0ed8d3813017914544446bfb246f335a4d16f18a 100644 (file)
@@ -1 +1 @@
-c7b1b273333e0c4cd36de5b8b15c6b55
\ No newline at end of file
+8ca024cde0e7c366d222db40536e2623
\ No newline at end of file
index 0d3c4a61ade00899078ad2379101672a0957ead6..541706ff47adf0d443b9149648b5137153d7fd40 100644 (file)
Binary files a/LayoutTests/svg/text/text-align-06-b-expected.png and b/LayoutTests/svg/text/text-align-06-b-expected.png differ
index 17ba0f2aba246000bb345ab040e15ab434a16fd5..cc161d4fc365a69f70518b4f09c78ad0e952c75a 100644 (file)
@@ -1 +1 @@
-6e47249c1601a74c4aa4746baf61a996
\ No newline at end of file
+9f512e9fb4206e05dd950bb584547c49
\ No newline at end of file
index eac0395c0d20fbd1c086c8bd60ca540b67ae2328..256f6afa650862ebee9a77c116f2a800d50ed565 100644 (file)
Binary files a/LayoutTests/svg/text/text-altglyph-01-b-expected.png and b/LayoutTests/svg/text/text-altglyph-01-b-expected.png differ
index b6bf6ebcaf2eadc6941b1f3ada7ddd902e6246ae..c91826f8a55a42b2aefd4ea18b301220a9b89fba 100644 (file)
@@ -1 +1 @@
-eb2f0f20402786e382d2a996bfa88eb8
\ No newline at end of file
+306b3a9db7a0357a624a04261c9c886d
\ No newline at end of file
index c72fdc269e9179d7bfa6cb396232ff00ae49da6b..f7809540223f54cd0f81391bfb0e6bd2a8bdc251 100644 (file)
Binary files a/LayoutTests/svg/text/text-deco-01-b-expected.png and b/LayoutTests/svg/text/text-deco-01-b-expected.png differ
index 4c6f43ca9dde9c1d44e895ece1e6eaedc8d25e4a..170fe284318b8c2e89bb8b91d85a18a467b2e8cf 100644 (file)
@@ -1 +1 @@
-c80a5e85745b732e468da13f0db9d963
\ No newline at end of file
+42e6e41c7617f96abc9ce36b6f1de2d2
\ No newline at end of file
index de94a33db872cc3bcd81b7ce7b24591e32150fd2..485529e837dce9f5bbd04294b196384182980adf 100644 (file)
Binary files a/LayoutTests/svg/text/text-fonts-01-t-expected.png and b/LayoutTests/svg/text/text-fonts-01-t-expected.png differ
index 49a6ef08e63c02d46de1b7704658fc41581cee69..54a6a55a1605ccc8bfda2db80773b78a9143e2ba 100644 (file)
@@ -1 +1 @@
-81d9ef9cebbbcd20545d94f0f37f8e36
\ No newline at end of file
+006b2abf4e7801c76530efee8d9d00bb
\ No newline at end of file
index fd911a25a75a78fe79e8edf8cfbe99ea7e6bef4c..481e67c9c8dbc79545a347240462d2dbf579a9cd 100644 (file)
Binary files a/LayoutTests/svg/text/text-fonts-02-t-expected.png and b/LayoutTests/svg/text/text-fonts-02-t-expected.png differ
index 9792328b4e5a8a93418c7910ca7e2995da4c2334..479becd46dc481a51a5c757cc5d4552d061572c3 100644 (file)
@@ -1 +1 @@
-0d022ea68455f6579e9a15c7f7f20183
\ No newline at end of file
+e201ca3fd1b3cfb372d61a5a26a80bd2
\ No newline at end of file
index 426703d39dd110c98072342b9410386b97936d1a..df46391e0ab7dcc76195f0ea47817ae2abe912e9 100644 (file)
Binary files a/LayoutTests/svg/text/text-intro-05-t-expected.png and b/LayoutTests/svg/text/text-intro-05-t-expected.png differ
index 7fa4784bcc496f20c6daebc93a9981e28c9bdfd6..f78bb70260f982264530b47b7aee3eb1bef784ba 100644 (file)
@@ -1 +1 @@
-0032aa46aee79839662a1dbc49534952
\ No newline at end of file
+a1b292729346bd1ff093e4cf701a4605
\ No newline at end of file
index 74f2f733067165bde4e32042fdedfab7c4b2622e..edd430ab76935cfbf419e6c7815a4311e5ca1833 100644 (file)
Binary files a/LayoutTests/svg/text/text-path-01-b-expected.png and b/LayoutTests/svg/text/text-path-01-b-expected.png differ
index 1cc94435c01229a4cb5cd7350cb931aad243fc71..51709b508c3246e127a3a9dafa6627c9fd44e0b5 100644 (file)
@@ -11,21 +11,25 @@ layer at (0,0) size 800x600
         RenderSVGContainer {use} at (330.88,36.70) size 366.29x140.92
           RenderSVGContainer {g} at (330.88,36.70) size 366.29x140.92
             RenderPath {path} at (330.88,36.70) size 366.29x140.92 [stroke={[type=SOLID] [color=#0000FF]}] [data="M199.00,89.30C206.60,66.60,235.80,13.20,270.00,30.30C286.60,38.60,298.90,59.40,310.00,73.30C321.70,87.90,338.60,99.00,356.00,103.30C387.30,111.10,396.60,90.40,418.00,74.30"]
-        RenderSVGText {text} at (192,27) size 171x116 contains 0 chunk(s)
+        RenderSVGText {text} at (192,27) size 171x116 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 171x116
             RenderSVGInlineText {#text} at (0,-32) size 171x116
+              chunk 1 text run 1 at (192.04,27.04) startOffset 0 endOffset 14 width 226.00: "Text on a path"
           RenderSVGInlineText {#text} at (0,0) size 0x0
       RenderSVGContainer {g} at (27.50,83.33) size 458.33x268.33
         RenderSVGContainer {use} at (55.04,130.86) size 366.29x140.91
           RenderSVGContainer {g} at (55.04,130.86) size 366.29x140.91
             RenderPath {path} at (55.04,130.86) size 366.29x140.91 [stroke={[type=SOLID] [color=#0000FF]}] [data="M33.50,145.80C41.00,123.00,70.30,69.70,104.50,86.80C121.00,95.00,133.00,116.00,144.50,129.80C156.20,144.40,173.00,155.50,190.50,159.80C221.80,167.60,231.00,146.90,252.50,130.80"]
-        RenderSVGText {text} at (26,83) size 172x117 contains 0 chunk(s)
+        RenderSVGText {text} at (26,83) size 172x117 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 172x117
             RenderSVGTSpan {tspan} at (0,0) size 29x58 [color=#FF0000]
               RenderSVGInlineText {#text} at (0,-9) size 28x58
+                chunk 1 text run 1 at (26.50,106.31) startOffset 0 endOffset 2 width 39.00: "Te"
             RenderSVGTSpan {tspan} at (0,0) size 18x41
               RenderSVGInlineText {#text} at (21,-11) size 18x41
+                chunk 1 text run 2 at (47.67,104.04) startOffset 0 endOffset 1 width 18.00: "x"
             RenderSVGInlineText {#text} at (35,-32) size 136x116
+              chunk 1 text run 3 at (61.18,83.54) startOffset 0 endOffset 11 width 169.00: "t on a path"
           RenderSVGInlineText {#text} at (0,0) size 0x0
         RenderPath {rect} at (27.50,280.83) size 458.33x70 [stroke={[type=SOLID] [color=#000000]}] [data="M17.00,169.00L291.00,169.00L291.00,210.00L17.00,210.00"]
         RenderSVGText {text} at (19,185) size 223x22 contains 1 chunk(s)
@@ -38,9 +42,10 @@ layer at (0,0) size 800x600
         RenderSVGContainer {use} at (188.33,385) size 500x6.67
           RenderSVGContainer {g} at (188.33,385) size 500x6.67
             RenderPath {path} at (188.33,385) size 500x6.67 [stroke={[type=SOLID] [color=#0000FF] [stroke width=4.00]}] [data="M113.00,233.00L413.00,233.00"]
-        RenderSVGText {text} at (212,233) size 181x27 contains 0 chunk(s)
+        RenderSVGText {text} at (212,233) size 181x27 contains 1 chunk(s)
           RenderSVGTextPath {textPath} at (0,0) size 181x27
             RenderSVGInlineText {#text} at (0,-22) size 181x27
+              chunk 1 text run 1 at (212.00,233.00) startOffset 0 endOffset 16 width 181.00: "The Text on path"
           RenderSVGInlineText {#text} at (0,0) size 0x0
         RenderPath {rect} at (195.83,415.83) size 435x70 [stroke={[type=SOLID] [color=#000000]}] [data="M118.00,250.00L378.00,250.00L378.00,291.00L118.00,291.00"]
         RenderSVGText {text} at (120,267) size 239x22 contains 1 chunk(s)
index 19b2b24b096486b42fae72230bddb3472ebab20b..f5fa0ac3f9246088c7e5ab75fc700cf025302e1e 100644 (file)
@@ -1 +1 @@
-cfc2f6242af0d7310907e0b037651bc4
\ No newline at end of file
+6daff68c0c5f3fd0c65078ab7453a771
\ No newline at end of file
index 087729606ff47ab56092b406a79705b83eb245f6..c47b2dce3f1fa9c060b38264dbdf6cfd13ad877e 100644 (file)
Binary files a/LayoutTests/svg/text/text-spacing-01-b-expected.png and b/LayoutTests/svg/text/text-spacing-01-b-expected.png differ
index 84f4a86f27d8137e39803dc4df526198b30f2172..39ae0fc4d49f1382cb5e82e896ad73ca9a66961f 100644 (file)
@@ -1 +1 @@
-3a5423c6749fd2192063255cdce84fab
\ No newline at end of file
+0bb60b52fc5e3563650aabc77576d0ab
\ No newline at end of file
index 54a1da658a673e0983fd8bc448172b53c8700e99..80dabae996bfa0912d48b8b33eeb55442a34e407 100644 (file)
Binary files a/LayoutTests/svg/text/text-text-01-b-expected.png and b/LayoutTests/svg/text/text-text-01-b-expected.png differ
index e532ff5f1318fa2fbe363f23c2ba5fb5ef374910..249a61645d9c500fdc510c42cfcf21c7d18197b0 100644 (file)
@@ -1 +1 @@
-b500f16a0c456da1df43a87e84c3a975
\ No newline at end of file
+17c241ca70bc498226f93539a3798a59
\ No newline at end of file
index 6aa41ac09295ce53c5dbb8cbcfbd71541aa98642..3cd11082dd1cc990bd179d05822a321ecb993e84 100644 (file)
Binary files a/LayoutTests/svg/text/text-text-03-b-expected.png and b/LayoutTests/svg/text/text-text-03-b-expected.png differ
index 22519a2d18e24dd7d2fc00f82d0156f917885b41..e268a1deddc2c5862a8b8cf45b290cd53b13e002 100644 (file)
@@ -1 +1 @@
-a95321586d52c3bd0bd89a734214a303
\ No newline at end of file
+de102875f3fd077b90f46f452763bffb
\ No newline at end of file
index 0ea6950ce61d2e78b022f1ae3ef8c9618f317fc2..140a864bbb8bf2f9fdb0864ad762c6f47b0674ea 100644 (file)
Binary files a/LayoutTests/svg/text/text-text-04-t-expected.png and b/LayoutTests/svg/text/text-text-04-t-expected.png differ
index 643b843783c42045deb0e180ef40a23713b744eb..9013cd082cd491882bbd41de81cff5002b7cf5db 100644 (file)
@@ -1 +1 @@
-a2ebbe6fff7a96003af36921ba78498c
\ No newline at end of file
+ca079fd04e880db097a58362cf079194
\ No newline at end of file
index 8dde931fc686d5f121db949b28c021d8f744accb..7a98bf5d6f406d448a1e185cc6c0baed1a807f25 100644 (file)
Binary files a/LayoutTests/svg/text/text-text-05-t-expected.png and b/LayoutTests/svg/text/text-text-05-t-expected.png differ
index faad28db41c10007c68b76dceee593a3253dd0d2..920e4a89a657c4b12569156ef233a39786a63562 100644 (file)
@@ -1 +1 @@
-499bb4186eb7c3430df9f178ebc63529
\ No newline at end of file
+5cbf94c96d80d1e3ee1b5d69893df4eb
\ No newline at end of file
index 19c5b6cf8dba6fd6ec31d7290cf54c8b095560ac..74349ff770064bf18a350e51d99eb59efdd221ea 100644 (file)
Binary files a/LayoutTests/svg/text/text-text-06-t-expected.png and b/LayoutTests/svg/text/text-text-06-t-expected.png differ
index 246e09f5d3650606f11f247a14d6a6978bffc436..478a3be90a733455851f0d3a630f3e8b1f779929 100644 (file)
@@ -1 +1 @@
-19914efd47b3875144595ecd71ebe9dc
\ No newline at end of file
+e5759e5ce1f896dc382e930688c3bf58
\ No newline at end of file
index b92f7c6d00c93b178bb9d7abfd1f31f97031fe96..214b886e9cb579e02f389850d20f3550222b9079 100644 (file)
Binary files a/LayoutTests/svg/text/text-text-07-t-expected.png and b/LayoutTests/svg/text/text-text-07-t-expected.png differ
index 1fa3b8455c4131b141204bb57518679a50d05b5a..0a0f1f57dcae53a19fb19f318ef06d0e8113e126 100644 (file)
@@ -1 +1 @@
-8b9db6d7a439d65c2bbe412f2491a25e
\ No newline at end of file
+4eb6dcfe4ea554d8d768d14b14e141c3
\ No newline at end of file
index 16b545e57f322555bf083dd24984477077a54344..3b75a4420fd5a458e37e50ba5bd1cc57bc45cb8d 100644 (file)
Binary files a/LayoutTests/svg/text/text-text-08-b-expected.png and b/LayoutTests/svg/text/text-text-08-b-expected.png differ
index 5b4bb125e81842266b798b63954ffe6c2a4d11e7..9e9d4e54153645914b27d4f2aceb46b8c59235f1 100644 (file)
@@ -1 +1 @@
-874c7d5a9f63d4d302f3f599a8c78f81
\ No newline at end of file
+87bdfc86ae9a32c94ffdb324ae891e87
\ No newline at end of file
index a3bddc98f1864d96e0e0f96e66590bdf7b96b621..6d675893ae528b32dc711d087e6eabb0a0d3b761 100644 (file)
Binary files a/LayoutTests/svg/text/text-tref-01-b-expected.png and b/LayoutTests/svg/text/text-tref-01-b-expected.png differ
index dabfc085925994681a19b24f3dbc6fcd859d4679..de37ddbae2721a142ad510fce4303f3b03f992ea 100644 (file)
@@ -1 +1 @@
-9dd40058b514beca91ea3024d30dc15e
\ No newline at end of file
+c5ff33314697f6e16997cb78422d1a63
\ No newline at end of file
index 22c5fc3b227c0da4872dc7e33d8b0162843dd422..db2a217111a6150367696affaa2c096ac9a835b9 100644 (file)
Binary files a/LayoutTests/svg/text/text-tselect-01-b-expected.png and b/LayoutTests/svg/text/text-tselect-01-b-expected.png differ
index 517ddd4004affab4d9be19a099bb728c2240ac2a..5613f1fbf9c4b6e005d378f4fcbb89fdbb643973 100644 (file)
@@ -1 +1 @@
-e8e8c264109e5a6324e270e28960e13b
\ No newline at end of file
+aef793787a3d51b18b46be9ff3bd88f4
\ No newline at end of file
index f18a5ee730376996b8bbce382f68a8f7471ab328..ea9b6b68fc198b9fe43f38141f1568b7715e51e8 100644 (file)
Binary files a/LayoutTests/svg/text/text-tselect-02-f-expected.png and b/LayoutTests/svg/text/text-tselect-02-f-expected.png differ
index bf0def707fa290c63e005e00b0cb4f4001056ed1..33f5331203477b99b5e7f9ef8129c546d457b023 100644 (file)
@@ -1 +1 @@
-f389a70ba2c698da0b4babb6935a34bc
\ No newline at end of file
+56d459c01fa89880151a05ed45db409f
\ No newline at end of file
index 0827afe8ff07152639e4e76fd24d4cb623181298..1a549b5c1fadc7ca4ba82afb0e57fdefba36d517 100644 (file)
Binary files a/LayoutTests/svg/text/text-tspan-01-b-expected.png and b/LayoutTests/svg/text/text-tspan-01-b-expected.png differ
index eee9335cc2dd584c0cd0d984420dfe4f57597d90..3798605a58c198f779b3ab1a68c01957f528cf5d 100644 (file)
@@ -1 +1 @@
-6d6993a00459eca31a70b7a989625957
\ No newline at end of file
+69b14183e02268560e558e744c66560b
\ No newline at end of file
index 269ceb46d8750c2f9f6acdc1cac7645abf0675c8..9bae4cc8bb87bbec7717d0f744d82b3febfb5ed7 100644 (file)
Binary files a/LayoutTests/svg/text/text-ws-01-t-expected.png and b/LayoutTests/svg/text/text-ws-01-t-expected.png differ
index b43671b26cf56a07f428f1cb481837593985dd5d..8275795ba45deb65d72479d9b5b4b863506b6d66 100644 (file)
@@ -1 +1 @@
-603c75fd04ded0b2d63d61fc9b4ba772
\ No newline at end of file
+68067dec249294ed6362c92adfe81684
\ No newline at end of file
index 543959c02e841080d50cea04b773560927a271eb..d1a477e37a4e79318566b6398aaa41613e36ac23 100644 (file)
Binary files a/LayoutTests/svg/text/text-ws-02-t-expected.png and b/LayoutTests/svg/text/text-ws-02-t-expected.png differ
index 1693a29d32bfeab416b3d7841646feca48349f1d..45f424f109e84307762989607b642cfca4ad4110 100644 (file)
@@ -1,3 +1,32 @@
+2007-07-30  Nikolas Zimmermann  <zimmermann@kde.org>
+
+        Reviewed by Oliver & Rob.
+
+        Enable SVG textPath selection. Actually build chunks for them instead of
+        ignoring them - was easier than I thought. Respect per-character transformation
+        when calculating the chunk boundaries for the selection rectangles. Also fixes
+        selection rect drawing of rotated characters.
+
+        Next thing todo is to unify the glyph size calculations, as per-glyph transformations
+        are not respected when calculating flow box sizes in SVGRootInlineBox.
+        * rendering/RenderObject.h:
+        (WebCore::RenderObject::isSVGHiddenContainer):
+        * rendering/RenderSVGHiddenContainer.h:
+        (WebCore::RenderSVGHiddenContainer::isSVGHiddenContainer):
+        * rendering/RenderSVGInlineText.cpp:
+        (WebCore::isChildOfHiddenContainer):
+        (WebCore::RenderSVGInlineText::selectionRect):
+        (WebCore::RenderSVGInlineText::computeAbsoluteRectForRange):
+        * rendering/SVGCharacterLayoutInfo.h:
+        (WebCore::SVGTextChunk::SVGTextChunk):
+        (WebCore::SVGTextChunkLayoutInfo::SVGTextChunkLayoutInfo):
+        * rendering/SVGInlineTextBox.cpp:
+        (WebCore::SVGInlineTextBox::selectionRect):
+        * rendering/SVGRootInlineBox.cpp:
+        (WebCore::applyTextAnchorToTextChunk):
+        (WebCore::SVGRootInlineBox::buildTextChunks):
+
 2007-07-25  Rob Buis  <buis@kde.org>
 
         Reviewed by Nikolas.
index 4d40facd85d4e6492fc8a987c01c37f9428ee6f8..eeac52eac5ced3396aa72f7f1935b1a63983d6a3 100644 (file)
@@ -288,6 +288,7 @@ public:
 #if ENABLE(SVG)
     virtual bool isSVGRoot() const { return false; }
     virtual bool isSVGContainer() const { return false; }
+    virtual bool isSVGHiddenContainer() const { return false; }
     virtual bool isRenderPath() const { return false; }
     virtual bool isSVGText() const { return false; }
 
index d7664c0b9787dd8781341c34388a6d3b58df76f3..5416f311fd184b05aecdff4a17932bb4d0e80a45 100644 (file)
@@ -39,6 +39,8 @@ namespace WebCore {
         virtual ~RenderSVGHiddenContainer();
         
         virtual bool isSVGContainer() const { return true; }
+        virtual bool isSVGHiddenContainer() const { return true; }
+
         virtual const char* renderName() const { return "RenderSVGHiddenContainer"; }
         
         virtual bool requiresLayer();
index f98a024dfe61033eebdca8b6c99565ba26d6406d..addda1174d3642503eec8e57a9753fa5eac760b4 100644 (file)
 
 namespace WebCore {
 
+static inline bool isChildOfHiddenContainer(RenderObject* start)
+{
+    while (start) {
+        if (start->isSVGHiddenContainer())
+            return true;
+
+        start = start->parent();
+    }
+
+    return false;
+}
+
 RenderSVGInlineText::RenderSVGInlineText(Node* n, StringImpl* str) 
     : RenderText(n, str)
 {
@@ -54,6 +66,10 @@ IntRect RenderSVGInlineText::selectionRect(bool)
     if (selectionState() == SelectionNone)
         return rect;
 
+    // Early exit if we're ie. a <text> within a <defs> section.
+    if (isChildOfHiddenContainer(this))
+        return rect;
+
     // Now calculate startPos and endPos for painting selection.
     // We include a selection while endPos > 0
     int startPos, endPos;
@@ -80,7 +96,7 @@ IntRect RenderSVGInlineText::computeAbsoluteRectForRange(int startPos, int endPo
     IntRect rect;
 
     RenderBlock* cb = containingBlock();
-    if (!cb)
+    if (!cb || !cb->container())
         return rect;
 
     RenderSVGRoot* root = findSVGRootObject(parent());
@@ -92,16 +108,14 @@ IntRect RenderSVGInlineText::computeAbsoluteRectForRange(int startPos, int endPo
 
     // Mimic RenderBox::computeAbsoluteRepaintRect() functionality. But only the subset needed for SVG and respecting SVG transformations.
     int x, y;
-    cb->absolutePosition(x, y);
+    cb->container()->absolutePosition(x, y);
 
     // Remove HTML parent translation offsets here! These need to be retrieved from the RenderSVGRoot object.
+    // But do take the containingBlocks's container position into account, ie. SVG text in scrollable <div>.
     AffineTransform htmlParentCtm = root->RenderContainer::absoluteTransform();
-    FloatRect fixedRect = FloatRect(x - htmlParentCtm.e(), y - htmlParentCtm.f(), rect.width(), rect.height());
-    rect = enclosingIntRect(absoluteTransform().mapRect(fixedRect));
 
-    // Work around rounding issues which may occour above!
-    rect.inflate(1);
-    return rect;
+    FloatRect fixedRect(rect.x() + x - xPos() - htmlParentCtm.e(), rect.y() + y - yPos() - htmlParentCtm.f(), rect.width(), rect.height());
+    return enclosingIntRect(absoluteTransform().mapRect(fixedRect));
 }
 
 InlineTextBox* RenderSVGInlineText::createInlineTextBox()
index 4064d20e5683e154f93e3557809af719e74dad38..d7556826073dc330f2c5f793d4d7561d945da550 100644 (file)
@@ -196,12 +196,14 @@ struct SVGTextChunk {
     SVGTextChunk()
         : anchor(TA_START)
         , isVerticalText(false)
+        , isTextPath(false)
         , start(0)
         , end(0)
     { }
 
     ETextAnchor anchor;
     bool isVerticalText : 1;
+    bool isTextPath : 1;
 
     Vector<SVGChar>::iterator start;
     Vector<SVGChar>::iterator end;
@@ -212,12 +214,12 @@ struct SVGTextChunk {
 struct SVGTextChunkLayoutInfo {
     SVGTextChunkLayoutInfo()
         : assignChunkProperties(true)
-        , advanceOnly(false)
+        , handlingTextPath(false)
     {
     }
 
     bool assignChunkProperties : 1;
-    bool advanceOnly : 1;
+    bool handlingTextPath : 1;
 
     SVGTextChunk chunk;
     Vector<SVGChar>::iterator it;
index ac38c25bd3896220596770a09b92915ccd4e474f..2556c3bd6a0f77131a504cec08c2681e9bf5ee7a 100644 (file)
@@ -222,9 +222,8 @@ IntRect SVGInlineTextBox::selectionRect(int tx, int ty, int startPos, int endPos
 
     const Font& font = textObject()->style()->font();
 
-    float lowX = FLT_MAX, lowY = FLT_MAX;
-    float highX = FLT_MIN, highY = FLT_MIN;
-
+    FloatRect selectionRect;
+    
     Vector<SVGTextChunk>::iterator it = chunks.begin();
     Vector<SVGTextChunk>::iterator end = chunks.end();
 
@@ -248,36 +247,33 @@ IntRect SVGInlineTextBox::selectionRect(int tx, int ty, int startPos, int endPos
                 continue;
             }
 
-            // Walk chunk finding closest character
+            // Figure out chunk size
             Vector<SVGChar>::iterator itCharBegin = curChunk.start + chunkOffset - firstRangeInFirstChunkStartOffset + range.startOffset;
             Vector<SVGChar>::iterator itCharEnd = curChunk.start + chunkOffset - firstRangeInFirstChunkStartOffset + range.endOffset;
             ASSERT(itCharEnd <= curChunk.end);
 
             for (Vector<SVGChar>::iterator itChar = itCharBegin; itChar != itCharEnd; ++itChar) {
                 unsigned int newOffset = (itChar - itCharBegin) + firstRangeInFirstChunkStartOffset;
-
                 float glyphWidth = font.floatWidth(TextRun(textObject()->text()->characters() + newOffset, 1), TextStyle(0, 0));
-                float glyphHeight = font.ascent() + font.descent();
-
-                float x = (*itChar).x;
-                float y = (*itChar).y;
+                float x1 = (*itChar).x;
+                float x2 = (*itChar).x + glyphWidth;
 
-                if (x < lowX)
-                    lowX = x;
+                float y1 = (*itChar).y - font.ascent();
+                float y2 = (*itChar).y + font.descent();
 
-                if (x + glyphWidth > highX)
-                    highX = x + glyphWidth;
+                FloatRect glyphRect(x1, y1, x2 - x1, y2 - y1);
 
-                if (y < lowY)
-                    lowY = y;
+                // Take per-character transformations into account
+                if (!(*itChar).transform.isIdentity())
+                    glyphRect = (*itChar).transform.mapRect(glyphRect);
 
-                if (y + glyphHeight > highY)
-                    highY = y + glyphHeight;
+                selectionRect.unite(glyphRect);
             }
         }
     }
 
-    return enclosingIntRect(FloatRect(tx + lowX, ty + lowY, highX - lowX, highY - lowY));
+    return enclosingIntRect(selectionRect);
 }
 
 } // namespace WebCore
index fb553d055f3e90d79b79125c45d972890fd0ffec..d157f694c1ff009b7212a18f5d9729424538bee5 100644 (file)
@@ -278,7 +278,8 @@ static void applyTextAnchorToTextChunk(SVGTextChunk& chunk)
 {
 #if DEBUG_CHUNK_BUILDING > 0
     {
-        fprintf(stderr, "Handle TEXT CHUNK! anchor=%i, isVerticalText=%i, start=%p, end=%p -> dist: %i\n", (int) chunk.anchor, (int) chunk.isVerticalText, chunk.start, chunk.end, (unsigned int) (chunk.end-chunk.start));
+        fprintf(stderr, "Handle TEXT CHUNK! anchor=%i, isVerticalText=%i, isTextPath=%i start=%p, end=%p -> dist: %i\n",
+                (int) chunk.anchor, (int) chunk.isVerticalText, (int) chunk.isTextPath, chunk.start, chunk.end, (unsigned int) (chunk.end-chunk.start));
 
         Vector<SVGInlineBoxCharacterRange>::iterator boxIt = chunk.boxes.begin();
         Vector<SVGInlineBoxCharacterRange>::iterator boxEnd = chunk.boxes.end();
@@ -291,7 +292,7 @@ static void applyTextAnchorToTextChunk(SVGTextChunk& chunk)
     }
 #endif
 
-    if (chunk.anchor == TA_START)
+    if (chunk.anchor == TA_START || chunk.isTextPath)
         return;
 
     float shift = 0.0;
@@ -772,14 +773,9 @@ void SVGRootInlineBox::buildTextChunks(InlineFlowBox* start, SVGTextChunkLayoutI
                 continue;
 
 #if DEBUG_CHUNK_BUILDING > 1
-            fprintf(stderr, " -> Handle inline text box (%p) with %i characters, advanceOnly=%i\n", textBox, length, (int) info.advanceOnly);
+            fprintf(stderr, " -> Handle inline text box (%p) with %i characters, handlingTextPath=%i\n", textBox, length, (int) info.handlingTextPath);
 #endif
 
-            if (info.advanceOnly) {
-                info.it += length;
-                continue;
-            }
-
             RenderText* text = textBox->textObject();
             ASSERT(text);
 
@@ -810,6 +806,7 @@ void SVGRootInlineBox::buildTextChunks(InlineFlowBox* start, SVGTextChunkLayoutI
                     info.assignChunkProperties = false;
 
                     info.chunk.isVerticalText = isVerticalWritingMode(text->style()->svgStyle());
+                    info.chunk.isTextPath = info.handlingTextPath;
                     info.chunk.anchor = text->style()->svgStyle()->textAnchor();
 
 #if DEBUG_CHUNK_BUILDING > 1
@@ -841,6 +838,7 @@ void SVGRootInlineBox::buildTextChunks(InlineFlowBox* start, SVGTextChunkLayoutI
 
                         info.assignChunkProperties = false;
                         info.chunk.isVerticalText = isVerticalWritingMode(text->style()->svgStyle());
+                        info.chunk.isTextPath = info.handlingTextPath;
                         info.chunk.anchor = text->style()->svgStyle()->textAnchor();
 
                         range.box = curr;
@@ -906,7 +904,6 @@ void SVGRootInlineBox::buildTextChunks(InlineFlowBox* start, SVGTextChunkLayoutI
             ASSERT(curr->isInlineFlowBox());
             InlineFlowBox* flowBox = static_cast<InlineFlowBox*>(curr);
 
-            // <textPath> doesn't need this chunk logic. FIXME: It's needed for text selection! (not for text-anchor though)
             bool isTextPath = flowBox->object()->element()->hasTagName(SVGNames::textPathTag);
 
 #if DEBUG_CHUNK_BUILDING > 1
@@ -914,12 +911,12 @@ void SVGRootInlineBox::buildTextChunks(InlineFlowBox* start, SVGTextChunkLayoutI
 #endif
 
             if (isTextPath)
-                info.advanceOnly = true;
+                info.handlingTextPath = true;
 
             buildTextChunks(flowBox, info);
 
             if (isTextPath)
-                info.advanceOnly = false;
+                info.handlingTextPath = false;
         }
     }