Changeset 27680 in webkit


Ignore:
Timestamp:
Nov 10, 2007 6:12:09 PM (16 years ago)
Author:
Nikolas Zimmermann
Message:

Reviewed by Eric.

Fixes: http://bugs.webkit.org/show_bug.cgi?id=15937 (Add glyph-orientation-horizontal/vertical support)
Fixes: http://bugs.webkit.org/show_bug.cgi?id=13971 (text-anchor support on vertical text seems slightly off)

Add glyph-orientation-* support for text & textPath. (90/180/270 and 'auto')
Also fix all vertical text handling - for text & textPath! (especially latin1 characters auto orientation in vertical writing modes)

Location:
trunk
Files:
24 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r27679 r27680  
     12007-11-10  Nikolas Zimmermann  <zimmermann@kde.org>
     2
     3        Reviewed by Eric.
     4
     5        Update SVG layout test results after landing the vertical text support fixes.
     6
     7        * platform/mac/svg/W3C-SVG-1.1/text-align-05-b-expected.checksum:
     8        * platform/mac/svg/W3C-SVG-1.1/text-align-05-b-expected.png:
     9        * platform/mac/svg/W3C-SVG-1.1/text-align-05-b-expected.txt:
     10        * platform/mac/svg/W3C-SVG-1.1/text-align-06-b-expected.checksum:
     11        * platform/mac/svg/W3C-SVG-1.1/text-align-06-b-expected.png:
     12        * platform/mac/svg/W3C-SVG-1.1/text-align-06-b-expected.txt:
     13        * svg/batik/text/textGlyphOrientationHorizontal-expected.txt:
     14        * svg/batik/text/verticalText-expected.checksum:
     15        * svg/batik/text/verticalText-expected.png:
     16        * svg/batik/text/verticalText-expected.txt:
     17        * svg/batik/text/verticalTextOnPath-expected.checksum:
     18        * svg/batik/text/verticalTextOnPath-expected.png:
     19        * svg/batik/text/verticalTextOnPath-expected.txt:
     20        * svg/text/text-align-05-b-expected.txt:
     21        * svg/text/text-align-06-b-expected.txt:
     22        * svg/text/text-path-01-b-expected.checksum:
     23        * svg/text/text-path-01-b-expected.png:
     24
    1252007-11-10  Nikolas Zimmermann  <zimmermann@kde.org>
    226
  • trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/text-align-05-b-expected.checksum

    r26781 r27680  
    1 791e50419ca3392f5988e93347de08e4
     143bcac92c80d7b9853e87672ef21933b
  • trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/text-align-05-b-expected.txt

    r26599 r27680  
    33layer at (0,0) size 480x360
    44  RenderSVGRoot {svg} at (0.50,0.50) size 479x359
    5     RenderSVGContainer {g} at (5,4) size 465x317
     5    RenderSVGContainer {g} at (5,4) size 465x311
    66      RenderSVGText {text} at (5,40) size 465x44 contains 1 chunk(s)
    77        RenderSVGInlineText {#text} at (0,-36) size 465x44
    88          chunk 1 text run 1 at (5.00,40.00) startOffset 0 endOffset 29 width 465.00: "Test 'text-anchor' (vertical)"
    9       RenderSVGContainer {g} at (152,57) size 117x264
    10         RenderSVGContainer {g} at (152,57) size 117x264 [transform={m=((1.00,0.00)(0.00,1.00)) t=(160.00,150.00)}]
    11           RenderSVGContainer {g} at (152,147) size 17x174
     9      RenderSVGContainer {g} at (152,51) size 117x264
     10        RenderSVGContainer {g} at (152,51) size 117x264 [transform={m=((1.00,0.00)(0.00,1.00)) t=(160.00,150.00)}]
     11          RenderSVGContainer {g} at (152,147) size 17x168
    1212            RenderPath {circle} at (157,147) size 6x6 [fill={[type=SOLID] [color=#000000]}] [data="M3.00,0.00L2.99,0.19L2.98,0.38L2.95,0.56L2.91,0.75L2.85,0.93L2.79,1.10L2.71,1.28L2.63,1.45L2.53,1.61L2.43,1.76L2.31,1.91L2.19,2.05L2.05,2.19L1.91,2.31L1.76,2.43L1.61,2.53L1.45,2.63L1.28,2.71L1.10,2.79L0.93,2.85L0.75,2.91L0.56,2.95L0.38,2.98L0.19,2.99L-0.00,3.00L-0.19,2.99L-0.38,2.98L-0.56,2.95L-0.75,2.91L-0.93,2.85L-1.10,2.79L-1.28,2.71L-1.45,2.63L-1.61,2.53L-1.76,2.43L-1.91,2.31L-2.05,2.19L-2.19,2.05L-2.31,1.91L-2.43,1.76L-2.53,1.61L-2.63,1.45L-2.71,1.28L-2.79,1.10L-2.85,0.93L-2.91,0.75L-2.95,0.56L-2.98,0.38L-2.99,0.19L-3.00,-0.00L-2.99,-0.19L-2.98,-0.38L-2.95,-0.56L-2.91,-0.75L-2.85,-0.93L-2.79,-1.10L-2.71,-1.28L-2.63,-1.45L-2.53,-1.61L-2.43,-1.76L-2.31,-1.91L-2.19,-2.05L-2.05,-2.19L-1.91,-2.31L-1.76,-2.43L-1.61,-2.53L-1.45,-2.63L-1.28,-2.71L-1.10,-2.79L-0.93,-2.85L-0.75,-2.91L-0.56,-2.95L-0.38,-2.98L-0.19,-2.99L0.00,-3.00L0.19,-2.99L0.38,-2.98L0.56,-2.95L0.75,-2.91L0.93,-2.85L1.10,-2.79L1.28,-2.71L1.45,-2.63L1.61,-2.53L1.76,-2.43L1.91,-2.31L2.05,-2.19L2.19,-2.05L2.31,-1.91L2.43,-1.76L2.53,-1.61L2.63,-1.45L2.71,-1.28L2.79,-1.10L2.85,-0.93L2.91,-0.75L2.95,-0.56L2.98,-0.38L2.99,-0.19"]
    13             RenderSVGText {text} at (-9,33) size 17x165 contains 1 chunk(s)
     13            RenderSVGText {text} at (-9,27) size 17x165 contains 1 chunk(s)
    1414              RenderSVGInlineText {#text} at (1,-27) size 17x165
    15                 chunk 1 (vertical) text run 1 at (-8.50,33.00) startOffset 0 endOffset 5 height 165.00: "start"
    16           RenderSVGContainer {g} at (198,57) size 25x198 [transform={m=((1.00,0.00)(0.00,1.00)) t=(50.00,0.00)}]
     15                chunk 1 (vertical) text run 1 at (-8.50,27.00) startOffset 0 endOffset 5 height 165.00: "start"
     16          RenderSVGContainer {g} at (198,51) size 25x198 [transform={m=((1.00,0.00)(0.00,1.00)) t=(50.00,0.00)}]
    1717            RenderPath {circle} at (207,147) size 6x6 [fill={[type=SOLID] [color=#000000]}] [data="M3.00,0.00L2.99,0.19L2.98,0.38L2.95,0.56L2.91,0.75L2.85,0.93L2.79,1.10L2.71,1.28L2.63,1.45L2.53,1.61L2.43,1.76L2.31,1.91L2.19,2.05L2.05,2.19L1.91,2.31L1.76,2.43L1.61,2.53L1.45,2.63L1.28,2.71L1.10,2.79L0.93,2.85L0.75,2.91L0.56,2.95L0.38,2.98L0.19,2.99L-0.00,3.00L-0.19,2.99L-0.38,2.98L-0.56,2.95L-0.75,2.91L-0.93,2.85L-1.10,2.79L-1.28,2.71L-1.45,2.63L-1.61,2.53L-1.76,2.43L-1.91,2.31L-2.05,2.19L-2.19,2.05L-2.31,1.91L-2.43,1.76L-2.53,1.61L-2.63,1.45L-2.71,1.28L-2.79,1.10L-2.85,0.93L-2.91,0.75L-2.95,0.56L-2.98,0.38L-2.99,0.19L-3.00,-0.00L-2.99,-0.19L-2.98,-0.38L-2.95,-0.56L-2.91,-0.75L-2.85,-0.93L-2.79,-1.10L-2.71,-1.28L-2.63,-1.45L-2.53,-1.61L-2.43,-1.76L-2.31,-1.91L-2.19,-2.05L-2.05,-2.19L-1.91,-2.31L-1.76,-2.43L-1.61,-2.53L-1.45,-2.63L-1.28,-2.71L-1.10,-2.79L-0.93,-2.85L-0.75,-2.91L-0.56,-2.95L-0.38,-2.98L-0.19,-2.99L0.00,-3.00L0.19,-2.99L0.38,-2.98L0.56,-2.95L0.75,-2.91L0.93,-2.85L1.10,-2.79L1.28,-2.71L1.45,-2.63L1.61,-2.53L1.76,-2.43L1.91,-2.31L2.05,-2.19L2.19,-2.05L2.31,-1.91L2.43,-1.76L2.53,-1.61L2.63,-1.45L2.71,-1.28L2.79,-1.10L2.85,-0.93L2.91,-0.75L2.95,-0.56L2.98,-0.38L2.99,-0.19"]
    18             RenderSVGText {text} at (-13,-66) size 25x198 contains 1 chunk(s)
     18            RenderSVGText {text} at (-13,-72) size 25x198 contains 1 chunk(s)
    1919              RenderSVGInlineText {#text} at (1,-27) size 25x198
    20                 chunk 1 (middle anchor, vertical) text run 1 at (-12.50,-66.00) startOffset 0 endOffset 6 height 198.00: "middle"
    21           RenderSVGContainer {g} at (252,57) size 17x99 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,0.00)}]
     20                chunk 1 (middle anchor, vertical) text run 1 at (-12.50,-72.00) startOffset 0 endOffset 6 height 198.00: "middle"
     21          RenderSVGContainer {g} at (252,51) size 17x102 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,0.00)}]
    2222            RenderPath {circle} at (257,147) size 6x6 [fill={[type=SOLID] [color=#000000]}] [data="M3.00,0.00L2.99,0.19L2.98,0.38L2.95,0.56L2.91,0.75L2.85,0.93L2.79,1.10L2.71,1.28L2.63,1.45L2.53,1.61L2.43,1.76L2.31,1.91L2.19,2.05L2.05,2.19L1.91,2.31L1.76,2.43L1.61,2.53L1.45,2.63L1.28,2.71L1.10,2.79L0.93,2.85L0.75,2.91L0.56,2.95L0.38,2.98L0.19,2.99L-0.00,3.00L-0.19,2.99L-0.38,2.98L-0.56,2.95L-0.75,2.91L-0.93,2.85L-1.10,2.79L-1.28,2.71L-1.45,2.63L-1.61,2.53L-1.76,2.43L-1.91,2.31L-2.05,2.19L-2.19,2.05L-2.31,1.91L-2.43,1.76L-2.53,1.61L-2.63,1.45L-2.71,1.28L-2.79,1.10L-2.85,0.93L-2.91,0.75L-2.95,0.56L-2.98,0.38L-2.99,0.19L-3.00,-0.00L-2.99,-0.19L-2.98,-0.38L-2.95,-0.56L-2.91,-0.75L-2.85,-0.93L-2.79,-1.10L-2.71,-1.28L-2.63,-1.45L-2.53,-1.61L-2.43,-1.76L-2.31,-1.91L-2.19,-2.05L-2.05,-2.19L-1.91,-2.31L-1.76,-2.43L-1.61,-2.53L-1.45,-2.63L-1.28,-2.71L-1.10,-2.79L-0.93,-2.85L-0.75,-2.91L-0.56,-2.95L-0.38,-2.98L-0.19,-2.99L0.00,-3.00L0.19,-2.99L0.38,-2.98L0.56,-2.95L0.75,-2.91L0.93,-2.85L1.10,-2.79L1.28,-2.71L1.45,-2.63L1.61,-2.53L1.76,-2.43L1.91,-2.31L2.05,-2.19L2.19,-2.05L2.31,-1.91L2.43,-1.76L2.53,-1.61L2.63,-1.45L2.71,-1.28L2.79,-1.10L2.85,-0.93L2.91,-0.75L2.95,-0.56L2.98,-0.38L2.99,-0.19"]
    23             RenderSVGText {text} at (-9,-66) size 17x99 contains 1 chunk(s)
     23            RenderSVGText {text} at (-9,-72) size 17x99 contains 1 chunk(s)
    2424              RenderSVGInlineText {#text} at (1,-27) size 17x99
    25                 chunk 1 (end anchor, vertical) text run 1 at (-8.50,-66.00) startOffset 0 endOffset 3 height 99.00: "end"
     25                chunk 1 (end anchor, vertical) text run 1 at (-8.50,-72.00) startOffset 0 endOffset 3 height 99.00: "end"
    2626    RenderSVGText {text} at (10,340) size 264x46 contains 1 chunk(s)
    2727      RenderSVGInlineText {#text} at (0,-36) size 264x46
  • trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/text-align-06-b-expected.checksum

    r26781 r27680  
    1 88d2fbdabf0d8ca62a5db1922ffec361
     1d4f1c338871e272f77efb2c7fb44d905
  • trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/text-align-06-b-expected.txt

    r26599 r27680  
    22  RenderView at (0,0) size 480x360
    33layer at (0,0) size 480x360
    4   RenderSVGRoot {svg} at (0,0.50) size 481x362.50
    5     RenderSVGContainer {g} at (0,4) size 481x359
     4  RenderSVGRoot {svg} at (0,0.50) size 481x359
     5    RenderSVGContainer {g} at (0,4) size 481x353
    66      RenderSVGText {text} at (0,40) size 481x44 contains 1 chunk(s)
    77        RenderSVGInlineText {#text} at (0,-36) size 481x44
    88          chunk 1 text run 1 at (0.00,40.00) startOffset 0 endOffset 31 width 481.00: "Test 'baseline-shift' (vertic.)"
    9       RenderSVGContainer {g} at (82,66) size 293x297
    10         RenderSVGContainer {g} at (82,66) size 293x297 [transform={m=((1.00,0.00)(0.00,1.00)) t=(90.00,60.00)}]
    11           RenderSVGText {text} at (-9,33) size 24x165 contains 1 chunk(s)
     9      RenderSVGContainer {g} at (82,60) size 293x297
     10        RenderSVGContainer {g} at (82,60) size 293x297 [transform={m=((1.00,0.00)(0.00,1.00)) t=(90.00,60.00)}]
     11          RenderSVGText {text} at (-9,27) size 24x165 contains 1 chunk(s)
    1212            RenderSVGInlineText {#text} at (1,-27) size 17x66
    13               chunk 1 (vertical) text run 1 at (-8.50,33.00) startOffset 0 endOffset 2 height 66.00: "te"
     13              chunk 1 (vertical) text run 1 at (-8.50,27.00) startOffset 0 endOffset 2 height 66.00: "te"
    1414            RenderSVGTSpan {tspan} at (0,0) size 17x33
    1515              RenderSVGInlineText {#text} at (8,39) size 17x33
    16                 chunk 1 (vertical) text run 2 at (-1.50,99.00) startOffset 0 endOffset 1 height 33.00: "7"
     16                chunk 1 (vertical) text run 2 at (-1.50,93.00) startOffset 0 endOffset 1 height 33.00: "7"
    1717            RenderSVGInlineText {#text} at (2,72) size 15x66
    18               chunk 1 (vertical) text run 3 at (-7.50,132.00) startOffset 0 endOffset 2 height 66.00: "xt"
    19           RenderSVGText {text} at (45,33) size 44x264 contains 1 chunk(s)
     18              chunk 1 (vertical) text run 3 at (-7.50,126.00) startOffset 0 endOffset 2 height 66.00: "xt"
     19          RenderSVGText {text} at (45,27) size 44x264 contains 1 chunk(s)
    2020            RenderSVGInlineText {#text} at (26,-27) size 18x66
    21               chunk 1 (vertical) text run 1 at (71.50,33.00) startOffset 0 endOffset 2 height 66.00: "te"
     21              chunk 1 (vertical) text run 1 at (71.50,27.00) startOffset 0 endOffset 2 height 66.00: "te"
    2222            RenderSVGTSpan {tspan} at (0,0) size 28x132
    2323              RenderSVGInlineText {#text} at (0,39) size 28x132
    24                 chunk 1 (vertical) text run 2 at (45.50,99.00) startOffset 0 endOffset 4 height 132.00: "-70%"
     24                chunk 1 (vertical) text run 2 at (45.50,93.00) startOffset 0 endOffset 4 height 132.00: "-70%"
    2525            RenderSVGInlineText {#text} at (27,171) size 16x66
    26               chunk 1 (vertical) text run 3 at (72.50,231.00) startOffset 0 endOffset 2 height 66.00: "xt"
    27           RenderSVGText {text} at (155,33) size 34x231 contains 1 chunk(s)
     26              chunk 1 (vertical) text run 3 at (72.50,225.00) startOffset 0 endOffset 2 height 66.00: "xt"
     27          RenderSVGText {text} at (155,27) size 34x231 contains 1 chunk(s)
    2828            RenderSVGInlineText {#text} at (16,-27) size 18x66
    29               chunk 1 (vertical) text run 1 at (171.50,33.00) startOffset 0 endOffset 2 height 66.00: "te"
     29              chunk 1 (vertical) text run 1 at (171.50,27.00) startOffset 0 endOffset 2 height 66.00: "te"
    3030            RenderSVGTSpan {tspan} at (0,0) size 17x99
    3131              RenderSVGInlineText {#text} at (0,39) size 17x99
    32                 chunk 1 (vertical) text run 2 at (155.00,99.00) startOffset 0 endOffset 3 height 99.00: "sub"
     32                chunk 1 (vertical) text run 2 at (155.00,93.00) startOffset 0 endOffset 3 height 99.00: "sub"
    3333            RenderSVGTSpan {tspan} at (0,0) size 16x33
    3434              RenderSVGInlineText {#text} at (17,138) size 16x33
    35                 chunk 1 (vertical) text run 3 at (172.50,198.00) startOffset 0 endOffset 1 height 33.00: "x"
     35                chunk 1 (vertical) text run 3 at (172.50,192.00) startOffset 0 endOffset 1 height 33.00: "x"
    3636            RenderSVGInlineText {#text} at (21,171) size 8x33
    37               chunk 1 (vertical) text run 4 at (176.00,231.00) startOffset 0 endOffset 1 height 33.00: "t"
    38           RenderSVGText {text} at (251,33) size 34x297 contains 1 chunk(s)
     37              chunk 1 (vertical) text run 4 at (176.00,225.00) startOffset 0 endOffset 1 height 33.00: "t"
     38          RenderSVGText {text} at (251,27) size 34x297 contains 1 chunk(s)
    3939            RenderSVGInlineText {#text} at (0,-27) size 18x66
    40               chunk 1 (vertical) text run 1 at (251.50,33.00) startOffset 0 endOffset 2 height 66.00: "te"
     40              chunk 1 (vertical) text run 1 at (251.50,27.00) startOffset 0 endOffset 2 height 66.00: "te"
    4141            RenderSVGTSpan {tspan} at (0,0) size 17x165
    4242              RenderSVGInlineText {#text} at (17,39) size 17x165
    43                 chunk 1 (vertical) text run 2 at (268.00,99.00) startOffset 0 endOffset 5 height 165.00: "super"
     43                chunk 1 (vertical) text run 2 at (268.00,93.00) startOffset 0 endOffset 5 height 165.00: "super"
    4444            RenderSVGTSpan {tspan} at (0,0) size 16x33
    4545              RenderSVGInlineText {#text} at (1,204) size 16x33
    46                 chunk 1 (vertical) text run 3 at (252.50,264.00) startOffset 0 endOffset 1 height 33.00: "x"
     46                chunk 1 (vertical) text run 3 at (252.50,258.00) startOffset 0 endOffset 1 height 33.00: "x"
    4747            RenderSVGInlineText {#text} at (5,237) size 8x33
    48               chunk 1 (vertical) text run 4 at (256.00,297.00) startOffset 0 endOffset 1 height 33.00: "t"
     48              chunk 1 (vertical) text run 4 at (256.00,291.00) startOffset 0 endOffset 1 height 33.00: "t"
    4949    RenderSVGText {text} at (10,340) size 264x46 contains 1 chunk(s)
    5050      RenderSVGInlineText {#text} at (0,-36) size 264x46
  • trunk/LayoutTests/svg/batik/text/textGlyphOrientationHorizontal-expected.txt

    r26516 r27680  
    22  RenderView at (0,0) size 800x600
    33layer at (0,0) size 450x500
    4   RenderSVGRoot {svg} at (40,16) size 360x375.52
     4  RenderSVGRoot {svg} at (39,16) size 361x375.52
    55    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
    66      RenderPath {path} at (19.65,8.96) size 160.35x42.08 [stroke={[type=SOLID] [color=#0000FF]}] [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"]
     
    99      RenderSVGInlineText {#text} at (0,-14) size 190x17
    1010        chunk 1 (middle anchor) text run 1 at (130.00,30.00) startOffset 0 endOffset 27 width 190.00: "Text Orientation Horizontal"
    11     RenderSVGContainer {g} at (40,45) size 360x346.52
     11    RenderSVGContainer {g} at (39,45) size 361x346.52
    1212      RenderPath {line} at (50,79) size 150x2 [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [fill={[type=SOLID] [color=#000000]}] [data="M50.00,80.00L200.00,80.00"]
    1313      RenderSVGText {text} at (50,80) size 142x27 contains 1 chunk(s)
     
    3030          RenderSVGInlineText {#text} at (0,0) size 0x0
    3131      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"]
    32       RenderSVGText {text} at (50,130) size 142x27 contains 1 chunk(s)
    33         RenderSVGInlineText {#text} at (0,-22) size 142x27
    34           chunk 1 text run 1 at (50.00,130.00) startOffset 0 endOffset 13 width 142.00: "Batik is Good"
    35       RenderSVGContainer {g} at (40,132) size 330x69.52 [transform={m=((1.00,0.00)(0.00,1.00)) t=(30.00,150.00)}]
     32      RenderSVGText {text} at (58,125) size 351x20 contains 1 chunk(s)
     33        RenderSVGInlineText {#text} at (-11,-15) size 351x20
     34          chunk 1 text run 1 at (58.00,125.00) startOffset 0 endOffset 13 width 142.00: "Batik is Good"
     35      RenderSVGContainer {g} at (40,147) size 340x54.52 [transform={m=((1.00,0.00)(0.00,1.00)) t=(30.00,150.00)}]
    3636        RenderSVGContainer {use} at (49.55,158.48) size 320.45x43.05
    3737          RenderSVGContainer {g} at (49.55,158.48) size 320.45x43.05
    3838            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"]
    39         RenderSVGText {text} at (27,11) size 153x62 contains 1 chunk(s)
    40           RenderSVGTextPath {textPath} at (0,0) size 153x62
    41             RenderSVGInlineText {#text} at (-17,-15) size 67x48
    42               chunk 1 text run 1 at (27.16,17.35) startOffset 0 endOffset 6 width 60.00: "Batik "
    43             RenderSVGTSpan {tspan} at (0,0) size 25x29
    44               RenderSVGInlineText {#text} at (39,-29) size 25x29
    45                 chunk 1 text run 2 at (77.45,13.71) startOffset 0 endOffset 2 width 17.00: "is"
    46             RenderSVGTSpan {tspan} at (0,0) size 74x41
    47               RenderSVGInlineText {#text} at (62,-21) size 74x41
    48                 chunk 1 text run 3 at (95.11,11.78) startOffset 0 endOffset 5 width 65.00: " Good"
     39        RenderSVGText {text} at (32,11) size 340x47 contains 1 chunk(s)
     40          RenderSVGTextPath {textPath} at (0,0) size 340x47
     41            RenderSVGInlineText {#text} at (-22,-14) size 162x42
     42              chunk 1 text run 1 at (32.09,11.82) startOffset 0 endOffset 6 width 60.00: "Batik "
     43            RenderSVGTSpan {tspan} at (0,0) size 54x24
     44              RenderSVGInlineText {#text} at (138,0) size 54x24
     45                chunk 1 text run 2 at (184.39,40.17) startOffset 0 endOffset 2 width 17.00: "is"
     46            RenderSVGTSpan {tspan} at (0,0) size 135x40
     47              RenderSVGInlineText {#text} at (183,-7) size 135x40
     48                chunk 1 text run 3 at (237.33,22.64) startOffset 0 endOffset 5 width 65.00: " Good"
    4949          RenderSVGInlineText {#text} at (0,0) size 0x0
    5050      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"]
    51       RenderSVGText {text} at (50,240) size 142x27 contains 1 chunk(s)
    52         RenderSVGInlineText {#text} at (0,-22) size 142x27
    53           chunk 1 text run 1 at (50.00,240.00) startOffset 0 endOffset 13 width 142.00: "Batik is Good"
     51      RenderSVGText {text} at (58,240) size 143x28 contains 1 chunk(s)
     52        RenderSVGInlineText {#text} at (-9,-23) size 143x28
     53          chunk 1 text run 1 at (58.00,240.00) startOffset 0 endOffset 13 width 142.00: "Batik is Good"
    5454      RenderSVGContainer {g} at (224,205) size 176x69 [transform={m=((1.00,0.00)(0.00,1.00)) t=(220.00,220.00)}]
    5555        RenderSVGContainer {use} at (239.29,228.42) size 160.71x43.16
     
    6868          RenderSVGInlineText {#text} at (0,0) size 0x0
    6969      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"]
    70       RenderSVGText {text} at (50,320) size 142x27 contains 1 chunk(s)
    71         RenderSVGInlineText {#text} at (0,-22) size 142x27
    72           chunk 1 text run 1 at (50.00,320.00) startOffset 0 endOffset 13 width 142.00: "Batik is Good"
    73       RenderSVGContainer {g} at (40,322) size 330x69.52 [transform={m=((1.00,0.00)(0.00,1.00)) t=(30.00,340.00)}]
     70      RenderSVGText {text} at (42,315) size 353x20 contains 1 chunk(s)
     71        RenderSVGInlineText {#text} at (5,-15) size 353x20
     72          chunk 1 text run 1 at (42.00,315.00) startOffset 0 endOffset 13 width 142.00: "Batik is Good"
     73      RenderSVGContainer {g} at (39,338) size 343x53.52 [transform={m=((1.00,0.00)(0.00,1.00)) t=(30.00,340.00)}]
    7474        RenderSVGContainer {use} at (49.55,348.48) size 320.45x43.05
    7575          RenderSVGContainer {g} at (49.55,348.48) size 320.45x43.05
    7676            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"]
    77         RenderSVGText {text} at (27,11) size 153x62 contains 1 chunk(s)
    78           RenderSVGTextPath {textPath} at (0,0) size 153x62
    79             RenderSVGInlineText {#text} at (-17,-15) size 67x48
    80               chunk 1 text run 1 at (27.16,17.35) startOffset 0 endOffset 6 width 60.00: "Batik "
    81             RenderSVGTSpan {tspan} at (0,0) size 25x29
    82               RenderSVGInlineText {#text} at (39,-29) size 25x29
    83                 chunk 1 text run 2 at (77.45,13.71) startOffset 0 endOffset 2 width 17.00: "is"
    84             RenderSVGTSpan {tspan} at (0,0) size 74x41
    85               RenderSVGInlineText {#text} at (62,-21) size 74x41
    86                 chunk 1 text run 3 at (95.11,11.78) startOffset 0 endOffset 5 width 65.00: " Good"
     77        RenderSVGText {text} at (32,11) size 343x48 contains 1 chunk(s)
     78          RenderSVGTextPath {textPath} at (0,0) size 343x48
     79            RenderSVGInlineText {#text} at (-23,-13) size 170x41
     80              chunk 1 text run 1 at (32.09,11.82) startOffset 0 endOffset 6 width 60.00: "Batik "
     81            RenderSVGTSpan {tspan} at (0,0) size 47x20
     82              RenderSVGInlineText {#text} at (148,4) size 47x20
     83                chunk 1 text run 2 at (184.39,40.17) startOffset 0 endOffset 2 width 17.00: "is"
     84            RenderSVGTSpan {tspan} at (0,0) size 129x42
     85              RenderSVGInlineText {#text} at (191,-7) size 129x42
     86                chunk 1 text run 3 at (237.33,22.64) startOffset 0 endOffset 5 width 65.00: " Good"
    8787          RenderSVGInlineText {#text} at (0,0) size 0x0
  • trunk/LayoutTests/svg/batik/text/verticalText-expected.checksum

    r26384 r27680  
    1 fcca0c5164888e7b672cc77247cb66cb
     198c55d902080122e04522de09b80a30a
  • trunk/LayoutTests/svg/batik/text/verticalText-expected.txt

    r26516 r27680  
    22  RenderView at (0,0) size 800x600
    33layer at (0,0) size 450x500
    4   RenderSVGRoot {svg} at (20,26) size 410x512
     4  RenderSVGRoot {svg} at (20,26) size 410x464
    55    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
    66      RenderPath {path} at (14.95,7.04) size 315.11x30.91 [transform={m=((0.15,0.00)(0.00,0.15)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF]}] [data="M100.00,200.00C200.00,100.00,300.00,0.00,400.00,100.00C500.00,200.00,600.00,300.00,700.00,200.00C800.00,100.00,900.00,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"]
    7     RenderSVGContainer {g} at (20,26) size 410x512
     7    RenderSVGContainer {g} at (20,26) size 410x464
    88      RenderSVGText {text} at (163,40) size 124x17 contains 1 chunk(s)
    99        RenderSVGInlineText {#text} at (0,-14) size 124x17
     
    2727        RenderPath {line} at (349.50,75) size 1x375 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#000000]}] [data="M350.00,75.00L350.00,450.00"]
    2828        RenderPath {line} at (399.50,75) size 1x375 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#000000]}] [data="M400.00,75.00L400.00,450.00"]
    29       RenderSVGText {text} at (42,92) size 16x391 contains 1 chunk(s)
    30         RenderSVGInlineText {#text} at (0,-13) size 16x391
    31           chunk 1 (vertical) text run 1 at (42.50,92.00) startOffset 0 endOffset 23 height 391.00: "Writing top to bottom\x{753B}\x{50CF}"
    32       RenderSVGText {text} at (92,92) size 16x408 contains 1 chunk(s)
    33         RenderSVGInlineText {#text} at (0,-13) size 16x408
    34           chunk 1 (vertical) text run 1 at (92.50,92.00) startOffset 0 endOffset 24 height 408.00: "Glyph Orientation:auto\x{753B}\x{50CF}"
    35       RenderSVGText {text} at (142,92) size 16x357 contains 1 chunk(s)
     29      RenderSVGText {text} at (33,79) size 18x165 contains 1 chunk(s)
     30        RenderSVGInlineText {#text} at (8,0) size 18x165
     31          chunk 1 (vertical) text run 1 at (33.00,79.00) startOffset 0 endOffset 23 height 391.00: "Writing top to bottom\x{753B}\x{50CF}"
     32      RenderSVGText {text} at (83,79) size 18x174 contains 1 chunk(s)
     33        RenderSVGInlineText {#text} at (8,0) size 18x174
     34          chunk 1 (vertical) text run 1 at (83.00,79.00) startOffset 0 endOffset 24 height 408.00: "Glyph Orientation:auto\x{753B}\x{50CF}"
     35      RenderSVGText {text} at (142,88) size 16x357 contains 1 chunk(s)
    3636        RenderSVGInlineText {#text} at (0,-13) size 16x357
    37           chunk 1 (vertical) text run 1 at (142.50,92.00) startOffset 0 endOffset 21 height 357.00: "Glyph Orientation:0\x{753B}\x{50CF}"
    38       RenderSVGText {text} at (192,92) size 16x374 contains 1 chunk(s)
    39         RenderSVGInlineText {#text} at (0,-13) size 16x374
    40           chunk 1 (vertical) text run 1 at (192.50,92.00) startOffset 0 endOffset 22 height 374.00: "Glyph Orientation:90\x{753B}\x{50CF}"
    41       RenderSVGText {text} at (242,92) size 16x391 contains 1 chunk(s)
    42         RenderSVGInlineText {#text} at (0,-13) size 16x391
    43           chunk 1 (vertical) text run 1 at (242.50,92.00) startOffset 0 endOffset 23 height 391.00: "Glyph Orientation:180\x{753B}\x{50CF}"
    44       RenderSVGText {text} at (292,92) size 16x391 contains 1 chunk(s)
    45         RenderSVGInlineText {#text} at (0,-13) size 16x391
    46           chunk 1 (vertical) text run 1 at (292.50,92.00) startOffset 0 endOffset 23 height 391.00: "Glyph Orientation:270\x{753B}\x{50CF}"
    47       RenderSVGText {text} at (344,92) size 12x408 contains 1 chunk(s)
    48         RenderSVGInlineText {#text} at (0,-13) size 12x153
    49           chunk 1 (vertical) text run 1 at (344.00,92.00) startOffset 0 endOffset 9 height 153.00: "Embedded "
    50         RenderSVGTSpan {tspan} at (0,0) size 8x119
    51           RenderSVGInlineText {#text} at (2,140) size 8x119
    52             chunk 1 (vertical) text run 2 at (346.00,245.00) startOffset 0 endOffset 7 height 119.00: "<tspan>"
    53         RenderSVGInlineText {#text} at (0,259) size 12x136
    54           chunk 1 (vertical) text run 3 at (344.00,364.00) startOffset 0 endOffset 8 height 136.00: " element"
    55       RenderSVGText {text} at (394,92) size 12x459 contains 1 chunk(s)
    56         RenderSVGInlineText {#text} at (0,-13) size 12x153
    57           chunk 1 (vertical) text run 1 at (394.00,92.00) startOffset 0 endOffset 9 height 153.00: "Embedded "
     37          chunk 1 (vertical) text run 1 at (142.50,88.00) startOffset 0 endOffset 21 height 357.00: "Glyph Orientation:0\x{753B}\x{50CF}"
     38      RenderSVGText {text} at (183,79) size 18x163 contains 1 chunk(s)
     39        RenderSVGInlineText {#text} at (8,0) size 18x163
     40          chunk 1 (vertical) text run 1 at (183.00,79.00) startOffset 0 endOffset 22 height 374.00: "Glyph Orientation:90\x{753B}\x{50CF}"
     41      RenderSVGText {text} at (250,88) size 16x392 contains 1 chunk(s)
     42        RenderSVGInlineText {#text} at (-8,-14) size 16x392
     43          chunk 1 (vertical) text run 1 at (250.00,88.00) startOffset 0 endOffset 23 height 391.00: "Glyph Orientation:180\x{753B}\x{50CF}"
     44      RenderSVGText {text} at (317,79) size 17x171 contains 1 chunk(s)
     45        RenderSVGInlineText {#text} at (-26,0) size 26x171
     46          chunk 1 (vertical) text run 1 at (317.00,79.00) startOffset 0 endOffset 23 height 391.00: "Glyph Orientation:270\x{753B}\x{50CF}"
     47      RenderSVGText {text} at (333,79) size 17x173 contains 1 chunk(s)
     48        RenderSVGInlineText {#text} at (9,0) size 17x71
     49          chunk 1 (vertical) text run 1 at (333.00,79.00) startOffset 0 endOffset 9 height 153.00: "Embedded "
     50        RenderSVGTSpan {tspan} at (0,0) size 17x49
     51          RenderSVGInlineText {#text} at (9,71) size 17x49
     52            chunk 1 (vertical) text run 2 at (333.00,150.00) startOffset 0 endOffset 7 height 119.00: "<tspan>"
     53        RenderSVGInlineText {#text} at (9,120) size 17x53
     54          chunk 1 (vertical) text run 3 at (333.00,199.00) startOffset 0 endOffset 8 height 136.00: " element"
     55      RenderSVGText {text} at (383,79) size 18x294 contains 1 chunk(s)
     56        RenderSVGInlineText {#text} at (8,0) size 18x71
     57          chunk 1 (vertical) text run 1 at (383.00,79.00) startOffset 0 endOffset 9 height 153.00: "Embedded "
    5858        RenderSVGTSpan {tspan} at (0,0) size 8x170
    59           RenderSVGInlineText {#text} at (2,140) size 8x170
    60             chunk 1 (vertical) text run 2 at (396.00,245.00) startOffset 0 endOffset 10 height 170.00: "orientated"
    61         RenderSVGInlineText {#text} at (0,310) size 12x136
    62           chunk 1 (vertical) text run 3 at (394.00,415.00) startOffset 0 endOffset 8 height 136.00: " element"
    63       RenderSVGContainer {g} at (42,454) size 328.11x43 [transform={m=((1.00,0.00)(0.00,1.00)) t=(40.00,450.00)}]
     59          RenderSVGInlineText {#text} at (13,67) size 8x170
     60            chunk 1 (vertical) text run 2 at (396.00,159.00) startOffset 0 endOffset 10 height 170.00: "orientated"
     61        RenderSVGInlineText {#text} at (8,241) size 18x53
     62          chunk 1 (vertical) text run 3 at (383.00,320.00) startOffset 0 endOffset 8 height 136.00: " element"
     63      RenderSVGContainer {g} at (51,455) size 319.11x35 [transform={m=((1.00,0.00)(0.00,1.00)) t=(40.00,450.00)}]
    6464        RenderSVGContainer {use} at (54.89,457.29) size 315.21x30.43
    6565          RenderSVGContainer {g} at (54.89,457.29) size 315.21x30.43
    6666            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"]
    67         RenderSVGText {text} at (15,22) size 297x43 contains 1 chunk(s)
    68           RenderSVGTextPath {textPath} at (0,0) size 297x43
    69             RenderSVGInlineText {#text} at (-13,-18) size 297x43
    70               chunk 1 (vertical) text run 1 at (15.47,22.79) startOffset 0 endOffset 25 height 350.00: "Vertical text on a Path\x{753B}\x{50CF}"
     67        RenderSVGText {text} at (19,8) size 297x35 contains 1 chunk(s)
     68          RenderSVGTextPath {textPath} at (0,0) size 297x35
     69            RenderSVGInlineText {#text} at (-8,-3) size 297x35
     70              chunk 1 (vertical) text run 1 at (19.97,8.79) startOffset 0 endOffset 25 height 350.00: "Vertical text on a Path\x{753B}\x{50CF}"
    7171          RenderSVGInlineText {#text} at (0,0) size 0x0
    7272    RenderSVGContainer {use} at (0,0) size 0x0
  • trunk/LayoutTests/svg/batik/text/verticalTextOnPath-expected.checksum

    r26516 r27680  
    1 246a31a6cacaa6e149f46eb5140b9420
     14802b5c601684a157dc9b1d00ebbdc2a
  • trunk/LayoutTests/svg/batik/text/verticalTextOnPath-expected.txt

    r26516 r27680  
    22  RenderView at (0,0) size 800x600
    33layer at (0,0) size 450x500
    4   RenderSVGRoot {svg} at (1,26) size 446x624
    5     RenderSVGContainer {g} at (1,26) size 446x624
     4  RenderSVGRoot {svg} at (11,26) size 436x457
     5    RenderSVGContainer {g} at (11,26) size 436x457
    66      RenderSVGText {text} at (134,40) size 182x17 contains 1 chunk(s)
    77        RenderSVGInlineText {#text} at (0,-14) size 182x17
     
    1010        RenderPath {path} at (14.95,7.04) size 120.05x30.91 [transform={m=((0.15,0.00)(0.00,0.15)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF]}] [data="M100.00,200.00C200.00,100.00,300.00,0.00,400.00,100.00C500.00,200.00,600.00,300.00,700.00,200.00C800.00,100.00,900.00,100.00,900.00,100.00"]
    1111        RenderPath {path} at (29.85,12.25) size 90.30x37.75 [transform={m=((0.30,0.00)(0.00,0.50)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF]}] [data="M100.00,100.00C100.00,0.00,400.00,0.00,400.00,100.00"]
    12       RenderSVGContainer {g} at (1,75) size 134x129 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,70.00)}]
     12      RenderSVGContainer {g} at (11,59) size 124x94 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,70.00)}]
    1313        RenderSVGContainer {use} at (14.89,77.29) size 120.11x30.43
    1414          RenderSVGContainer {g} at (14.89,77.29) size 120.11x30.43
    1515            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"]
    16         RenderSVGText {text} at (16,26) size 121x129 contains 1 chunk(s)
    17           RenderSVGTextPath {textPath} at (0,0) size 121x129
    18             RenderSVGInlineText {#text} at (-15,-21) size 89x41
    19               chunk 1 (vertical) text run 1 at (16.55,26.15) startOffset 0 endOffset 5 height 85.00: "Text "
    20             RenderSVGTSpan {tspan} at (0,0) size 18x32
    21               RenderSVGInlineText {#text} at (79,-9) size 18x32
    22                 chunk 1 (vertical) text run 2 at (88.08,45.41) startOffset 0 endOffset 2 height 34.00: "on"
    23             RenderSVGTSpan {tspan} at (0,0) size 15x120
    24               RenderSVGInlineText {#text} at (91,-12) size 15x120
    25                 chunk 1 (vertical) text run 3 at (116.63,35.87) startOffset 0 endOffset 7 height 119.00: " a Path"
     16        RenderSVGText {text} at (18,9) size 85x56 contains 1 chunk(s)
     17          RenderSVGTextPath {textPath} at (0,0) size 85x56
     18            RenderSVGInlineText {#text} at (-7,-9) size 36x33
     19              chunk 1 (vertical) text run 1 at (18.19,10.99) startOffset 0 endOffset 5 height 85.00: "Text "
     20            RenderSVGTSpan {tspan} at (0,0) size 25x21
     21              RenderSVGInlineText {#text} at (22,-20) size 25x21
     22                chunk 1 (vertical) text run 2 at (43.70,9.08) startOffset 0 endOffset 2 height 34.00: "on"
     23            RenderSVGTSpan {tspan} at (0,0) size 43x39
     24              RenderSVGInlineText {#text} at (35,-3) size 43x39
     25                chunk 1 (vertical) text run 3 at (56.90,12.32) startOffset 0 endOffset 7 height 119.00: " a Path"
    2626          RenderSVGInlineText {#text} at (0,0) size 0x0
    2727        RenderSVGText {text} at (35,60) size 68x13 contains 1 chunk(s)
     
    3434          RenderSVGInlineText {#text} at (0,-10) size 100x13
    3535            chunk 1 text run 1 at (35.00,80.00) startOffset 0 endOffset 24 width 100.00: "glyph-orientation=\"auto\""
    36       RenderSVGContainer {g} at (146,66) size 141x119 [transform={m=((1.00,0.00)(0.00,1.00)) t=(150.00,70.00)}]
     36      RenderSVGContainer {g} at (142,66) size 145x100 [transform={m=((1.00,0.00)(0.00,1.00)) t=(150.00,70.00)}]
    3737        RenderSVGContainer {use} at (164.89,77.29) size 120.11x30.43
    3838          RenderSVGContainer {g} at (164.89,77.29) size 120.11x30.43
    3939            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"]
    40         RenderSVGText {text} at (-5,17) size 109x119 contains 1 chunk(s)
    41           RenderSVGTextPath {textPath} at (0,0) size 109x119
    42             RenderSVGInlineText {#text} at (1,-21) size 9x85
    43               chunk 1 (middle anchor, vertical) text run 1 at (-4.50,17.00) startOffset 0 endOffset 5 height 85.00: "Text "
    44             RenderSVGTSpan {tspan} at (0,0) size 8x35
    45               RenderSVGInlineText {#text} at (11,63) size 8x35
    46                 chunk 1 (middle anchor, vertical) text run 2 at (-4.00,102.00) startOffset 0 endOffset 2 height 34.00: "on"
    47             RenderSVGTSpan {tspan} at (0,0) size 101x44
    48               RenderSVGInlineText {#text} at (9,-12) size 101x44
    49                 chunk 1 (middle anchor, vertical) text run 3 at (19.05,26.15) startOffset 0 endOffset 7 height 119.00: " a Path"
     40        RenderSVGText {text} at (0,0) size 124x100 contains 1 chunk(s)
     41          RenderSVGTextPath {textPath} at (0,0) size 124x100
     42            RenderSVGInlineText {#text} at (-8,-4) size 17x74
     43              chunk 1 (middle anchor, vertical) text run 1 at (0.00,0.00) startOffset 0 endOffset 5 height 85.00: "Text "
     44            RenderSVGTSpan {tspan} at (0,0) size 17x26
     45              RenderSVGInlineText {#text} at (-8,70) size 17x26
     46                chunk 1 (middle anchor, vertical) text run 2 at (0.00,85.00) startOffset 0 endOffset 2 height 34.00: "on"
     47            RenderSVGTSpan {tspan} at (0,0) size 103x33
     48              RenderSVGInlineText {#text} at (13,5) size 103x33
     49                chunk 1 (middle anchor, vertical) text run 3 at (21.05,9.15) startOffset 0 endOffset 7 height 119.00: " a Path"
    5050          RenderSVGInlineText {#text} at (0,0) size 0x0
    5151        RenderSVGText {text} at (35,60) size 68x13 contains 1 chunk(s)
     
    5858          RenderSVGInlineText {#text} at (0,-10) size 102x13
    5959            chunk 1 text run 1 at (35.00,80.00) startOffset 0 endOffset 24 width 102.00: "glyph-orientation=\"0deg\""
    60       RenderSVGContainer {g} at (296,66) size 151x170 [transform={m=((1.00,0.00)(0.00,1.00)) t=(300.00,70.00)}]
     60      RenderSVGContainer {g} at (292,66) size 155x159 [transform={m=((1.00,0.00)(0.00,1.00)) t=(300.00,70.00)}]
    6161        RenderSVGContainer {use} at (314.89,77.29) size 120.11x30.43
    6262          RenderSVGContainer {g} at (314.89,77.29) size 120.11x30.43
    6363            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"]
    64         RenderSVGText {text} at (-5,17) size 87x170 contains 1 chunk(s)
    65           RenderSVGTextPath {textPath} at (0,0) size 87x170
    66             RenderSVGInlineText {#text} at (1,-21) size 9x85
    67               chunk 1 (end anchor, vertical) text run 1 at (-4.50,17.00) startOffset 0 endOffset 5 height 85.00: "Text "
    68             RenderSVGTSpan {tspan} at (0,0) size 8x35
    69               RenderSVGInlineText {#text} at (11,63) size 8x35
    70                 chunk 1 (end anchor, vertical) text run 2 at (-4.00,102.00) startOffset 0 endOffset 2 height 34.00: "on"
    71             RenderSVGTSpan {tspan} at (0,0) size 86x160
    72               RenderSVGInlineText {#text} at (2,-11) size 86x160
    73                 chunk 1 (end anchor, vertical) text run 3 at (-3.50,27.16) startOffset 0 endOffset 7 height 119.00: " a Path"
     64        RenderSVGText {text} at (0,0) size 83x159 contains 1 chunk(s)
     65          RenderSVGTextPath {textPath} at (0,0) size 83x159
     66            RenderSVGInlineText {#text} at (-8,-4) size 17x74
     67              chunk 1 (end anchor, vertical) text run 1 at (0.00,0.00) startOffset 0 endOffset 5 height 85.00: "Text "
     68            RenderSVGTSpan {tspan} at (0,0) size 17x26
     69              RenderSVGInlineText {#text} at (-8,70) size 17x26
     70                chunk 1 (end anchor, vertical) text run 2 at (0.00,85.00) startOffset 0 endOffset 2 height 34.00: "on"
     71            RenderSVGTSpan {tspan} at (0,0) size 83x151
     72              RenderSVGInlineText {#text} at (-8,4) size 83x151
     73                chunk 1 (end anchor, vertical) text run 3 at (0.00,10.16) startOffset 0 endOffset 7 height 119.00: " a Path"
    7474          RenderSVGInlineText {#text} at (0,0) size 0x0
    7575        RenderSVGText {text} at (35,60) size 73x13 contains 1 chunk(s)
     
    8282          RenderSVGInlineText {#text} at (0,-10) size 112x13
    8383            chunk 1 text run 1 at (35.00,80.00) startOffset 0 endOffset 26 width 112.00: "glyph-orientation=\"180deg\""
    84       RenderSVGContainer {g} at (14.89,177.29) size 132.11x192.71 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,170.00)}]
     84      RenderSVGContainer {g} at (14.89,176) size 132.11x77 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,170.00)}]
    8585        RenderSVGContainer {use} at (14.89,177.29) size 120.11x30.43
    8686          RenderSVGContainer {g} at (14.89,177.29) size 120.11x30.43
    8787            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"]
    88         RenderSVGText {text} at (74,34) size 58x187 contains 1 chunk(s)
    89           RenderSVGTextPath {textPath} at (0,0) size 58x187
    90             RenderSVGInlineText {#text} at (3,-21) size 47x37
    91               chunk 1 (vertical) text run 1 at (74.72,34.60) startOffset 0 endOffset 5 height 85.00: "Text "
    92             RenderSVGTSpan {tspan} at (0,0) size 14x36
    93               RenderSVGInlineText {#text} at (47,8) size 14x36
    94                 chunk 1 (vertical) text run 2 at (119.61,68.60) startOffset 0 endOffset 2 height 34.00: "on"
    95             RenderSVGTSpan {tspan} at (0,0) size 9x119
    96               RenderSVGInlineText {#text} at (45,47) size 9x119
    97                 chunk 1 (vertical) text run 3 at (119.61,102.60) startOffset 0 endOffset 7 height 119.00: " a Path"
     88        RenderSVGText {text} at (75,15) size 70x40 contains 1 chunk(s)
     89          RenderSVGTextPath {textPath} at (0,0) size 70x40
     90            RenderSVGInlineText {#text} at (-5,7) size 39x24
     91              chunk 1 (vertical) text run 1 at (75.93,29.60) startOffset 0 endOffset 5 height 85.00: "Text "
     92            RenderSVGTSpan {tspan} at (0,0) size 25x24
     93              RenderSVGInlineText {#text} at (16,-9) size 25x24
     94                chunk 1 (vertical) text run 2 at (104.30,25.33) startOffset 0 endOffset 2 height 34.00: "on"
     95            RenderSVGTSpan {tspan} at (0,0) size 28x37
     96              RenderSVGInlineText {#text} at (37,-9) size 28x37
     97                chunk 1 (vertical) text run 3 at (115.14,15.51) startOffset 0 endOffset 7 height 119.00: " a Path"
    9898          RenderSVGInlineText {#text} at (0,0) size 0x0
    9999        RenderSVGText {text} at (35,60) size 73x13 contains 1 chunk(s)
     
    106106          RenderSVGInlineText {#text} at (0,-10) size 112x13
    107107            chunk 1 text run 1 at (35.00,80.00) startOffset 0 endOffset 26 width 112.00: "glyph-orientation=\"270deg\""
    108       RenderSVGContainer {g} at (146,166) size 141x87 [transform={m=((1.00,0.00)(0.00,1.00)) t=(150.00,170.00)}]
     108      RenderSVGContainer {g} at (142,164) size 145x89 [transform={m=((1.00,0.00)(0.00,1.00)) t=(150.00,170.00)}]
    109109        RenderSVGContainer {use} at (164.89,177.29) size 120.11x30.43
    110110          RenderSVGContainer {g} at (164.89,177.29) size 120.11x30.43
    111111            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"]
    112         RenderSVGText {text} at (-5,17) size 129x85 contains 1 chunk(s)
    113           RenderSVGTextPath {textPath} at (0,0) size 129x85
    114             RenderSVGInlineText {#text} at (1,-21) size 40x51
    115               chunk 1 (middle anchor, vertical) text run 1 at (-4.50,17.00) startOffset 0 endOffset 5 height 85.00: "Text "
    116             RenderSVGTSpan {tspan} at (0,0) size 30x36
    117               RenderSVGInlineText {#text} at (65,-6) size 30x36
    118                 chunk 1 (middle anchor, vertical) text run 2 at (49.23,27.16) startOffset 0 endOffset 2 height 34.00: "on"
    119             RenderSVGTSpan {tspan} at (0,0) size 46x70
    120               RenderSVGInlineText {#text} at (84,-6) size 46x70
    121                 chunk 1 (middle anchor, vertical) text run 3 at (77.22,34.60) startOffset 0 endOffset 7 height 119.00: " a Path"
     112        RenderSVGText {text} at (0,0) size 141x81 contains 1 chunk(s)
     113          RenderSVGTextPath {textPath} at (0,0) size 141x81
     114            RenderSVGInlineText {#text} at (-8,-4) size 53x42
     115              chunk 1 (middle anchor, vertical) text run 1 at (0.00,0.00) startOffset 0 endOffset 5 height 85.00: "Text "
     116            RenderSVGTSpan {tspan} at (0,0) size 35x29
     117              RenderSVGInlineText {#text} at (47,-6) size 35x29
     118                chunk 1 (middle anchor, vertical) text run 2 at (53.23,10.16) startOffset 0 endOffset 2 height 34.00: "on"
     119            RenderSVGTSpan {tspan} at (0,0) size 63x65
     120              RenderSVGInlineText {#text} at (70,10) size 63x65
     121                chunk 1 (middle anchor, vertical) text run 3 at (79.22,17.60) startOffset 0 endOffset 7 height 119.00: " a Path"
    122122          RenderSVGInlineText {#text} at (0,0) size 0x0
    123123        RenderSVGText {text} at (35,60) size 73x13 contains 1 chunk(s)
     
    130130          RenderSVGInlineText {#text} at (0,-10) size 102x13
    131131            chunk 1 text run 1 at (35.00,80.00) startOffset 0 endOffset 24 width 102.00: "glyph-orientation=\"0deg\""
    132       RenderSVGContainer {g} at (296,166) size 146x102 [transform={m=((1.00,0.00)(0.00,1.00)) t=(300.00,170.00)}]
     132      RenderSVGContainer {g} at (314.89,173) size 127.11x80 [transform={m=((1.00,0.00)(0.00,1.00)) t=(300.00,170.00)}]
    133133        RenderSVGContainer {use} at (314.89,177.29) size 120.11x30.43
    134134          RenderSVGContainer {g} at (314.89,177.29) size 120.11x30.43
    135135            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"]
    136         RenderSVGText {text} at (-5,17) size 133x102 contains 1 chunk(s)
    137           RenderSVGTextPath {textPath} at (0,0) size 133x102
    138             RenderSVGInlineText {#text} at (1,-21) size 9x85
    139               chunk 1 (end anchor, vertical) text run 1 at (-4.50,17.00) startOffset 0 endOffset 5 height 85.00: "Text "
    140             RenderSVGTSpan {tspan} at (0,0) size 26x90
    141               RenderSVGInlineText {#text} at (11,-9) size 26x90
    142                 chunk 1 (end anchor, vertical) text run 2 at (-4.00,36.62) startOffset 0 endOffset 2 height 34.00: "on"
    143             RenderSVGTSpan {tspan} at (0,0) size 100x45
    144               RenderSVGInlineText {#text} at (34,-12) size 100x45
    145                 chunk 1 (end anchor, vertical) text run 3 at (37.84,27.21) startOffset 0 endOffset 7 height 119.00: " a Path"
     136        RenderSVGText {text} at (55,11) size 83x41 contains 1 chunk(s)
     137          RenderSVGTextPath {textPath} at (0,0) size 83x41
     138            RenderSVGInlineText {#text} at (-5,-8) size 34x35
     139              chunk 1 (end anchor, vertical) text run 1 at (55.21,11.19) startOffset 0 endOffset 5 height 85.00: "Text "
     140            RenderSVGTSpan {tspan} at (0,0) size 20x21
     141              RenderSVGInlineText {#text} at (25,4) size 20x21
     142                chunk 1 (end anchor, vertical) text run 2 at (79.00,31.74) startOffset 0 endOffset 2 height 34.00: "on"
     143            RenderSVGTSpan {tspan} at (0,0) size 40x38
     144              RenderSVGInlineText {#text} at (38,-5) size 40x38
     145                chunk 1 (end anchor, vertical) text run 3 at (92.05,18.07) startOffset 0 endOffset 7 height 119.00: " a Path"
    146146          RenderSVGInlineText {#text} at (0,0) size 0x0
    147147        RenderSVGText {text} at (35,60) size 78x13 contains 1 chunk(s)
     
    154154          RenderSVGInlineText {#text} at (0,-10) size 107x13
    155155            chunk 1 text run 1 at (35.00,80.00) startOffset 0 endOffset 25 width 107.00: "glyph-orientation=\"90deg\""
    156       RenderSVGContainer {g} at (14.89,275) size 132.11x162 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,270.00)}]
     156      RenderSVGContainer {g} at (14.89,272) size 132.11x156 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,270.00)}]
    157157        RenderSVGContainer {use} at (14.89,277.29) size 120.11x30.43
    158158          RenderSVGContainer {g} at (14.89,277.29) size 120.11x30.43
    159159            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"]
    160         RenderSVGText {text} at (46,26) size 85x162 contains 1 chunk(s)
    161           RenderSVGTextPath {textPath} at (0,0) size 85x162
    162             RenderSVGInlineText {#text} at (1,-21) size 58x44
    163               chunk 1 (vertical) text run 1 at (46.63,26.40) startOffset 0 endOffset 5 height 85.00: "Text "
    164             RenderSVGTSpan {tspan} at (0,0) size 15x36
    165               RenderSVGInlineText {#text} at (71,-18) size 15x36
    166                 chunk 1 (vertical) text run 2 at (117.54,35.46) startOffset 0 endOffset 2 height 34.00: "on"
    167             RenderSVGTSpan {tspan} at (0,0) size 9x120
    168               RenderSVGInlineText {#text} at (71,21) size 9x120
    169                 chunk 1 (vertical) text run 3 at (117.54,69.46) startOffset 0 endOffset 7 height 119.00: " a Path"
     160        RenderSVGText {text} at (51,9) size 89x156 contains 1 chunk(s)
     161          RenderSVGTextPath {textPath} at (0,0) size 89x156
     162            RenderSVGInlineText {#text} at (-10,-7) size 74x37
     163              chunk 1 (vertical) text run 1 at (51.13,9.40) startOffset 0 endOffset 5 height 85.00: "Text "
     164            RenderSVGTSpan {tspan} at (0,0) size 19x31
     165              RenderSVGInlineText {#text} at (57,-7) size 19x31
     166                chunk 1 (vertical) text run 2 at (121.54,18.46) startOffset 0 endOffset 2 height 34.00: "on"
     167            RenderSVGTSpan {tspan} at (0,0) size 17x108
     168              RenderSVGInlineText {#text} at (62,41) size 17x108
     169                chunk 1 (vertical) text run 3 at (121.54,52.46) startOffset 0 endOffset 7 height 119.00: " a Path"
    170170          RenderSVGInlineText {#text} at (0,0) size 0x0
    171171        RenderSVGText {text} at (35,60) size 65x13 contains 1 chunk(s)
     
    178178          RenderSVGInlineText {#text} at (0,-10) size 112x13
    179179            chunk 1 text run 1 at (35.00,80.00) startOffset 0 endOffset 26 width 112.00: "glyph-orientation=\"180deg\""
    180       RenderSVGContainer {g} at (146,266) size 139x85 [transform={m=((1.00,0.00)(0.00,1.00)) t=(150.00,270.00)}]
     180      RenderSVGContainer {g} at (150,262) size 135x81 [transform={m=((1.00,0.00)(0.00,1.00)) t=(150.00,270.00)}]
    181181        RenderSVGContainer {use} at (164.89,277.29) size 120.11x30.43
    182182          RenderSVGContainer {g} at (164.89,277.29) size 120.11x30.43
    183183            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"]
    184         RenderSVGText {text} at (-5,17) size 127x85 contains 1 chunk(s)
    185           RenderSVGTextPath {textPath} at (0,0) size 127x85
    186             RenderSVGInlineText {#text} at (1,-21) size 9x85
    187               chunk 1 (middle anchor, vertical) text run 1 at (-4.50,17.00) startOffset 0 endOffset 5 height 85.00: "Text "
    188             RenderSVGTSpan {tspan} at (0,0) size 34x29
    189               RenderSVGInlineText {#text} at (15,-16) size 34x29
    190                 chunk 1 (middle anchor, vertical) text run 2 at (17.77,29.66) startOffset 0 endOffset 2 height 34.00: "on"
    191             RenderSVGTSpan {tspan} at (0,0) size 73x44
    192               RenderSVGInlineText {#text} at (55,-12) size 73x44
    193                 chunk 1 (middle anchor, vertical) text run 3 at (49.13,26.40) startOffset 0 endOffset 7 height 119.00: " a Path"
     184        RenderSVGText {text} at (0,0) size 84x47 contains 1 chunk(s)
     185          RenderSVGTextPath {textPath} at (0,0) size 84x47
     186            RenderSVGInlineText {#text} at (0,-8) size 37x41
     187              chunk 1 (middle anchor, vertical) text run 1 at (0.00,0.00) startOffset 0 endOffset 5 height 85.00: "Text "
     188            RenderSVGTSpan {tspan} at (0,0) size 24x23
     189              RenderSVGInlineText {#text} at (20,-8) size 24x23
     190                chunk 1 (middle anchor, vertical) text run 2 at (30.83,11.21) startOffset 0 endOffset 2 height 34.00: "on"
     191            RenderSVGTSpan {tspan} at (0,0) size 41x39
     192              RenderSVGInlineText {#text} at (43,0) size 41x39
     193                chunk 1 (middle anchor, vertical) text run 3 at (43.21,8.90) startOffset 0 endOffset 7 height 119.00: " a Path"
    194194          RenderSVGInlineText {#text} at (0,0) size 0x0
    195195        RenderSVGText {text} at (35,60) size 65x13 contains 1 chunk(s)
     
    199199          RenderSVGInlineText {#text} at (0,-10) size 86x13
    200200            chunk 1 text run 1 at (35.00,70.00) startOffset 0 endOffset 20 width 86.00: "text-anchor=\"middle\""
    201       RenderSVGContainer {g} at (296,266) size 146x204 [transform={m=((1.00,0.00)(0.00,1.00)) t=(300.00,270.00)}]
     201      RenderSVGContainer {g} at (300,261) size 142x92 [transform={m=((1.00,0.00)(0.00,1.00)) t=(300.00,270.00)}]
    202202        RenderSVGContainer {use} at (314.89,277.29) size 120.11x30.43
    203203          RenderSVGContainer {g} at (314.89,277.29) size 120.11x30.43
    204204            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"]
    205         RenderSVGText {text} at (-5,17) size 39x204 contains 1 chunk(s)
    206           RenderSVGTextPath {textPath} at (0,0) size 39x204
    207             RenderSVGInlineText {#text} at (1,-21) size 9x85
    208               chunk 1 (end anchor, vertical) text run 1 at (-4.50,17.00) startOffset 0 endOffset 5 height 85.00: "Text "
    209             RenderSVGTSpan {tspan} at (0,0) size 8x35
    210               RenderSVGInlineText {#text} at (11,63) size 8x35
    211                 chunk 1 (end anchor, vertical) text run 2 at (-4.00,102.00) startOffset 0 endOffset 2 height 34.00: "on"
    212             RenderSVGTSpan {tspan} at (0,0) size 39x193
    213               RenderSVGInlineText {#text} at (1,-10) size 39x193
    214                 chunk 1 (end anchor, vertical) text run 3 at (-4.00,29.66) startOffset 0 endOffset 7 height 119.00: " a Path"
     205        RenderSVGText {text} at (0,0) size 42x76 contains 1 chunk(s)
     206          RenderSVGTextPath {textPath} at (0,0) size 42x76
     207            RenderSVGInlineText {#text} at (0,-9) size 9x45
     208              chunk 1 (end anchor, vertical) text run 1 at (0.00,0.00) startOffset 0 endOffset 5 height 85.00: "Text "
     209            RenderSVGTSpan {tspan} at (0,0) size 8x25
     210              RenderSVGInlineText {#text} at (0,13) size 8x25
     211                chunk 1 (end anchor, vertical) text run 2 at (0.00,32.00) startOffset 0 endOffset 2 height 34.00: "on"
     212            RenderSVGTSpan {tspan} at (0,0) size 42x64
     213              RenderSVGInlineText {#text} at (0,3) size 42x64
     214                chunk 1 (end anchor, vertical) text run 3 at (0.00,15.18) startOffset 0 endOffset 7 height 119.00: " a Path"
    215215          RenderSVGInlineText {#text} at (0,0) size 0x0
    216216        RenderSVGText {text} at (35,60) size 65x13 contains 1 chunk(s)
     
    223223          RenderSVGInlineText {#text} at (0,-10) size 107x13
    224224            chunk 1 text run 1 at (35.00,80.00) startOffset 0 endOffset 25 width 107.00: "glyph-orientation=\"90deg\""
    225       RenderSVGContainer {g} at (18,370.67) size 132x262.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,370.00)}]
     225      RenderSVGContainer {g} at (22,370.67) size 118x87.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,370.00)}]
    226226        RenderSVGContainer {use} at (39.70,370.67) size 90.60x49.33
    227227          RenderSVGContainer {g} at (39.70,370.67) size 90.60x49.33
    228228            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"]
    229         RenderSVGText {text} at (27,29) size 132x257 contains 1 chunk(s)
    230           RenderSVGTextPath {textPath} at (0,0) size 132x257
    231             RenderSVGTSpan {tspan} at (0,0) size 93x43
    232               RenderSVGInlineText {#text} at (-19,-23) size 93x43
    233                 chunk 1 (vertical) text run 1 at (27.93,29.80) startOffset 0 endOffset 5 height 85.00: "super"
    234             RenderSVGInlineText {#text} at (75,-12) size 38x84
    235               chunk 1 (vertical) text run 2 at (99.82,36.19) startOffset 0 endOffset 5 height 85.00: " and "
    236             RenderSVGTSpan {tspan} at (0,0) size 19x44
    237               RenderSVGInlineText {#text} at (92,74) size 19x44
    238                 chunk 1 (vertical) text run 3 at (115.84,114.39) startOffset 0 endOffset 3 height 51.00: "sub"
    239             RenderSVGInlineText {#text} at (97,114) size 8x120
    240               chunk 1 (vertical) text run 4 at (124.34,165.39) startOffset 0 endOffset 7 height 119.00: "scripts"
     229        RenderSVGText {text} at (30,12) size 118x48 contains 1 chunk(s)
     230          RenderSVGTextPath {textPath} at (0,0) size 118x48
     231            RenderSVGTSpan {tspan} at (0,0) size 36x42
     232              RenderSVGInlineText {#text} at (-18,-8) size 36x42
     233                chunk 1 (vertical) text run 1 at (30.11,22.60) startOffset 0 endOffset 5 height 85.00: "super"
     234            RenderSVGInlineText {#text} at (13,-9) size 36x23
     235              chunk 1 (vertical) text run 2 at (46.80,12.55) startOffset 0 endOffset 5 height 85.00: " and "
     236            RenderSVGTSpan {tspan} at (0,0) size 23x21
     237              RenderSVGInlineText {#text} at (47,0) size 23x21
     238                chunk 1 (vertical) text run 3 at (77.44,12.55) startOffset 0 endOffset 3 height 51.00: "sub"
     239            RenderSVGInlineText {#text} at (66,-3) size 34x42
     240              chunk 1 (vertical) text run 4 at (98.71,17.58) startOffset 0 endOffset 7 height 119.00: "scripts"
    241241          RenderSVGInlineText {#text} at (0,0) size 0x0
    242242        RenderSVGText {text} at (20,65) size 88x13 contains 1 chunk(s)
     
    249249          RenderSVGInlineText {#text} at (0,-10) size 100x13
    250250            chunk 1 text run 1 at (20.00,85.00) startOffset 0 endOffset 24 width 100.00: "glyph-orientation=\"auto\""
    251       RenderSVGContainer {g} at (306,370.67) size 133x279.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(300.00,370.00)}]
     251      RenderSVGContainer {g} at (318,370.67) size 109x77.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(300.00,370.00)}]
    252252        RenderSVGContainer {use} at (329.70,370.67) size 90.60x49.33
    253253          RenderSVGContainer {g} at (329.70,370.67) size 90.60x49.33
    254254            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"]
    255         RenderSVGText {text} at (26,29) size 133x273 contains 1 chunk(s)
    256           RenderSVGTextPath {textPath} at (0,0) size 133x273
    257             RenderSVGTSpan {tspan} at (0,0) size 133x66
    258               RenderSVGInlineText {#text} at (-20,-22) size 133x66
    259                 chunk 1 (vertical) text run 1 at (26.93,29.80) startOffset 0 endOffset 8 height 136.00: "positive"
    260             RenderSVGInlineText {#text} at (86,29) size 9x86
    261               chunk 1 (vertical) text run 2 at (112.84,80.39) startOffset 0 endOffset 5 height 85.00: " and "
    262             RenderSVGTSpan {tspan} at (0,0) size 9x137
    263               RenderSVGInlineText {#text} at (83,114) size 9x137
    264                 chunk 1 (vertical) text run 3 at (112.84,165.39) startOffset 0 endOffset 8 height 136.00: "negative"
     255        RenderSVGText {text} at (30,12) size 109x54 contains 1 chunk(s)
     256          RenderSVGTextPath {textPath} at (0,0) size 109x54
     257            RenderSVGTSpan {tspan} at (0,0) size 46x45
     258              RenderSVGInlineText {#text} at (-12,-10) size 46x45
     259                chunk 1 (vertical) text run 1 at (30.20,15.88) startOffset 0 endOffset 8 height 136.00: "positive"
     260            RenderSVGInlineText {#text} at (30,-9) size 35x20
     261              chunk 1 (vertical) text run 2 at (60.59,12.52) startOffset 0 endOffset 5 height 85.00: " and "
     262            RenderSVGTSpan {tspan} at (0,0) size 38x47
     263              RenderSVGInlineText {#text} at (59,-3) size 38x47
     264                chunk 1 (vertical) text run 3 at (93.14,15.35) startOffset 0 endOffset 8 height 136.00: "negative"
    265265          RenderSVGInlineText {#text} at (0,0) size 0x0
    266266        RenderSVGText {text} at (20,65) size 97x13 contains 1 chunk(s)
     
    270270          RenderSVGInlineText {#text} at (0,-10) size 100x13
    271271            chunk 1 text run 1 at (20.00,75.00) startOffset 0 endOffset 24 width 100.00: "glyph-orientation=\"auto\""
    272       RenderSVGContainer {g} at (180,358.75) size 108x266.25 [transform={m=((1.00,0.00)(0.00,1.00)) t=(180.00,370.00)}]
    273         RenderSVGContainer {g} at (183.75,358.75) size 104.25x266.25 [transform={m=((0.75,0.00)(0.00,0.75)) t=(0.00,0.00)}]
     272      RenderSVGContainer {g} at (180,359.50) size 100x123.50 [transform={m=((1.00,0.00)(0.00,1.00)) t=(180.00,370.00)}]
     273        RenderSVGContainer {g} at (180,359.50) size 90.23x90 [transform={m=((0.75,0.00)(0.00,0.75)) t=(0.00,0.00)}]
    274274          RenderSVGContainer {use} at (202.27,370.50) size 67.95x37
    275275            RenderSVGContainer {g} at (202.27,370.50) size 67.95x37
    276276              RenderPath {path} at (202.27,370.50) size 67.95x37 [transform={m=((0.30,0.00)(0.00,0.50)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF] [stroke width=2.00]}] [data="M100.00,100.00C100.00,0.00,400.00,0.00,400.00,100.00"]
    277           RenderSVGText {text} at (5,3) size 139x355 contains 1 chunk(s)
    278             RenderSVGInlineText {#text} at (0,-18) size 10x276
    279               chunk 1 (vertical) text run 1 at (5.00,3.00) startOffset 0 endOffset 12 height 276.00: "before path "
    280             RenderSVGTextPath {textPath} at (0,0) size 134x106
    281               RenderSVGInlineText {#text} at (5,3) size 134x106
    282                 chunk 1 (vertical) text run 2 at (33.14,35.71) startOffset 0 endOffset 7 height 161.00: "on path"
    283             RenderSVGInlineText {#text} at (107,106) size 10x231
    284               chunk 1 (vertical) text run 3 at (112.22,127.87) startOffset 0 endOffset 10 height 230.00: "after path"
     277          RenderSVGText {text} at (-13,-15) size 91x120 contains 1 chunk(s)
     278            RenderSVGInlineText {#text} at (13,1) size 23x96
     279              chunk 1 (vertical) text run 1 at (-13.00,-15.00) startOffset 0 endOffset 12 height 276.00: "before path "
     280            RenderSVGTextPath {textPath} at (0,0) size 65x38
     281              RenderSVGInlineText {#text} at (36,15) size 65x38
     282                chunk 1 (vertical) text run 2 at (34.39,12.55) startOffset 0 endOffset 7 height 161.00: "on path"
     283            RenderSVGInlineText {#text} at (80,42) size 24x79
     284              chunk 1 (vertical) text run 3 at (54.56,27.55) startOffset 0 endOffset 10 height 230.00: "after path"
    285285        RenderSVGText {text} at (0,100) size 98x13 contains 1 chunk(s)
    286286          RenderSVGInlineText {#text} at (0,-10) size 98x13
  • trunk/LayoutTests/svg/text/text-align-05-b-expected.txt

    r26504 r27680  
    33layer at (0,0) size 800x600
    44  RenderSVGRoot {svg} at (0.83,0.83) size 798.33x598.33
    5     RenderSVGContainer {g} at (8.33,6.67) size 775x528.33
     5    RenderSVGContainer {g} at (8.33,6.67) size 775x518.33
    66      RenderSVGText {text} at (5,40) size 465x44 contains 1 chunk(s)
    77        RenderSVGInlineText {#text} at (0,-36) size 465x44
    88          chunk 1 text run 1 at (5.00,40.00) startOffset 0 endOffset 29 width 465.00: "Test 'text-anchor' (vertical)"
    9       RenderSVGContainer {g} at (253.33,95) size 195x440
    10         RenderSVGContainer {g} at (253.33,95) size 195x440 [transform={m=((1.00,0.00)(0.00,1.00)) t=(160.00,150.00)}]
    11           RenderSVGContainer {g} at (253.33,245) size 28.33x290
     9      RenderSVGContainer {g} at (253.33,85) size 195x440
     10        RenderSVGContainer {g} at (253.33,85) size 195x440 [transform={m=((1.00,0.00)(0.00,1.00)) t=(160.00,150.00)}]
     11          RenderSVGContainer {g} at (253.33,245) size 28.33x280
    1212            RenderPath {circle} at (261.67,245) size 10x10 [fill={[type=SOLID] [color=#000000]}] [data="M3.00,0.00L2.99,0.19L2.98,0.38L2.95,0.56L2.91,0.75L2.85,0.93L2.79,1.10L2.71,1.28L2.63,1.45L2.53,1.61L2.43,1.76L2.31,1.91L2.19,2.05L2.05,2.19L1.91,2.31L1.76,2.43L1.61,2.53L1.45,2.63L1.28,2.71L1.10,2.79L0.93,2.85L0.75,2.91L0.56,2.95L0.38,2.98L0.19,2.99L-0.00,3.00L-0.19,2.99L-0.38,2.98L-0.56,2.95L-0.75,2.91L-0.93,2.85L-1.10,2.79L-1.28,2.71L-1.45,2.63L-1.61,2.53L-1.76,2.43L-1.91,2.31L-2.05,2.19L-2.19,2.05L-2.31,1.91L-2.43,1.76L-2.53,1.61L-2.63,1.45L-2.71,1.28L-2.79,1.10L-2.85,0.93L-2.91,0.75L-2.95,0.56L-2.98,0.38L-2.99,0.19L-3.00,-0.00L-2.99,-0.19L-2.98,-0.38L-2.95,-0.56L-2.91,-0.75L-2.85,-0.93L-2.79,-1.10L-2.71,-1.28L-2.63,-1.45L-2.53,-1.61L-2.43,-1.76L-2.31,-1.91L-2.19,-2.05L-2.05,-2.19L-1.91,-2.31L-1.76,-2.43L-1.61,-2.53L-1.45,-2.63L-1.28,-2.71L-1.10,-2.79L-0.93,-2.85L-0.75,-2.91L-0.56,-2.95L-0.38,-2.98L-0.19,-2.99L0.00,-3.00L0.19,-2.99L0.38,-2.98L0.56,-2.95L0.75,-2.91L0.93,-2.85L1.10,-2.79L1.28,-2.71L1.45,-2.63L1.61,-2.53L1.76,-2.43L1.91,-2.31L2.05,-2.19L2.19,-2.05L2.31,-1.91L2.43,-1.76L2.53,-1.61L2.63,-1.45L2.71,-1.28L2.79,-1.10L2.85,-0.93L2.91,-0.75L2.95,-0.56L2.98,-0.38L2.99,-0.19"]
    13             RenderSVGText {text} at (-9,33) size 17x165 contains 1 chunk(s)
     13            RenderSVGText {text} at (-9,27) size 17x165 contains 1 chunk(s)
    1414              RenderSVGInlineText {#text} at (1,-27) size 17x165
    15                 chunk 1 (vertical) text run 1 at (-8.50,33.00) startOffset 0 endOffset 5 height 165.00: "start"
    16           RenderSVGContainer {g} at (330,95) size 41.67x330 [transform={m=((1.00,0.00)(0.00,1.00)) t=(50.00,0.00)}]
     15                chunk 1 (vertical) text run 1 at (-8.50,27.00) startOffset 0 endOffset 5 height 165.00: "start"
     16          RenderSVGContainer {g} at (330,85) size 41.67x330 [transform={m=((1.00,0.00)(0.00,1.00)) t=(50.00,0.00)}]
    1717            RenderPath {circle} at (345,245) size 10x10 [fill={[type=SOLID] [color=#000000]}] [data="M3.00,0.00L2.99,0.19L2.98,0.38L2.95,0.56L2.91,0.75L2.85,0.93L2.79,1.10L2.71,1.28L2.63,1.45L2.53,1.61L2.43,1.76L2.31,1.91L2.19,2.05L2.05,2.19L1.91,2.31L1.76,2.43L1.61,2.53L1.45,2.63L1.28,2.71L1.10,2.79L0.93,2.85L0.75,2.91L0.56,2.95L0.38,2.98L0.19,2.99L-0.00,3.00L-0.19,2.99L-0.38,2.98L-0.56,2.95L-0.75,2.91L-0.93,2.85L-1.10,2.79L-1.28,2.71L-1.45,2.63L-1.61,2.53L-1.76,2.43L-1.91,2.31L-2.05,2.19L-2.19,2.05L-2.31,1.91L-2.43,1.76L-2.53,1.61L-2.63,1.45L-2.71,1.28L-2.79,1.10L-2.85,0.93L-2.91,0.75L-2.95,0.56L-2.98,0.38L-2.99,0.19L-3.00,-0.00L-2.99,-0.19L-2.98,-0.38L-2.95,-0.56L-2.91,-0.75L-2.85,-0.93L-2.79,-1.10L-2.71,-1.28L-2.63,-1.45L-2.53,-1.61L-2.43,-1.76L-2.31,-1.91L-2.19,-2.05L-2.05,-2.19L-1.91,-2.31L-1.76,-2.43L-1.61,-2.53L-1.45,-2.63L-1.28,-2.71L-1.10,-2.79L-0.93,-2.85L-0.75,-2.91L-0.56,-2.95L-0.38,-2.98L-0.19,-2.99L0.00,-3.00L0.19,-2.99L0.38,-2.98L0.56,-2.95L0.75,-2.91L0.93,-2.85L1.10,-2.79L1.28,-2.71L1.45,-2.63L1.61,-2.53L1.76,-2.43L1.91,-2.31L2.05,-2.19L2.19,-2.05L2.31,-1.91L2.43,-1.76L2.53,-1.61L2.63,-1.45L2.71,-1.28L2.79,-1.10L2.85,-0.93L2.91,-0.75L2.95,-0.56L2.98,-0.38L2.99,-0.19"]
    18             RenderSVGText {text} at (-13,-66) size 25x198 contains 1 chunk(s)
     18            RenderSVGText {text} at (-13,-72) size 25x198 contains 1 chunk(s)
    1919              RenderSVGInlineText {#text} at (1,-27) size 25x198
    20                 chunk 1 (middle anchor, vertical) text run 1 at (-12.50,-66.00) startOffset 0 endOffset 6 height 198.00: "middle"
    21           RenderSVGContainer {g} at (420.00,95) size 28.33x165 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,0.00)}]
     20                chunk 1 (middle anchor, vertical) text run 1 at (-12.50,-72.00) startOffset 0 endOffset 6 height 198.00: "middle"
     21          RenderSVGContainer {g} at (420.00,85) size 28.33x170 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,0.00)}]
    2222            RenderPath {circle} at (428.33,245) size 10x10 [fill={[type=SOLID] [color=#000000]}] [data="M3.00,0.00L2.99,0.19L2.98,0.38L2.95,0.56L2.91,0.75L2.85,0.93L2.79,1.10L2.71,1.28L2.63,1.45L2.53,1.61L2.43,1.76L2.31,1.91L2.19,2.05L2.05,2.19L1.91,2.31L1.76,2.43L1.61,2.53L1.45,2.63L1.28,2.71L1.10,2.79L0.93,2.85L0.75,2.91L0.56,2.95L0.38,2.98L0.19,2.99L-0.00,3.00L-0.19,2.99L-0.38,2.98L-0.56,2.95L-0.75,2.91L-0.93,2.85L-1.10,2.79L-1.28,2.71L-1.45,2.63L-1.61,2.53L-1.76,2.43L-1.91,2.31L-2.05,2.19L-2.19,2.05L-2.31,1.91L-2.43,1.76L-2.53,1.61L-2.63,1.45L-2.71,1.28L-2.79,1.10L-2.85,0.93L-2.91,0.75L-2.95,0.56L-2.98,0.38L-2.99,0.19L-3.00,-0.00L-2.99,-0.19L-2.98,-0.38L-2.95,-0.56L-2.91,-0.75L-2.85,-0.93L-2.79,-1.10L-2.71,-1.28L-2.63,-1.45L-2.53,-1.61L-2.43,-1.76L-2.31,-1.91L-2.19,-2.05L-2.05,-2.19L-1.91,-2.31L-1.76,-2.43L-1.61,-2.53L-1.45,-2.63L-1.28,-2.71L-1.10,-2.79L-0.93,-2.85L-0.75,-2.91L-0.56,-2.95L-0.38,-2.98L-0.19,-2.99L0.00,-3.00L0.19,-2.99L0.38,-2.98L0.56,-2.95L0.75,-2.91L0.93,-2.85L1.10,-2.79L1.28,-2.71L1.45,-2.63L1.61,-2.53L1.76,-2.43L1.91,-2.31L2.05,-2.19L2.19,-2.05L2.31,-1.91L2.43,-1.76L2.53,-1.61L2.63,-1.45L2.71,-1.28L2.79,-1.10L2.85,-0.93L2.91,-0.75L2.95,-0.56L2.98,-0.38L2.99,-0.19"]
    23             RenderSVGText {text} at (-9,-66) size 17x99 contains 1 chunk(s)
     23            RenderSVGText {text} at (-9,-72) size 17x99 contains 1 chunk(s)
    2424              RenderSVGInlineText {#text} at (1,-27) size 17x99
    25                 chunk 1 (end anchor, vertical) text run 1 at (-8.50,-66.00) startOffset 0 endOffset 3 height 99.00: "end"
     25                chunk 1 (end anchor, vertical) text run 1 at (-8.50,-72.00) startOffset 0 endOffset 3 height 99.00: "end"
    2626    RenderSVGText {text} at (10,340) size 264x46 contains 1 chunk(s)
    2727      RenderSVGInlineText {#text} at (0,-36) size 264x46
  • trunk/LayoutTests/svg/text/text-align-06-b-expected.txt

    r26504 r27680  
    22  RenderView at (0,0) size 800x600
    33layer at (0,0) size 800x600
    4   RenderSVGRoot {svg} at (0,0.83) size 801.67x604.17
    5     RenderSVGContainer {g} at (0,6.67) size 801.67x598.33
     4  RenderSVGRoot {svg} at (0,0.83) size 801.67x598.33
     5    RenderSVGContainer {g} at (0,6.67) size 801.67x588.33
    66      RenderSVGText {text} at (0,40) size 481x44 contains 1 chunk(s)
    77        RenderSVGInlineText {#text} at (0,-36) size 481x44
    88          chunk 1 text run 1 at (0.00,40.00) startOffset 0 endOffset 31 width 481.00: "Test 'baseline-shift' (vertic.)"
    9       RenderSVGContainer {g} at (136.67,110) size 488.33x495
    10         RenderSVGContainer {g} at (136.67,110) size 488.33x495 [transform={m=((1.00,0.00)(0.00,1.00)) t=(90.00,60.00)}]
    11           RenderSVGText {text} at (-9,33) size 24x165 contains 1 chunk(s)
     9      RenderSVGContainer {g} at (136.67,100) size 488.33x495
     10        RenderSVGContainer {g} at (136.67,100) size 488.33x495 [transform={m=((1.00,0.00)(0.00,1.00)) t=(90.00,60.00)}]
     11          RenderSVGText {text} at (-9,27) size 24x165 contains 1 chunk(s)
    1212            RenderSVGInlineText {#text} at (1,-27) size 17x66
    13               chunk 1 (vertical) text run 1 at (-8.50,33.00) startOffset 0 endOffset 2 height 66.00: "te"
     13              chunk 1 (vertical) text run 1 at (-8.50,27.00) startOffset 0 endOffset 2 height 66.00: "te"
    1414            RenderSVGTSpan {tspan} at (0,0) size 17x33
    1515              RenderSVGInlineText {#text} at (8,39) size 17x33
    16                 chunk 1 (vertical) text run 2 at (-1.50,99.00) startOffset 0 endOffset 1 height 33.00: "7"
     16                chunk 1 (vertical) text run 2 at (-1.50,93.00) startOffset 0 endOffset 1 height 33.00: "7"
    1717            RenderSVGInlineText {#text} at (2,72) size 15x66
    18               chunk 1 (vertical) text run 3 at (-7.50,132.00) startOffset 0 endOffset 2 height 66.00: "xt"
    19           RenderSVGText {text} at (45,33) size 44x264 contains 1 chunk(s)
     18              chunk 1 (vertical) text run 3 at (-7.50,126.00) startOffset 0 endOffset 2 height 66.00: "xt"
     19          RenderSVGText {text} at (45,27) size 44x264 contains 1 chunk(s)
    2020            RenderSVGInlineText {#text} at (26,-27) size 18x66
    21               chunk 1 (vertical) text run 1 at (71.50,33.00) startOffset 0 endOffset 2 height 66.00: "te"
     21              chunk 1 (vertical) text run 1 at (71.50,27.00) startOffset 0 endOffset 2 height 66.00: "te"
    2222            RenderSVGTSpan {tspan} at (0,0) size 28x132
    2323              RenderSVGInlineText {#text} at (0,39) size 28x132
    24                 chunk 1 (vertical) text run 2 at (45.50,99.00) startOffset 0 endOffset 4 height 132.00: "-70%"
     24                chunk 1 (vertical) text run 2 at (45.50,93.00) startOffset 0 endOffset 4 height 132.00: "-70%"
    2525            RenderSVGInlineText {#text} at (27,171) size 16x66
    26               chunk 1 (vertical) text run 3 at (72.50,231.00) startOffset 0 endOffset 2 height 66.00: "xt"
    27           RenderSVGText {text} at (155,33) size 34x231 contains 1 chunk(s)
     26              chunk 1 (vertical) text run 3 at (72.50,225.00) startOffset 0 endOffset 2 height 66.00: "xt"
     27          RenderSVGText {text} at (155,27) size 34x231 contains 1 chunk(s)
    2828            RenderSVGInlineText {#text} at (16,-27) size 18x66
    29               chunk 1 (vertical) text run 1 at (171.50,33.00) startOffset 0 endOffset 2 height 66.00: "te"
     29              chunk 1 (vertical) text run 1 at (171.50,27.00) startOffset 0 endOffset 2 height 66.00: "te"
    3030            RenderSVGTSpan {tspan} at (0,0) size 17x99
    3131              RenderSVGInlineText {#text} at (0,39) size 17x99
    32                 chunk 1 (vertical) text run 2 at (155.00,99.00) startOffset 0 endOffset 3 height 99.00: "sub"
     32                chunk 1 (vertical) text run 2 at (155.00,93.00) startOffset 0 endOffset 3 height 99.00: "sub"
    3333            RenderSVGTSpan {tspan} at (0,0) size 16x33
    3434              RenderSVGInlineText {#text} at (17,138) size 16x33
    35                 chunk 1 (vertical) text run 3 at (172.50,198.00) startOffset 0 endOffset 1 height 33.00: "x"
     35                chunk 1 (vertical) text run 3 at (172.50,192.00) startOffset 0 endOffset 1 height 33.00: "x"
    3636            RenderSVGInlineText {#text} at (21,171) size 8x33
    37               chunk 1 (vertical) text run 4 at (176.00,231.00) startOffset 0 endOffset 1 height 33.00: "t"
    38           RenderSVGText {text} at (251,33) size 34x297 contains 1 chunk(s)
     37              chunk 1 (vertical) text run 4 at (176.00,225.00) startOffset 0 endOffset 1 height 33.00: "t"
     38          RenderSVGText {text} at (251,27) size 34x297 contains 1 chunk(s)
    3939            RenderSVGInlineText {#text} at (0,-27) size 18x66
    40               chunk 1 (vertical) text run 1 at (251.50,33.00) startOffset 0 endOffset 2 height 66.00: "te"
     40              chunk 1 (vertical) text run 1 at (251.50,27.00) startOffset 0 endOffset 2 height 66.00: "te"
    4141            RenderSVGTSpan {tspan} at (0,0) size 17x165
    4242              RenderSVGInlineText {#text} at (17,39) size 17x165
    43                 chunk 1 (vertical) text run 2 at (268.00,99.00) startOffset 0 endOffset 5 height 165.00: "super"
     43                chunk 1 (vertical) text run 2 at (268.00,93.00) startOffset 0 endOffset 5 height 165.00: "super"
    4444            RenderSVGTSpan {tspan} at (0,0) size 16x33
    4545              RenderSVGInlineText {#text} at (1,204) size 16x33
    46                 chunk 1 (vertical) text run 3 at (252.50,264.00) startOffset 0 endOffset 1 height 33.00: "x"
     46                chunk 1 (vertical) text run 3 at (252.50,258.00) startOffset 0 endOffset 1 height 33.00: "x"
    4747            RenderSVGInlineText {#text} at (5,237) size 8x33
    48               chunk 1 (vertical) text run 4 at (256.00,297.00) startOffset 0 endOffset 1 height 33.00: "t"
     48              chunk 1 (vertical) text run 4 at (256.00,291.00) startOffset 0 endOffset 1 height 33.00: "t"
    4949    RenderSVGText {text} at (10,340) size 264x46 contains 1 chunk(s)
    5050      RenderSVGInlineText {#text} at (0,-36) size 264x46
  • trunk/LayoutTests/svg/text/text-path-01-b-expected.checksum

    r26517 r27680  
    1 1ef25584f31026a8a8473d7e34a6df93
     13d2b7f78eb78ba2c082b02f3e05feabd
  • trunk/WebCore/ChangeLog

    r27677 r27680  
     12007-11-10  Nikolas Zimmermann  <zimmermann@kde.org>
     2
     3        Reviewed by Eric.
     4
     5        Fixes: http://bugs.webkit.org/show_bug.cgi?id=15937 (Add glyph-orientation-horizontal/vertical support)
     6        Fixes: http://bugs.webkit.org/show_bug.cgi?id=13971 (text-anchor support on vertical text seems slightly off)
     7
     8        Add glyph-orientation-* support for text & textPath. (90/180/270 and 'auto')
     9        Also fix all vertical text handling - for text & textPath! (especially latin1 characters auto orientation in vertical writing modes)
     10
     11        * WebCore.pro: Add platform/UnicodeRange.cpp to build
     12        * WebCore.xcodeproj/project.pbxproj: Dito.
     13        * rendering/SVGCharacterLayoutInfo.cpp: Respect orientationShiftX/Y & angle in characterTransform()
     14        (WebCore::SVGChar::characterTransform):
     15        * rendering/SVGCharacterLayoutInfo.h: New variables.
     16        (WebCore::SVGCharOnPath::SVGCharOnPath):
     17        (WebCore::SVGChar::SVGChar):
     18        * rendering/SVGRootInlineBox.cpp: Added glyph-orientation-* handling.
     19        (WebCore::glyphOrientationToAngle):
     20        (WebCore::glyphOrientationIsMultiplyOf180Degrees):
     21        (WebCore::calculateGlyphAdvanceAndShiftRespectingOrientation):
     22        (WebCore::cummulatedHeightOfInlineBoxCharacterRange):
     23        (WebCore::cummulatedWidthOrHeightOfTextChunk):
     24        (WebCore::SVGRootInlineBox::buildLayoutInformationForTextBox):
     25
    1262007-11-10  Timothy Hatcher  <timothy@apple.com>
    227
  • trunk/WebCore/WebCore.pro

    r27598 r27680  
    701701    platform/TextStream.cpp \
    702702    platform/Timer.cpp \
     703    platform/UnicodeRange.cpp \
    703704    platform/Widget.cpp \
    704705    rendering/AutoTableLayout.cpp \
  • trunk/WebCore/WebCore.xcodeproj/project.pbxproj

    r27598 r27680  
    29262926                B275358E0B053A66002CE64F /* IconMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = B275358D0B053A66002CE64F /* IconMac.mm */; };
    29272927                B277B4040B22F37C0004BEC6 /* GraphicsContextMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = B277B4030B22F37C0004BEC6 /* GraphicsContextMac.mm */; };
     2928                B287B22E0CE66A820054D390 /* UnicodeRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B287B22C0CE66A820054D390 /* UnicodeRange.cpp */; };
     2929                B287B22F0CE66A820054D390 /* UnicodeRange.h in Headers */ = {isa = PBXBuildFile; fileRef = B287B22D0CE66A820054D390 /* UnicodeRange.h */; };
    29282930                B297BC700B3C14CF0045A590 /* JSSVGPathSegListCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B297BC6F0B3C14CF0045A590 /* JSSVGPathSegListCustom.cpp */; };
    29292931                B2A015A80AF6CD53006BCE0E /* GraphicsContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2A015920AF6CD53006BCE0E /* GraphicsContext.cpp */; };
     
    67876789                B275358D0B053A66002CE64F /* IconMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = IconMac.mm; sourceTree = "<group>"; };
    67886790                B277B4030B22F37C0004BEC6 /* GraphicsContextMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = GraphicsContextMac.mm; sourceTree = "<group>"; };
     6791                B287B22C0CE66A820054D390 /* UnicodeRange.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = UnicodeRange.cpp; sourceTree = "<group>"; };
     6792                B287B22D0CE66A820054D390 /* UnicodeRange.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = UnicodeRange.h; sourceTree = "<group>"; };
    67896793                B297BC6F0B3C14CF0045A590 /* JSSVGPathSegListCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGPathSegListCustom.cpp; sourceTree = "<group>"; };
    67906794                B2A015920AF6CD53006BCE0E /* GraphicsContext.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = GraphicsContext.cpp; sourceTree = "<group>"; };
     
    1155511559                                93309EA1099EB78C0056E581 /* Timer.cpp */,
    1155611560                                9305B24C098F1B6B00C28855 /* Timer.h */,
     11561                                B287B22C0CE66A820054D390 /* UnicodeRange.cpp */,
     11562                                B287B22D0CE66A820054D390 /* UnicodeRange.h */,
    1155711563                                9380F47109A11AB4001FDB34 /* Widget.cpp */,
    1155811564                                9380F47209A11AB4001FDB34 /* Widget.h */,
     
    1392913935                                93309DF8099E64920056E581 /* markup.h in Headers */,
    1393013936                                93309E1E099E64920056E581 /* visible_units.h in Headers */,
     13937                                B287B22F0CE66A820054D390 /* UnicodeRange.h in Headers */,
    1393113938                        );
    1393213939                        runOnlyForDeploymentPostprocessing = 0;
     
    1396713974                        isa = PBXProject;
    1396813975                        buildConfigurationList = 149C284308902B11008A9EFC /* Build configuration list for PBXProject "WebCore" */;
    13969                         compatibilityVersion = "Xcode 2.4";
    1397013976                        hasScannedForEncodings = 1;
    1397113977                        knownRegions = (
     
    1549115497                                93309DF7099E64920056E581 /* markup.cpp in Sources */,
    1549215498                                93309E1D099E64920056E581 /* visible_units.cpp in Sources */,
     15499                                B287B22E0CE66A820054D390 /* UnicodeRange.cpp in Sources */,
    1549315500                        );
    1549415501                        runOnlyForDeploymentPostprocessing = 0;
  • trunk/WebCore/rendering/SVGCharacterLayoutInfo.cpp

    r27395 r27680  
    516516    ctm.rotate(angle);
    517517
    518     if (pathData)
     518    if (pathData) {
    519519        ctm.scale(pathData->xScale, pathData->yScale);
    520 
    521     ctm.translate(-x, -y);
    522 
    523     // Apply transformations which have to be applied orthogonal to the path
    524     // Only happens in textPath layouts.
    525     if (pathData)
    526520        ctm.translate(pathData->xShift, pathData->yShift);
    527 
     521        ctm.rotate(pathData->orientationAngle);
     522    }
     523
     524    ctm.translate(orientationShiftX - x, orientationShiftY - y);
    528525    return ctm;
    529526}
  • trunk/WebCore/rendering/SVGCharacterLayoutInfo.h

    r27395 r27680  
    184184        , xShift(0.0f)
    185185        , yShift(0.0f)
     186        , orientationAngle(0.0f)
    186187        , visible(true)
    187188    {
     
    193194    float xShift;
    194195    float yShift;
     196
     197    float orientationAngle;
    195198
    196199    // Determines wheter this char is visible (ie. false for chars "off" the text layout path)
     
    203206        , y(0.0f)
    204207        , angle(0.0f)
     208        , orientationShiftX(0.0f)
     209        , orientationShiftY(0.0f)
    205210        , pathData()
    206211        , drawnSeperated(false)
     
    216221    float y;
    217222    float angle;
     223
     224    float orientationShiftX;
     225    float orientationShiftY;
    218226
    219227    RefPtr<SVGCharOnPath> pathData;
  • trunk/WebCore/rendering/SVGRootInlineBox.cpp

    r26888 r27680  
    4141#include "Text.h"
    4242#include "TextStyle.h"
     43#include "UnicodeRange.h"
    4344
    4445#include <float.h>
     
    5354{
    5455    return style->writingMode() == WM_TBRL || style->writingMode() == WM_TB;
     56}
     57
     58static inline float glyphOrientationToAngle(const SVGRenderStyle* svgStyle, bool isVerticalText, const UChar& character)
     59{
     60    switch (isVerticalText ? svgStyle->glyphOrientationVertical() : svgStyle->glyphOrientationHorizontal()) {
     61    case GO_AUTO:
     62    {
     63        // Spec: Fullwidth ideographic and fullwidth Latin text will be set with a glyph-orientation of 0-degrees.
     64        //       Text which is not fullwidth will be set with a glyph-orientation of 90-degrees.
     65        unsigned int unicodeRange = findCharUnicodeRange(character);
     66        if (unicodeRange == cRangeSetLatin || unicodeRange == cRangeArabic)
     67            return 90.0f;
     68
     69        return 0.0f;
     70    }
     71    case GO_90DEG:
     72        return 90.0f;
     73    case GO_180DEG:
     74        return 180.0f;
     75    case GO_270DEG:
     76        return 270.0f;
     77    case GO_0DEG:
     78    default:
     79        return 0.0f;
     80    }
     81}
     82
     83static inline bool glyphOrientationIsMultiplyOf180Degrees(float orientationAngle)
     84{
     85    return fabsf(fmodf(orientationAngle, 180.0f)) == 0.0f;
     86}
     87
     88static inline float calculateGlyphAdvanceAndShiftRespectingOrientation(bool isVerticalText, float orientationAngle, float glyphWidth, float glyphHeight, const Font& font, SVGChar& svgChar, float& xOrientationShift, float& yOrientationShift)
     89{
     90    bool orientationIsMultiplyOf180Degrees = glyphOrientationIsMultiplyOf180Degrees(orientationAngle);
     91
     92    // The function is based on spec requirements:
     93    //
     94    // Spec: If the 'glyph-orientation-horizontal' results in an orientation angle that is not a multiple of
     95    // of 180 degrees, then the current text position is incremented according to the vertical metrics of the glyph.
     96    //
     97    // Spec: If if the 'glyph-orientation-vertical' results in an orientation angle that is not a multiple of
     98    // 180 degrees,then the current text position is incremented according to the horizontal metrics of the glyph.
     99
     100    // vertical orientation handling
     101    if (isVerticalText) {
     102        if (orientationAngle == 0.0f) {
     103            xOrientationShift = -glyphWidth / 2.0f;
     104            yOrientationShift = font.ascent();
     105        } else if (orientationAngle == 90.0f) {
     106            xOrientationShift = -glyphHeight;
     107            yOrientationShift = font.descent();
     108            svgChar.orientationShiftY = -font.ascent();
     109        } else if (orientationAngle == 270.0f) {
     110            xOrientationShift = glyphHeight;
     111            yOrientationShift = font.descent();
     112            svgChar.orientationShiftX = -glyphWidth;
     113            svgChar.orientationShiftY = -font.ascent();
     114        } else if (orientationAngle == 180.0f) {
     115            yOrientationShift = font.ascent();
     116            svgChar.orientationShiftX = -glyphWidth / 2.0f;
     117            svgChar.orientationShiftY = font.ascent() - font.descent();
     118        }
     119
     120        // vertical advance calculation
     121        if (orientationAngle != 0.0f && !orientationIsMultiplyOf180Degrees)
     122            return glyphWidth;
     123
     124        return glyphHeight;
     125    }
     126
     127    // horizontal orientation handling
     128    if (orientationAngle == 90.0f) {
     129        xOrientationShift = glyphWidth / 2.0f;
     130        yOrientationShift = -font.descent();
     131        svgChar.orientationShiftX = -glyphWidth / 2.0f - font.descent();
     132        svgChar.orientationShiftY = font.descent();
     133    } else if (orientationAngle == 270.0f) {
     134        xOrientationShift = -glyphWidth / 2.0f;
     135        yOrientationShift = -font.descent();
     136        svgChar.orientationShiftX = -glyphWidth / 2.0f + font.descent();
     137        svgChar.orientationShiftY = glyphHeight;
     138    } else if (orientationAngle == 180.0f) {
     139        xOrientationShift = glyphWidth / 2.0f;
     140        svgChar.orientationShiftX = -glyphWidth / 2.0f;
     141        svgChar.orientationShiftY = font.ascent() - font.descent();
     142    }
     143
     144    // horizontal advance calculation
     145    if (orientationAngle != 0.0f && !orientationIsMultiplyOf180Degrees)
     146        return glyphHeight;
     147
     148    return glyphWidth;
    55149}
    56150
     
    425519    const Font& font = text->style()->font();
    426520
    427     // FIXME: Wild guess - works for the W3C 1.1 vertical text examples - not really heavily tested so far.
    428521    return (range.endOffset - range.startOffset) * (font.ascent() + font.descent());
    429522}
     
    490583                SVGChar& currentCharacter = *itSearch;
    491584
    492                 int offset = box->m_reversed ? box->end() - i - positionOffset + 1: box->start() + i + positionOffset - 1;
     585                int offset = box->m_reversed ? box->end() - i - positionOffset + 1 : box->start() + i + positionOffset - 1;
    493586
    494587                if (calcWidthOnly) {
     
    877970
    878971    unsigned length = textBox->len();
    879     bool isVerticalText = isVerticalWritingMode(style->svgStyle());
     972
     973    const SVGRenderStyle* svgStyle = style->svgStyle();
     974    bool isVerticalText = isVerticalWritingMode(svgStyle);
    880975
    881976    for (unsigned i = 0; i < length; ++i) {
     
    9681063        }
    9691064
     1065        float orientationAngle = glyphOrientationToAngle(svgStyle, isVerticalText, *currentCharacter);
     1066
     1067        float xOrientationShift = 0.0f;
     1068        float yOrientationShift = 0.0f;
     1069        float glyphAdvance = calculateGlyphAdvanceAndShiftRespectingOrientation(isVerticalText, orientationAngle, glyphWidth, glyphHeight,
     1070                                                                                font, svgChar, xOrientationShift, yOrientationShift);
     1071
    9701072        // Handle textPath layout mode
    9711073        if (info.inPathLayout()) {
    972             float glyphAdvance = isVerticalText ? glyphHeight : glyphWidth;
    9731074            float extraAdvance = isVerticalText ? dy : dx;
    974 
    9751075            float newOffset = FLT_MIN;
    9761076
     
    9791079            else if (assignedY && isVerticalText)
    9801080                newOffset = info.cury;
     1081
     1082            float correctedGlyphAdvance = glyphAdvance;
    9811083
    9821084            // Handle lengthAdjust="spacingAndGlyphs" by specifying per-character scale operations
     
    9851087                    svgChar.pathData->yScale = info.pathChunkLength / info.pathTextLength;
    9861088                    spacing *= svgChar.pathData->yScale;
    987                     glyphAdvance *= svgChar.pathData->yScale;
     1089                    correctedGlyphAdvance *= svgChar.pathData->yScale;
    9881090                } else {
    9891091                    svgChar.pathData->xScale = info.pathChunkLength / info.pathTextLength;
    9901092                    spacing *= svgChar.pathData->xScale;
    991                     glyphAdvance *= svgChar.pathData->xScale;
     1093                    correctedGlyphAdvance *= svgChar.pathData->xScale;
    9921094                }
    9931095            }
     
    9971099            info.pathExtraAdvance += spacing;
    9981100
    999             svgChar.pathData->visible = info.nextPathLayoutPointAndAngle(glyphAdvance, extraAdvance, newOffset);
     1101            svgChar.pathData->visible = info.nextPathLayoutPointAndAngle(correctedGlyphAdvance, extraAdvance, newOffset);
    10001102            svgChar.drawnSeperated = true;
    10011103
     
    10201122        svgChar.x = info.curx;
    10211123        svgChar.y = info.cury;
     1124        svgChar.angle = info.angle;
    10221125
    10231126        // For text paths any shift (dx/dy/baseline-shift) has to be applied after the rotation
    10241127        if (!info.inPathLayout()) {
    1025             svgChar.x += info.shiftx;
    1026             svgChar.y += info.shifty;
     1128            svgChar.x += info.shiftx + xOrientationShift;
     1129            svgChar.y += info.shifty + yOrientationShift;
     1130
     1131            if (orientationAngle != 0.0f)
     1132                svgChar.angle += orientationAngle;
     1133
     1134            if (svgChar.angle != 0.0f)
     1135                svgChar.drawnSeperated = true;
    10271136        } else {
    1028             svgChar.pathData->xShift = info.shiftx;
    1029             svgChar.pathData->yShift = info.shifty;
     1137            svgChar.pathData->orientationAngle = orientationAngle;
     1138
     1139            if (isVerticalText)
     1140                svgChar.angle -= 90.0f;
     1141
     1142            svgChar.pathData->xShift = info.shiftx + xOrientationShift;
     1143            svgChar.pathData->yShift = info.shifty + yOrientationShift;
    10301144
    10311145            // Translate to glyph midpoint
    10321146            if (isVerticalText) {
    10331147                svgChar.pathData->xShift += info.dx;
    1034                 svgChar.pathData->yShift -= glyphHeight / 2.0f;
     1148                svgChar.pathData->yShift -= glyphAdvance / 2.0f;
    10351149            } else {
    1036                 svgChar.pathData->xShift -= glyphWidth / 2.0f;
     1150                svgChar.pathData->xShift -= glyphAdvance / 2.0f;
    10371151                svgChar.pathData->yShift += info.dy;
    10381152            }
    10391153        }
    1040  
    1041         // Correct character position for vertical text layout
     1154
     1155        // Advance to new position
    10421156        if (isVerticalText) {
    10431157            svgChar.drawnSeperated = true;
    1044             svgChar.x -= glyphWidth / 2.0f;
    1045             svgChar.y += glyphHeight;
    1046         }
    1047 
    1048         // Record angle if specified
    1049         svgChar.angle = info.angle;
    1050         if (svgChar.angle != 0.0f)
    1051             svgChar.drawnSeperated = true;
    1052 
    1053         // Advance to new position
    1054         if (isVerticalText)
    1055             info.cury += glyphHeight + spacing;
    1056         else
    1057             info.curx += glyphWidth + spacing;
     1158            info.cury += glyphAdvance + spacing;
     1159        } else
     1160            info.curx += glyphAdvance + spacing;
    10581161
    10591162        // Advance to next character
Note: See TracChangeset for help on using the changeset viewer.