+2007-08-08 Nikolas Zimmermann <zimmermann@kde.org>
+
+ Reviewed by Oliver.
+
+ Update test results after the SVG RTL text selection checkin.
+ Now dumps all contained inline text boxes, which affects a lot of tests.
+
+ * svg/W3C-SVG-1.1/animate-elem-04-t-expected.txt:
+ * svg/W3C-SVG-1.1/animate-elem-05-t-expected.txt:
+ * svg/W3C-SVG-1.1/animate-elem-06-t-expected.txt:
+ * svg/W3C-SVG-1.1/animate-elem-07-t-expected.txt:
+ * svg/W3C-SVG-1.1/animate-elem-44-t-expected.txt:
+ * svg/W3C-SVG-1.1/color-prof-01-f-expected.txt:
+ * svg/W3C-SVG-1.1/coords-viewattr-03-b-expected.checksum:
+ * svg/W3C-SVG-1.1/coords-viewattr-03-b-expected.png:
+ * svg/W3C-SVG-1.1/coords-viewattr-03-b-expected.txt:
+ * svg/W3C-SVG-1.1/extend-namespace-01-f-expected.checksum:
+ * svg/W3C-SVG-1.1/extend-namespace-01-f-expected.png:
+ * svg/W3C-SVG-1.1/extend-namespace-01-f-expected.txt:
+ * svg/W3C-SVG-1.1/interact-events-01-b-expected.txt:
+ * svg/W3C-SVG-1.1/interact-order-01-b-expected.txt:
+ * svg/W3C-SVG-1.1/interact-order-02-b-expected.txt:
+ * svg/W3C-SVG-1.1/interact-order-03-b-expected.txt:
+ * svg/W3C-SVG-1.1/linking-a-07-t-expected.txt:
+ * svg/W3C-SVG-1.1/script-handle-01-b-expected.txt:
+ * svg/W3C-SVG-1.1/script-handle-02-b-expected.txt:
+ * svg/W3C-SVG-1.1/script-handle-03-b-expected.txt:
+ * svg/W3C-SVG-1.1/script-handle-04-b-expected.txt:
+ * svg/W3C-SVG-1.1/struct-frag-06-t-expected.txt:
+ * svg/W3C-SVG-1.1/styling-css-01-b-expected.txt:
+ * svg/W3C-SVG-1.1/styling-css-03-b-expected.txt:
+ * svg/W3C-SVG-1.1/text-intro-05-t-expected.txt:
+ * svg/W3C-SVG-1.1/text-spacing-01-b-expected.txt:
+ * svg/W3C-SVG-1.1/text-tselect-02-f-expected.txt:
+ * svg/batik/text/longTextOnPath-expected.txt:
+ * svg/batik/text/textAnchor-expected.checksum:
+ * svg/batik/text/textAnchor-expected.png:
+ * svg/batik/text/textAnchor-expected.txt:
+ * svg/batik/text/textBiDi-expected.checksum:
+ * svg/batik/text/textBiDi-expected.png:
+ * svg/batik/text/textBiDi-expected.txt:
+ * svg/batik/text/textEffect-expected.checksum:
+ * svg/batik/text/textEffect-expected.png:
+ * svg/batik/text/textEffect-expected.txt:
+ * svg/batik/text/textEffect3-expected.checksum:
+ * svg/batik/text/textEffect3-expected.png:
+ * svg/batik/text/textEffect3-expected.txt:
+ * svg/batik/text/textFeatures-expected.checksum:
+ * svg/batik/text/textFeatures-expected.png:
+ * svg/batik/text/textFeatures-expected.txt:
+ * svg/batik/text/textLayout-expected.checksum:
+ * svg/batik/text/textLayout-expected.png:
+ * svg/batik/text/textLayout-expected.txt:
+ * svg/batik/text/textLayout2-expected.checksum:
+ * svg/batik/text/textLayout2-expected.png:
+ * svg/batik/text/textLayout2-expected.txt:
+ * svg/batik/text/textOnPath2-expected.txt:
+ * svg/batik/text/textProperties-expected.checksum:
+ * svg/batik/text/textProperties-expected.png:
+ * svg/batik/text/textProperties-expected.txt:
+ * svg/batik/text/textProperties2-expected.checksum:
+ * svg/batik/text/textProperties2-expected.png:
+ * svg/batik/text/textProperties2-expected.txt:
+ * svg/batik/text/textStyles-expected.checksum:
+ * svg/batik/text/textStyles-expected.png:
+ * svg/batik/text/textStyles-expected.txt:
+ * svg/batik/text/xmlSpace-expected.txt:
+ * svg/carto.net/selectionlist-expected.txt:
+ * svg/custom/invalid-fill-expected.txt:
+ * svg/custom/invalid-fill-hex-expected.txt:
+ * svg/custom/marker-overflow-clip-expected.txt:
+ * svg/custom/text-whitespace-handling-expected.txt:
+ * svg/text/text-align-01-b-expected.checksum:
+ * svg/text/text-align-01-b-expected.png:
+ * svg/text/text-align-02-b-expected.checksum:
+ * svg/text/text-align-02-b-expected.png:
+ * svg/text/text-align-05-b-expected.checksum:
+ * svg/text/text-align-05-b-expected.png:
+ * svg/text/text-align-06-b-expected.checksum:
+ * svg/text/text-align-06-b-expected.png:
+ * svg/text/text-intro-05-t-expected.txt:
+ * svg/text/text-path-01-b-expected.checksum:
+ * svg/text/text-path-01-b-expected.png:
+ * svg/text/text-spacing-01-b-expected.checksum:
+ * svg/text/text-spacing-01-b-expected.png:
+ * svg/text/text-spacing-01-b-expected.txt:
+ * svg/text/text-text-05-t-expected.checksum:
+ * svg/text/text-text-05-t-expected.png:
+ * svg/text/text-tselect-02-f-expected.checksum:
+ * svg/text/text-tselect-02-f-expected.png:
+ * svg/text/text-tselect-02-f-expected.txt:
+ * svg/text/text-tspan-01-b-expected.checksum:
+ * svg/text/text-tspan-01-b-expected.png:
+
2007-07-29 Nikolas Zimmermann <zimmermann@kde.org>
Reviewed by Rob.
RenderSVGTextPath {textPath} at (0,0) size 406x263
RenderSVGInlineText {#text} at (0,-18) size 406x263
chunk 1 text run 1 at (21.00,150.00) startOffset 0 endOffset 410 width 3210.00: "This is an example of a very long string that is split across multiple lines via the textPath tag. The purpose of this test is to ensure that text-selection can keep up even when relatively large numbers of characters are part of the selection. Since I haven't reached the end yet, let me keep going with more really quite useless text just to see if we hit a limit where it really starts to slow things down. "
+ chunk 1 text run 2 at (27.00,310.00) startOffset 0 endOffset 85 width 693.00: "However if it hasn't slowed down by now I'm guessing that it won't slow down at all. "
+ chunk 1 text run 3 at (22.00,330.00) startOffset 0 endOffset 79 width 613.00: "But you never know for sure until you try it, so I am, and here is the result. "
+ chunk 1 text run 4 at (25.00,370.00) startOffset 0 endOffset 70 width 551.00: "Selection does bog down a little near the end but it's redraw related."
RenderSVGInlineText {#text} at (0,0) size 0x0
RenderSVGContainer {use} at (0,0) size 0x0
-5ae7a4f3ba6aa851936b940fe629c2bb
\ No newline at end of file
+29972ef68534a9eb7d763868059a70dd
\ No newline at end of file
layer at (0,0) size 800x600
RenderView at (0,0) size 800x600
layer at (0,0) size 450x500
- RenderSVGRoot {svg} at (51,26) size 343.12x431.88
+ RenderSVGRoot {svg} at (48,26) size 346.12x431.88
RenderSVGText {text} at (144,40) size 162x17 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-14) size 162x17
chunk 1 (middle anchor) text run 1 at (144.00,40.00) startOffset 0 endOffset 22 width 162.00: "text-anchor on <tspan>"
- RenderSVGContainer {g} at (51,82.12) size 343.12x375.75 [transform={m=((0.75,0.00)(0.00,0.75)) t=(56.25,82.50)}]
+ RenderSVGContainer {g} at (48,82.12) size 346.12x375.75 [transform={m=((0.75,0.00)(0.00,0.75)) t=(56.25,82.50)}]
RenderSVGContainer {g} at (55.88,82.12) size 338.25x375.75
RenderPath {rect} at (56.25,82.50) size 337.50x125.25 [opacity=0.10] [fill={[type=SOLID] [color=#000000]}] [data="M0.00,0.00L450.00,0.00L450.00,167.00L0.00,167.00"]
RenderPath {rect} at (56.25,207.75) size 337.50x125.25 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M0.00,167.00L450.00,167.00L450.00,334.00L0.00,334.00"]
RenderPath {line} at (168.38,82.50) size 0.75x375 [stroke={[type=SOLID] [color=#FF0000]}] [data="M150.00,0.00L150.00,500.00"]
RenderPath {line} at (295.88,82.50) size 0.75x375 [stroke={[type=SOLID] [color=#FF0000]}] [data="M320.00,0.00L320.00,500.00"]
RenderPath {rect} at (55.88,82.12) size 338.25x375.75 [stroke={[type=SOLID] [color=#FF0000]}] [data="M0.00,0.00L450.00,0.00L450.00,500.00L0.00,500.00"]
- RenderSVGContainer {g} at (51,94.50) size 333x88.50
+ RenderSVGContainer {g} at (48,94.50) size 336x88.50
RenderSVGContainer {g} at (168.75,94.50) size 215.25x28.50
RenderSVGText {text} at (150,30) size 287x38 contains 2 chunk(s)
RenderSVGTSpan {tspan} at (0,0) size 51x18
chunk 1 text run 2 at (201.00,50.00) startOffset 0 endOffset 1 width 4.00: " "
RenderSVGTSpan {tspan} at (0,0) size 102x18 [color=#FF0000]
RenderSVGInlineText {#text} at (55,6) size 102x18
- chunk 1 text run 3 at (205.00,50.00) startOffset 0 endOffset 15 width 98.00: " same text chun"
+ chunk 1 text run 3 at (205.00,50.00) startOffset 0 endOffset 15 width 102.00: "same text chunk"
RenderSVGInlineText {#text} at (157,6) size 4x18
chunk 1 text run 4 at (307.00,50.00) startOffset 0 endOffset 1 width 4.00: " "
RenderSVGTSpan {tspan} at (0,0) size 117x18
RenderSVGInlineText {#text} at (170,-14) size 117x18
chunk 2 text run 1 at (320.00,30.00) startOffset 0 endOffset 18 width 117.00: "another text chunk"
RenderSVGInlineText {#text} at (0,0) size 0x0
- RenderSVGContainer {g} at (109.50,124.50) size 274.50x28.50 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,40.00)}]
- RenderSVGText {text} at (71,30) size 366x38 contains 2 chunk(s)
+ RenderSVGContainer {g} at (108,124.50) size 276x28.50 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,40.00)}]
+ RenderSVGText {text} at (69,30) size 368x38 contains 2 chunk(s)
RenderSVGTSpan {tspan} at (0,0) size 51x18
RenderSVGInlineText {#text} at (0,6) size 51x18
- chunk 1 (middle anchor) text run 1 at (71.50,50.00) startOffset 0 endOffset 8 width 51.00: "I am the"
+ chunk 1 (middle anchor) text run 1 at (69.50,50.00) startOffset 0 endOffset 8 width 51.00: "I am the"
RenderSVGInlineText {#text} at (51,6) size 4x18
- chunk 1 (middle anchor) text run 2 at (122.50,50.00) startOffset 0 endOffset 1 width 4.00: " "
+ chunk 1 (middle anchor) text run 2 at (120.50,50.00) startOffset 0 endOffset 1 width 4.00: " "
RenderSVGTSpan {tspan} at (0,0) size 102x18 [color=#FF0000]
RenderSVGInlineText {#text} at (55,6) size 102x18
- chunk 1 (middle anchor) text run 3 at (126.50,50.00) startOffset 0 endOffset 15 width 98.00: " same text chun"
+ chunk 1 (middle anchor) text run 3 at (124.50,50.00) startOffset 0 endOffset 15 width 102.00: "same text chunk"
RenderSVGInlineText {#text} at (157,6) size 4x18
- chunk 1 (middle anchor) text run 4 at (228.50,50.00) startOffset 0 endOffset 1 width 4.00: " "
+ chunk 1 (middle anchor) text run 4 at (226.50,50.00) startOffset 0 endOffset 1 width 4.00: " "
RenderSVGTSpan {tspan} at (0,0) size 117x18
- RenderSVGInlineText {#text} at (249,-14) size 117x18
+ RenderSVGInlineText {#text} at (251,-14) size 117x18
chunk 2 text run 1 at (320.00,30.00) startOffset 0 endOffset 18 width 117.00: "another text chunk"
RenderSVGInlineText {#text} at (0,0) size 0x0
- RenderSVGContainer {g} at (51,154.50) size 333x28.50 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,80.00)}]
- RenderSVGText {text} at (-7,30) size 444x38 contains 2 chunk(s)
+ RenderSVGContainer {g} at (48,154.50) size 336x28.50 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,80.00)}]
+ RenderSVGText {text} at (-11,30) size 448x38 contains 2 chunk(s)
RenderSVGTSpan {tspan} at (0,0) size 51x18
RenderSVGInlineText {#text} at (0,6) size 51x18
- chunk 1 (end anchor) text run 1 at (-7.00,50.00) startOffset 0 endOffset 8 width 51.00: "I am the"
+ chunk 1 (end anchor) text run 1 at (-11.00,50.00) startOffset 0 endOffset 8 width 51.00: "I am the"
RenderSVGInlineText {#text} at (51,6) size 4x18
- chunk 1 (end anchor) text run 2 at (44.00,50.00) startOffset 0 endOffset 1 width 4.00: " "
+ chunk 1 (end anchor) text run 2 at (40.00,50.00) startOffset 0 endOffset 1 width 4.00: " "
RenderSVGTSpan {tspan} at (0,0) size 102x18 [color=#FF0000]
RenderSVGInlineText {#text} at (55,6) size 102x18
- chunk 1 (end anchor) text run 3 at (48.00,50.00) startOffset 0 endOffset 15 width 98.00: " same text chun"
+ chunk 1 (end anchor) text run 3 at (44.00,50.00) startOffset 0 endOffset 15 width 102.00: "same text chunk"
RenderSVGInlineText {#text} at (157,6) size 4x18
- chunk 1 (end anchor) text run 4 at (150.00,50.00) startOffset 0 endOffset 1 width 4.00: " "
+ chunk 1 (end anchor) text run 4 at (146.00,50.00) startOffset 0 endOffset 1 width 4.00: " "
RenderSVGTSpan {tspan} at (0,0) size 117x18
- RenderSVGInlineText {#text} at (327,-14) size 117x18
+ RenderSVGInlineText {#text} at (331,-14) size 117x18
chunk 2 text run 1 at (320.00,30.00) startOffset 0 endOffset 18 width 117.00: "another text chunk"
RenderSVGInlineText {#text} at (0,0) size 0x0
- RenderSVGContainer {g} at (51,222) size 288.75x88.50 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,50.00)}]
+ RenderSVGContainer {g} at (48,222) size 291.75x88.50 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,50.00)}]
RenderSVGContainer {g} at (168.75,222) size 171x28.50 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,120.00)}]
RenderSVGText {text} at (150,30) size 228x38 contains 2 chunk(s)
RenderSVGTSpan {tspan} at (0,0) size 51x18
chunk 1 text run 2 at (201.00,50.00) startOffset 0 endOffset 1 width 4.00: " "
RenderSVGTSpan {tspan} at (0,0) size 102x18 [color=#FF0000]
RenderSVGInlineText {#text} at (55,6) size 102x18
- chunk 1 text run 3 at (205.00,50.00) startOffset 0 endOffset 15 width 98.00: " same text chun"
+ chunk 1 text run 3 at (205.00,50.00) startOffset 0 endOffset 15 width 102.00: "same text chunk"
RenderSVGInlineText {#text} at (157,6) size 4x18
chunk 1 text run 4 at (307.00,50.00) startOffset 0 endOffset 1 width 4.00: " "
RenderSVGTSpan {tspan} at (0,0) size 117x18
RenderSVGInlineText {#text} at (111,-14) size 117x18
chunk 2 (middle anchor) text run 1 at (261.50,30.00) startOffset 0 endOffset 18 width 117.00: "another text chunk"
RenderSVGInlineText {#text} at (0,0) size 0x0
- RenderSVGContainer {g} at (109.50,252) size 230.25x28.50 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,160.00)}]
- RenderSVGText {text} at (71,30) size 307x38 contains 2 chunk(s)
+ RenderSVGContainer {g} at (108,252) size 231.75x28.50 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,160.00)}]
+ RenderSVGText {text} at (69,30) size 309x38 contains 2 chunk(s)
RenderSVGTSpan {tspan} at (0,0) size 51x18
RenderSVGInlineText {#text} at (0,6) size 51x18
- chunk 1 (middle anchor) text run 1 at (71.50,50.00) startOffset 0 endOffset 8 width 51.00: "I am the"
+ chunk 1 (middle anchor) text run 1 at (69.50,50.00) startOffset 0 endOffset 8 width 51.00: "I am the"
RenderSVGInlineText {#text} at (51,6) size 4x18
- chunk 1 (middle anchor) text run 2 at (122.50,50.00) startOffset 0 endOffset 1 width 4.00: " "
+ chunk 1 (middle anchor) text run 2 at (120.50,50.00) startOffset 0 endOffset 1 width 4.00: " "
RenderSVGTSpan {tspan} at (0,0) size 102x18 [color=#FF0000]
RenderSVGInlineText {#text} at (55,6) size 102x18
- chunk 1 (middle anchor) text run 3 at (126.50,50.00) startOffset 0 endOffset 15 width 98.00: " same text chun"
+ chunk 1 (middle anchor) text run 3 at (124.50,50.00) startOffset 0 endOffset 15 width 102.00: "same text chunk"
RenderSVGInlineText {#text} at (157,6) size 4x18
- chunk 1 (middle anchor) text run 4 at (228.50,50.00) startOffset 0 endOffset 1 width 4.00: " "
+ chunk 1 (middle anchor) text run 4 at (226.50,50.00) startOffset 0 endOffset 1 width 4.00: " "
RenderSVGTSpan {tspan} at (0,0) size 117x18
- RenderSVGInlineText {#text} at (190,-14) size 117x18
+ RenderSVGInlineText {#text} at (192,-14) size 117x18
chunk 2 (middle anchor) text run 1 at (261.50,30.00) startOffset 0 endOffset 18 width 117.00: "another text chunk"
RenderSVGInlineText {#text} at (0,0) size 0x0
- RenderSVGContainer {g} at (51,282) size 288.75x28.50 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,200.00)}]
- RenderSVGText {text} at (-7,30) size 385x38 contains 2 chunk(s)
+ RenderSVGContainer {g} at (48,282) size 291.75x28.50 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,200.00)}]
+ RenderSVGText {text} at (-11,30) size 389x38 contains 2 chunk(s)
RenderSVGTSpan {tspan} at (0,0) size 51x18
RenderSVGInlineText {#text} at (0,6) size 51x18
- chunk 1 (end anchor) text run 1 at (-7.00,50.00) startOffset 0 endOffset 8 width 51.00: "I am the"
+ chunk 1 (end anchor) text run 1 at (-11.00,50.00) startOffset 0 endOffset 8 width 51.00: "I am the"
RenderSVGInlineText {#text} at (51,6) size 4x18
- chunk 1 (end anchor) text run 2 at (44.00,50.00) startOffset 0 endOffset 1 width 4.00: " "
+ chunk 1 (end anchor) text run 2 at (40.00,50.00) startOffset 0 endOffset 1 width 4.00: " "
RenderSVGTSpan {tspan} at (0,0) size 102x18 [color=#FF0000]
RenderSVGInlineText {#text} at (55,6) size 102x18
- chunk 1 (end anchor) text run 3 at (48.00,50.00) startOffset 0 endOffset 15 width 98.00: " same text chun"
+ chunk 1 (end anchor) text run 3 at (44.00,50.00) startOffset 0 endOffset 15 width 102.00: "same text chunk"
RenderSVGInlineText {#text} at (157,6) size 4x18
- chunk 1 (end anchor) text run 4 at (150.00,50.00) startOffset 0 endOffset 1 width 4.00: " "
+ chunk 1 (end anchor) text run 4 at (146.00,50.00) startOffset 0 endOffset 1 width 4.00: " "
RenderSVGTSpan {tspan} at (0,0) size 117x18
- RenderSVGInlineText {#text} at (268,-14) size 117x18
+ RenderSVGInlineText {#text} at (272,-14) size 117x18
chunk 2 (middle anchor) text run 1 at (261.50,30.00) startOffset 0 endOffset 18 width 117.00: "another text chunk"
RenderSVGInlineText {#text} at (0,0) size 0x0
- RenderSVGContainer {g} at (51,349.50) size 245.25x88.50 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,80.00)}]
+ RenderSVGContainer {g} at (48,349.50) size 248.25x88.50 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,80.00)}]
RenderSVGContainer {g} at (168.75,349.50) size 127.50x28.50 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,260.00)}]
RenderSVGText {text} at (150,30) size 170x38 contains 2 chunk(s)
RenderSVGTSpan {tspan} at (0,0) size 51x18
chunk 1 text run 2 at (201.00,50.00) startOffset 0 endOffset 1 width 4.00: " "
RenderSVGTSpan {tspan} at (0,0) size 102x18 [color=#FF0000]
RenderSVGInlineText {#text} at (55,6) size 102x18
- chunk 1 text run 3 at (205.00,50.00) startOffset 0 endOffset 15 width 98.00: " same text chun"
+ chunk 1 text run 3 at (205.00,50.00) startOffset 0 endOffset 15 width 102.00: "same text chunk"
RenderSVGInlineText {#text} at (157,6) size 4x18
chunk 1 text run 4 at (307.00,50.00) startOffset 0 endOffset 1 width 4.00: " "
RenderSVGTSpan {tspan} at (0,0) size 117x18
RenderSVGInlineText {#text} at (53,-14) size 117x18
chunk 2 (end anchor) text run 1 at (203.00,30.00) startOffset 0 endOffset 18 width 117.00: "another text chunk"
RenderSVGInlineText {#text} at (0,0) size 0x0
- RenderSVGContainer {g} at (109.50,379.50) size 186.75x28.50 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,300.00)}]
- RenderSVGText {text} at (71,30) size 249x38 contains 2 chunk(s)
+ RenderSVGContainer {g} at (108,379.50) size 188.25x28.50 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,300.00)}]
+ RenderSVGText {text} at (69,30) size 251x38 contains 2 chunk(s)
RenderSVGTSpan {tspan} at (0,0) size 51x18
RenderSVGInlineText {#text} at (0,6) size 51x18
- chunk 1 (middle anchor) text run 1 at (71.50,50.00) startOffset 0 endOffset 8 width 51.00: "I am the"
+ chunk 1 (middle anchor) text run 1 at (69.50,50.00) startOffset 0 endOffset 8 width 51.00: "I am the"
RenderSVGInlineText {#text} at (51,6) size 4x18
- chunk 1 (middle anchor) text run 2 at (122.50,50.00) startOffset 0 endOffset 1 width 4.00: " "
+ chunk 1 (middle anchor) text run 2 at (120.50,50.00) startOffset 0 endOffset 1 width 4.00: " "
RenderSVGTSpan {tspan} at (0,0) size 102x18 [color=#FF0000]
RenderSVGInlineText {#text} at (55,6) size 102x18
- chunk 1 (middle anchor) text run 3 at (126.50,50.00) startOffset 0 endOffset 15 width 98.00: " same text chun"
+ chunk 1 (middle anchor) text run 3 at (124.50,50.00) startOffset 0 endOffset 15 width 102.00: "same text chunk"
RenderSVGInlineText {#text} at (157,6) size 4x18
- chunk 1 (middle anchor) text run 4 at (228.50,50.00) startOffset 0 endOffset 1 width 4.00: " "
+ chunk 1 (middle anchor) text run 4 at (226.50,50.00) startOffset 0 endOffset 1 width 4.00: " "
RenderSVGTSpan {tspan} at (0,0) size 117x18
- RenderSVGInlineText {#text} at (132,-14) size 117x18
+ RenderSVGInlineText {#text} at (134,-14) size 117x18
chunk 2 (end anchor) text run 1 at (203.00,30.00) startOffset 0 endOffset 18 width 117.00: "another text chunk"
RenderSVGInlineText {#text} at (0,0) size 0x0
- RenderSVGContainer {g} at (51,409.50) size 245.25x28.50 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,340.00)}]
- RenderSVGText {text} at (-7,30) size 327x38 contains 2 chunk(s)
+ RenderSVGContainer {g} at (48,409.50) size 248.25x28.50 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,340.00)}]
+ RenderSVGText {text} at (-11,30) size 331x38 contains 2 chunk(s)
RenderSVGTSpan {tspan} at (0,0) size 51x18
RenderSVGInlineText {#text} at (0,6) size 51x18
- chunk 1 (end anchor) text run 1 at (-7.00,50.00) startOffset 0 endOffset 8 width 51.00: "I am the"
+ chunk 1 (end anchor) text run 1 at (-11.00,50.00) startOffset 0 endOffset 8 width 51.00: "I am the"
RenderSVGInlineText {#text} at (51,6) size 4x18
- chunk 1 (end anchor) text run 2 at (44.00,50.00) startOffset 0 endOffset 1 width 4.00: " "
+ chunk 1 (end anchor) text run 2 at (40.00,50.00) startOffset 0 endOffset 1 width 4.00: " "
RenderSVGTSpan {tspan} at (0,0) size 102x18 [color=#FF0000]
RenderSVGInlineText {#text} at (55,6) size 102x18
- chunk 1 (end anchor) text run 3 at (48.00,50.00) startOffset 0 endOffset 15 width 98.00: " same text chun"
+ chunk 1 (end anchor) text run 3 at (44.00,50.00) startOffset 0 endOffset 15 width 102.00: "same text chunk"
RenderSVGInlineText {#text} at (157,6) size 4x18
- chunk 1 (end anchor) text run 4 at (150.00,50.00) startOffset 0 endOffset 1 width 4.00: " "
+ chunk 1 (end anchor) text run 4 at (146.00,50.00) startOffset 0 endOffset 1 width 4.00: " "
RenderSVGTSpan {tspan} at (0,0) size 117x18
- RenderSVGInlineText {#text} at (210,-14) size 117x18
+ RenderSVGInlineText {#text} at (214,-14) size 117x18
chunk 2 (end anchor) text run 1 at (203.00,30.00) startOffset 0 endOffset 18 width 117.00: "another text chunk"
RenderSVGInlineText {#text} at (0,0) size 0x0
RenderSVGContainer {use} at (0,0) size 0x0
-e7abe876a73123b10646e9294c628063
\ No newline at end of file
+b893044d459ee07c1e61c044065d3701
\ No newline at end of file
layer at (0,0) size 800x600
RenderView at (0,0) size 800x600
layer at (0,0) size 450x500
- RenderSVGRoot {svg} at (45,36) size 356x368
- RenderSVGContainer {g} at (45,36) size 356x368
- RenderSVGText {text} at (146,50) size 184x17 contains 1 chunk(s)
+ RenderSVGRoot {svg} at (45,36) size 343x368
+ RenderSVGContainer {g} at (45,36) size 343x368
+ RenderSVGText {text} at (133,50) size 184x17 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-14) size 184x17
- chunk 1 (middle anchor) text run 1 at (146.50,50.00) startOffset 0 endOffset 30 width 157.00: " BiDi Text / Intern"
+ chunk 1 (middle anchor) text run 1 at (133.00,50.00) startOffset 0 endOffset 30 width 184.00: "BiDi Text / International Text"
RenderSVGText {text} at (67,125) size 315x15 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-12) size 85x15
chunk 1 (middle anchor) text run 1 at (67.50,125.00) startOffset 0 endOffset 15 width 85.00: "Some text goes "
chunk 1 (middle anchor) text run 1 at (150.50,150.00) startOffset 0 endOffset 5 width 33.00: "Some "
RenderSVGTSpan {tspan} at (0,0) size 89x15 [color=#8B0000]
RenderSVGInlineText {#text} at (33,-12) size 89x15
- chunk 1 (middle anchor) text run 2 at (183.50,150.00) startOffset 0 endOffset 1 width 4.00 RTL: "("
+ chunk 1 (middle anchor) text run 2 at (183.50,150.00) startOffset 0 endOffset 1 width 4.00 RTL: ")"
+ chunk 1 (middle anchor) text run 3 at (187.50,150.00) startOffset 0 endOffset 13 width 81.00: "embedded bidi"
+ chunk 1 (middle anchor) text run 4 at (268.50,150.00) startOffset 0 endOffset 1 width 4.00 RTL: "("
RenderSVGInlineText {#text} at (122,-12) size 27x15
chunk 1 (middle anchor) text run 5 at (272.50,150.00) startOffset 0 endOffset 6 width 27.00: " text."
- RenderSVGText {text} at (74,175) size 327x13 contains 1 chunk(s)
+ RenderSVGText {text} at (61,175) size 327x13 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-10) size 327x13
- chunk 1 (middle anchor) text run 1 at (74.50,175.00) startOffset 0 endOffset 45 width 164.00: " Text selection allows visually"
- RenderSVGContainer {g} at (45,212) size 311x192
+ chunk 1 (middle anchor) text run 1 at (61.50,175.00) startOffset 0 endOffset 45 width 181.00: "Text selection allows visually discontiguous "
+ chunk 1 (middle anchor) text run 2 at (242.50,175.00) startOffset 0 endOffset 38 width 146.00: "selections across bi-directional text."
+ RenderSVGContainer {g} at (45,212) size 314x192
RenderSVGText {text} at (45,225) size 296x17 contains 1 chunk(s) [color=#191970]
RenderSVGInlineText {#text} at (0,-13) size 296x17
chunk 1 text run 1 at (45.00,225.00) startOffset 0 endOffset 7 width 35.00: "latin: "
+ chunk 1 text run 2 at (80.00,225.00) startOffset 0 endOffset 8 width 74.00: "ABCDEFG "
+ chunk 1 text run 3 at (154.00,225.00) startOffset 0 endOffset 26 width 187.00: "abcdefghijklmnopqrstuvwxyz"
RenderSVGText {text} at (45,250) size 198x17 contains 1 chunk(s) [color=#A0522D]
RenderSVGInlineText {#text} at (0,-13) size 198x17
chunk 1 text run 1 at (45.00,250.00) startOffset 0 endOffset 16 width 97.00: "latin-extended: "
+ chunk 1 text run 2 at (142.00,250.00) startOffset 0 endOffset 15 width 101.00: "\x{E6}\x{E7}\x{E8}\x{E9}\x{EA}\x{EB}\x{EC}\x{ED}\x{EE}\x{EF}\x{F0}\x{F1}\x{F2}\x{F3}\x{F4}"
RenderSVGText {text} at (45,275) size 291x17 contains 1 chunk(s) [color=#4B0082]
RenderSVGInlineText {#text} at (0,-13) size 291x17
chunk 1 text run 1 at (45.00,275.00) startOffset 0 endOffset 10 width 51.00: "cyrillic: "
+ chunk 1 text run 2 at (96.00,275.00) startOffset 0 endOffset 23 width 240.00: "\x{411}\x{412}\x{413}\x{414}\x{415}\x{416}\x{417}\x{418}\x{419}\x{41A}\x{41B}\x{41C}\x{41D}\x{41E}\x{41F}\x{420}\x{421}\x{422}\x{423}\x{424}\x{425}\x{426}\x{427}"
RenderSVGText {text} at (45,300) size 293x17 contains 1 chunk(s) [color=#800000]
RenderSVGInlineText {#text} at (0,-13) size 293x17
chunk 1 text run 1 at (45.00,300.00) startOffset 0 endOffset 7 width 43.00: "greek: "
- RenderSVGText {text} at (45,325) size 289x17 contains 1 chunk(s) [color=#556B2F]
- RenderSVGInlineText {#text} at (0,-13) size 289x17
+ chunk 1 text run 2 at (88.00,300.00) startOffset 0 endOffset 30 width 250.00: "\x{391}\x{392}\x{393}\x{394} \x{3B1}\x{3B2}\x{3B3}\x{3B4}\x{3B5}\x{3B6}\x{3B7}\x{3B8}\x{3B9}\x{3BA}\x{3BB}\x{3BC}\x{3BD}\x{3BE}\x{3BF}\x{3C0}\x{3C1}\x{3C2}\x{3C3}\x{3C4}\x{3C5}\x{3C6}\x{3C7}\x{3C8}\x{3C9}"
+ RenderSVGText {text} at (45,325) size 290x17 contains 1 chunk(s) [color=#556B2F]
+ RenderSVGInlineText {#text} at (0,-13) size 290x17
chunk 1 text run 1 at (45.00,325.00) startOffset 0 endOffset 8 width 54.00: "hebrew: "
- RenderSVGText {text} at (45,350) size 235x17 contains 1 chunk(s) [color=#556B2F]
- RenderSVGInlineText {#text} at (0,-13) size 235x17
+ chunk 1 text run 2 at (99.00,325.00) startOffset 0 endOffset 27 width 225.00 RTL: "\x{5D0}\x{5D1}\x{5D2}\x{5D3}\x{5D4}\x{5D5}\x{5D6}\x{5D7}\x{5D8}\x{5D9}\x{5DA}\x{5DB}\x{5DC}\x{5DD}\x{5DE}\x{5DF}\x{5E0}\x{5E1}\x{5E2}\x{5E3}\x{5E4}\x{5E5}\x{5E6}\x{5E7}\x{5E8}\x{5E9}\x{5EA}"
+ RenderSVGText {text} at (45,350) size 236x17 contains 1 chunk(s) [color=#556B2F]
+ RenderSVGInlineText {#text} at (0,-13) size 236x17
chunk 1 text run 1 at (45.00,350.00) startOffset 0 endOffset 27 width 225.00 RTL: "\x{5D0}\x{5D1}\x{5D2}\x{5D3}\x{5D4}\x{5D5}\x{5D6}\x{5D7}\x{5D8}\x{5D9}\x{5DA}\x{5DB}\x{5DC}\x{5DD}\x{5DE}\x{5DF}\x{5E0}\x{5E1}\x{5E2}\x{5E3}\x{5E4}\x{5E5}\x{5E6}\x{5E7}\x{5E8}\x{5E9}\x{5EA}"
- RenderSVGText {text} at (45,375) size 311x17 contains 1 chunk(s) [color=#8B0000]
- RenderSVGInlineText {#text} at (0,-13) size 311x17
+ RenderSVGText {text} at (45,375) size 314x17 contains 1 chunk(s) [color=#8B0000]
+ RenderSVGInlineText {#text} at (0,-13) size 314x17
chunk 1 text run 1 at (45.00,375.00) startOffset 0 endOffset 8 width 46.00: "arabic: "
- RenderSVGText {text} at (45,400) size 265x17 contains 1 chunk(s) [color=#8B0000]
- RenderSVGInlineText {#text} at (0,-13) size 265x17
+ chunk 1 text run 2 at (91.00,375.00) startOffset 0 endOffset 36 width 216.00 RTL: "\x{621}\x{623}\x{624}\x{625}\x{626}\x{627}\x{628}\x{629}\x{62A}\x{62B}\x{62C}\x{62D}\x{62E}\x{62F}\x{630}\x{631}\x{632}\x{633}\x{634}\x{635}\x{636}\x{637}\x{638}\x{639}\x{640}\x{641}\x{642}\x{643}\x{644}\x{645}\x{646}\x{647}\x{648}\x{649}\x{650}\x{676}"
+ RenderSVGText {text} at (45,400) size 268x17 contains 1 chunk(s) [color=#8B0000]
+ RenderSVGInlineText {#text} at (0,-13) size 268x17
chunk 1 text run 1 at (45.00,400.00) startOffset 0 endOffset 36 width 216.00 RTL: "\x{621}\x{623}\x{624}\x{625}\x{626}\x{627}\x{628}\x{629}\x{62A}\x{62B}\x{62C}\x{62D}\x{62E}\x{62F}\x{630}\x{631}\x{632}\x{633}\x{634}\x{635}\x{636}\x{637}\x{638}\x{639}\x{640}\x{641}\x{642}\x{643}\x{644}\x{645}\x{646}\x{647}\x{648}\x{649}\x{650}\x{676}"
RenderSVGContainer {use} at (0,0) size 0x0
-305078038afa3cb9ab1071f4988ff362
\ No newline at end of file
+414479a23d76f6f352114c595149adff
\ No newline at end of file
layer at (0,0) size 800x600
RenderView at (0,0) size 800x600
layer at (0,0) size 450x500
- RenderSVGRoot {svg} at (70,16) size 379x387
- RenderSVGContainer {g} at (70,16) size 379x387
+ RenderSVGRoot {svg} at (42,16) size 370x387
+ RenderSVGContainer {g} at (42,16) size 370x387
RenderSVGText {text} at (136,30) size 177x17 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-14) size 177x17
chunk 1 (middle anchor) text run 1 at (136.50,30.00) startOffset 0 endOffset 27 width 177.00: "Gradient and filter on text"
RenderSVGGradientStop {stop} at (0,0) size 0x0
RenderSVGGradientStop {stop} at (0,0) size 0x0
RenderSVGGradientStop {stop} at (0,0) size 0x0
- RenderSVGText {text} at (72,160) size 152x59 contains 1 chunk(s)
+ RenderSVGText {text} at (44,160) size 152x59 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-48) size 152x59
- chunk 1 (middle anchor) text run 1 at (72.50,160.00) startOffset 0 endOffset 5 width 95.00: " B"
- RenderSVGText {text} at (286,160) size 161x61 contains 1 chunk(s)
+ chunk 1 (middle anchor) text run 1 at (44.00,160.00) startOffset 0 endOffset 5 width 152.00: "BATIK"
+ RenderSVGText {text} at (249,160) size 161x61 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-48) size 161x61
- chunk 1 (middle anchor) text run 1 at (286.50,160.00) startOffset 0 endOffset 5 width 87.00: " B"
- RenderSVGText {text} at (72,260) size 152x59 contains 1 chunk(s) [color=#FFFFFF]
+ chunk 1 (middle anchor) text run 1 at (249.50,160.00) startOffset 0 endOffset 5 width 161.00: "BATIK"
+ RenderSVGText {text} at (44,260) size 152x59 contains 1 chunk(s) [color=#FFFFFF]
RenderSVGInlineText {#text} at (0,-48) size 152x59
- chunk 1 (middle anchor) text run 1 at (72.50,260.00) startOffset 0 endOffset 5 width 95.00: " B"
- RenderSVGText {text} at (286,260) size 161x61 contains 1 chunk(s) [color=#FFFFFF]
+ chunk 1 (middle anchor) text run 1 at (44.00,260.00) startOffset 0 endOffset 5 width 152.00: "BATIK"
+ RenderSVGText {text} at (249,260) size 161x61 contains 1 chunk(s) [color=#FFFFFF]
RenderSVGInlineText {#text} at (0,-48) size 161x61
- chunk 1 (middle anchor) text run 1 at (286.50,260.00) startOffset 0 endOffset 5 width 87.00: " B"
- RenderSVGText {text} at (72,360) size 152x59 contains 1 chunk(s) [color=#FF0000]
+ chunk 1 (middle anchor) text run 1 at (249.50,260.00) startOffset 0 endOffset 5 width 161.00: "BATIK"
+ RenderSVGText {text} at (44,360) size 152x59 contains 1 chunk(s) [color=#FF0000]
RenderSVGInlineText {#text} at (0,-48) size 152x59
- chunk 1 (middle anchor) text run 1 at (72.50,360.00) startOffset 0 endOffset 5 width 95.00: " B"
- RenderSVGText {text} at (286,360) size 161x61 contains 1 chunk(s) [color=#FF0000]
+ chunk 1 (middle anchor) text run 1 at (44.00,360.00) startOffset 0 endOffset 5 width 152.00: "BATIK"
+ RenderSVGText {text} at (249,360) size 161x61 contains 1 chunk(s) [color=#FF0000]
RenderSVGInlineText {#text} at (0,-48) size 161x61
- chunk 1 (middle anchor) text run 1 at (286.50,360.00) startOffset 0 endOffset 5 width 87.00: " B"
+ chunk 1 (middle anchor) text run 1 at (249.50,360.00) startOffset 0 endOffset 5 width 161.00: "BATIK"
RenderSVGText {text} at (87,400) size 65x14 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-11) size 65x14
chunk 1 (middle anchor) text run 1 at (87.50,400.00) startOffset 0 endOffset 13 width 65.00: "(System font)"
-050a3d2af3a89fd85557d727cc09f071
\ No newline at end of file
+c16e7ef8955cfd27217f81ea9de9722d
\ No newline at end of file
layer at (0,0) size 800x600
RenderView at (0,0) size 800x600
layer at (0,0) size 450x500
- RenderSVGRoot {svg} at (62,16) size 349x387
- RenderSVGContainer {g} at (62,16) size 349x387
+ RenderSVGRoot {svg} at (52,16) size 348x387
+ RenderSVGContainer {g} at (52,16) size 348x387
RenderSVGText {text} at (99,30) size 251x17 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-14) size 251x17
chunk 1 (middle anchor) text run 1 at (99.50,30.00) startOffset 0 endOffset 37 width 251.00: "Gradient and filter on text and tspan"
RenderSVGGradientStop {stop} at (0,0) size 0x0
RenderSVGGradientStop {stop} at (0,0) size 0x0
RenderSVGGradientStop {stop} at (0,0) size 0x0
- RenderSVGText {text} at (64,140) size 131x79 contains 1 chunk(s)
+ RenderSVGText {text} at (54,140) size 131x79 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-28) size 35x59
- chunk 1 (middle anchor) text run 1 at (64.50,160.00) startOffset 0 endOffset 1 width 15.00: " "
+ chunk 1 (middle anchor) text run 1 at (54.50,160.00) startOffset 0 endOffset 1 width 35.00: "B"
RenderSVGTSpan {tspan} at (0,0) size 18x30
RenderSVGInlineText {#text} at (35,-24) size 18x30
- chunk 1 (middle anchor) text run 2 at (99.50,140.00) startOffset 0 endOffset 1 width 18.00: "A"
+ chunk 1 (middle anchor) text run 2 at (89.50,140.00) startOffset 0 endOffset 1 width 18.00: "A"
RenderSVGInlineText {#text} at (53,-48) size 32x59
- chunk 1 (middle anchor) text run 3 at (117.50,140.00) startOffset 0 endOffset 1 width 32.00: "T"
+ chunk 1 (middle anchor) text run 3 at (107.50,140.00) startOffset 0 endOffset 1 width 32.00: "T"
RenderSVGTSpan {tspan} at (0,0) size 11x44
RenderSVGInlineText {#text} at (85,-36) size 11x44
- chunk 1 (middle anchor) text run 4 at (149.50,140.00) startOffset 0 endOffset 1 width 11.00: "I"
+ chunk 1 (middle anchor) text run 4 at (139.50,140.00) startOffset 0 endOffset 1 width 11.00: "I"
RenderSVGTSpan {tspan} at (0,0) size 35x59
RenderSVGInlineText {#text} at (96,-48) size 35x59
- chunk 1 (middle anchor) text run 5 at (160.50,140.00) startOffset 0 endOffset 1 width 35.00: "K"
+ chunk 1 (middle anchor) text run 5 at (150.50,140.00) startOffset 0 endOffset 1 width 35.00: "K"
RenderSVGInlineText {#text} at (0,0) size 0x0
- RenderSVGText {text} at (272,140) size 137x81 contains 1 chunk(s)
+ RenderSVGText {text} at (261,140) size 137x81 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-28) size 35x61
- chunk 1 (middle anchor) text run 1 at (272.50,160.00) startOffset 0 endOffset 1 width 13.00: " "
+ chunk 1 (middle anchor) text run 1 at (261.50,160.00) startOffset 0 endOffset 1 width 35.00: "B"
RenderSVGTSpan {tspan} at (0,0) size 19x31
RenderSVGInlineText {#text} at (35,-24) size 19x31
- chunk 1 (middle anchor) text run 2 at (307.50,140.00) startOffset 0 endOffset 1 width 19.00: "A"
+ chunk 1 (middle anchor) text run 2 at (296.50,140.00) startOffset 0 endOffset 1 width 19.00: "A"
RenderSVGInlineText {#text} at (54,-48) size 32x61
- chunk 1 (middle anchor) text run 3 at (326.50,140.00) startOffset 0 endOffset 1 width 32.00: "T"
+ chunk 1 (middle anchor) text run 3 at (315.50,140.00) startOffset 0 endOffset 1 width 32.00: "T"
RenderSVGTSpan {tspan} at (0,0) size 13x46
RenderSVGInlineText {#text} at (86,-36) size 13x46
- chunk 1 (middle anchor) text run 4 at (358.50,140.00) startOffset 0 endOffset 1 width 13.00: "I"
+ chunk 1 (middle anchor) text run 4 at (347.50,140.00) startOffset 0 endOffset 1 width 13.00: "I"
RenderSVGTSpan {tspan} at (0,0) size 38x61
RenderSVGInlineText {#text} at (99,-48) size 38x61
- chunk 1 (middle anchor) text run 5 at (371.50,140.00) startOffset 0 endOffset 1 width 38.00: "K"
+ chunk 1 (middle anchor) text run 5 at (360.50,140.00) startOffset 0 endOffset 1 width 38.00: "K"
RenderSVGInlineText {#text} at (0,0) size 0x0
- RenderSVGText {text} at (64,240) size 131x79 contains 1 chunk(s) [color=#FFFFFF]
+ RenderSVGText {text} at (54,240) size 131x79 contains 1 chunk(s) [color=#FFFFFF]
RenderSVGInlineText {#text} at (0,-28) size 35x59
- chunk 1 (middle anchor) text run 1 at (64.50,260.00) startOffset 0 endOffset 1 width 15.00: " "
+ chunk 1 (middle anchor) text run 1 at (54.50,260.00) startOffset 0 endOffset 1 width 35.00: "B"
RenderSVGTSpan {tspan} at (0,0) size 18x30
RenderSVGInlineText {#text} at (35,-24) size 18x30
- chunk 1 (middle anchor) text run 2 at (99.50,240.00) startOffset 0 endOffset 1 width 18.00: "A"
+ chunk 1 (middle anchor) text run 2 at (89.50,240.00) startOffset 0 endOffset 1 width 18.00: "A"
RenderSVGInlineText {#text} at (53,-48) size 32x59
- chunk 1 (middle anchor) text run 3 at (117.50,240.00) startOffset 0 endOffset 1 width 32.00: "T"
+ chunk 1 (middle anchor) text run 3 at (107.50,240.00) startOffset 0 endOffset 1 width 32.00: "T"
RenderSVGTSpan {tspan} at (0,0) size 11x44
RenderSVGInlineText {#text} at (85,-36) size 11x44
- chunk 1 (middle anchor) text run 4 at (149.50,240.00) startOffset 0 endOffset 1 width 11.00: "I"
+ chunk 1 (middle anchor) text run 4 at (139.50,240.00) startOffset 0 endOffset 1 width 11.00: "I"
RenderSVGTSpan {tspan} at (0,0) size 35x59
RenderSVGInlineText {#text} at (96,-48) size 35x59
- chunk 1 (middle anchor) text run 5 at (160.50,240.00) startOffset 0 endOffset 1 width 35.00: "K"
+ chunk 1 (middle anchor) text run 5 at (150.50,240.00) startOffset 0 endOffset 1 width 35.00: "K"
RenderSVGInlineText {#text} at (0,0) size 0x0
- RenderSVGText {text} at (272,240) size 137x81 contains 1 chunk(s) [color=#FFFFFF]
+ RenderSVGText {text} at (261,240) size 137x81 contains 1 chunk(s) [color=#FFFFFF]
RenderSVGInlineText {#text} at (0,-28) size 35x61
- chunk 1 (middle anchor) text run 1 at (272.50,260.00) startOffset 0 endOffset 1 width 13.00: " "
+ chunk 1 (middle anchor) text run 1 at (261.50,260.00) startOffset 0 endOffset 1 width 35.00: "B"
RenderSVGTSpan {tspan} at (0,0) size 19x31
RenderSVGInlineText {#text} at (35,-24) size 19x31
- chunk 1 (middle anchor) text run 2 at (307.50,240.00) startOffset 0 endOffset 1 width 19.00: "A"
+ chunk 1 (middle anchor) text run 2 at (296.50,240.00) startOffset 0 endOffset 1 width 19.00: "A"
RenderSVGInlineText {#text} at (54,-48) size 32x61
- chunk 1 (middle anchor) text run 3 at (326.50,240.00) startOffset 0 endOffset 1 width 32.00: "T"
+ chunk 1 (middle anchor) text run 3 at (315.50,240.00) startOffset 0 endOffset 1 width 32.00: "T"
RenderSVGTSpan {tspan} at (0,0) size 13x46
RenderSVGInlineText {#text} at (86,-36) size 13x46
- chunk 1 (middle anchor) text run 4 at (358.50,240.00) startOffset 0 endOffset 1 width 13.00: "I"
+ chunk 1 (middle anchor) text run 4 at (347.50,240.00) startOffset 0 endOffset 1 width 13.00: "I"
RenderSVGTSpan {tspan} at (0,0) size 38x61
RenderSVGInlineText {#text} at (99,-48) size 38x61
- chunk 1 (middle anchor) text run 5 at (371.50,240.00) startOffset 0 endOffset 1 width 38.00: "K"
+ chunk 1 (middle anchor) text run 5 at (360.50,240.00) startOffset 0 endOffset 1 width 38.00: "K"
RenderSVGInlineText {#text} at (0,0) size 0x0
- RenderSVGText {text} at (64,340) size 131x79 contains 1 chunk(s) [color=#FF0000]
+ RenderSVGText {text} at (54,340) size 131x79 contains 1 chunk(s) [color=#FF0000]
RenderSVGInlineText {#text} at (0,-28) size 35x59
- chunk 1 (middle anchor) text run 1 at (64.50,360.00) startOffset 0 endOffset 1 width 15.00: " "
+ chunk 1 (middle anchor) text run 1 at (54.50,360.00) startOffset 0 endOffset 1 width 35.00: "B"
RenderSVGTSpan {tspan} at (0,0) size 18x30
RenderSVGInlineText {#text} at (35,-24) size 18x30
- chunk 1 (middle anchor) text run 2 at (99.50,340.00) startOffset 0 endOffset 1 width 18.00: "A"
+ chunk 1 (middle anchor) text run 2 at (89.50,340.00) startOffset 0 endOffset 1 width 18.00: "A"
RenderSVGInlineText {#text} at (53,-48) size 32x59
- chunk 1 (middle anchor) text run 3 at (117.50,340.00) startOffset 0 endOffset 1 width 32.00: "T"
+ chunk 1 (middle anchor) text run 3 at (107.50,340.00) startOffset 0 endOffset 1 width 32.00: "T"
RenderSVGTSpan {tspan} at (0,0) size 11x44
RenderSVGInlineText {#text} at (85,-36) size 11x44
- chunk 1 (middle anchor) text run 4 at (149.50,340.00) startOffset 0 endOffset 1 width 11.00: "I"
+ chunk 1 (middle anchor) text run 4 at (139.50,340.00) startOffset 0 endOffset 1 width 11.00: "I"
RenderSVGTSpan {tspan} at (0,0) size 35x59
RenderSVGInlineText {#text} at (96,-48) size 35x59
- chunk 1 (middle anchor) text run 5 at (160.50,340.00) startOffset 0 endOffset 1 width 35.00: "K"
+ chunk 1 (middle anchor) text run 5 at (150.50,340.00) startOffset 0 endOffset 1 width 35.00: "K"
RenderSVGInlineText {#text} at (0,0) size 0x0
- RenderSVGText {text} at (272,340) size 137x81 contains 1 chunk(s) [color=#FF0000]
+ RenderSVGText {text} at (261,340) size 137x81 contains 1 chunk(s) [color=#FF0000]
RenderSVGInlineText {#text} at (0,-28) size 35x61
- chunk 1 (middle anchor) text run 1 at (272.50,360.00) startOffset 0 endOffset 1 width 13.00: " "
+ chunk 1 (middle anchor) text run 1 at (261.50,360.00) startOffset 0 endOffset 1 width 35.00: "B"
RenderSVGTSpan {tspan} at (0,0) size 19x31
RenderSVGInlineText {#text} at (35,-24) size 19x31
- chunk 1 (middle anchor) text run 2 at (307.50,340.00) startOffset 0 endOffset 1 width 19.00: "A"
+ chunk 1 (middle anchor) text run 2 at (296.50,340.00) startOffset 0 endOffset 1 width 19.00: "A"
RenderSVGInlineText {#text} at (54,-48) size 32x61
- chunk 1 (middle anchor) text run 3 at (326.50,340.00) startOffset 0 endOffset 1 width 32.00: "T"
+ chunk 1 (middle anchor) text run 3 at (315.50,340.00) startOffset 0 endOffset 1 width 32.00: "T"
RenderSVGTSpan {tspan} at (0,0) size 13x46
RenderSVGInlineText {#text} at (86,-36) size 13x46
- chunk 1 (middle anchor) text run 4 at (358.50,340.00) startOffset 0 endOffset 1 width 13.00: "I"
+ chunk 1 (middle anchor) text run 4 at (347.50,340.00) startOffset 0 endOffset 1 width 13.00: "I"
RenderSVGTSpan {tspan} at (0,0) size 38x61
RenderSVGInlineText {#text} at (99,-48) size 38x61
- chunk 1 (middle anchor) text run 5 at (371.50,340.00) startOffset 0 endOffset 1 width 38.00: "K"
+ chunk 1 (middle anchor) text run 5 at (360.50,340.00) startOffset 0 endOffset 1 width 38.00: "K"
RenderSVGInlineText {#text} at (0,0) size 0x0
RenderSVGText {text} at (87,400) size 65x14 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-11) size 65x14
-7222bea5aee75c04b09925d7b86f938a
\ No newline at end of file
+9254b86390a67f60c297854bc98581f2
\ No newline at end of file
layer at (0,0) size 450x500
RenderSVGRoot {svg} at (45,36) size 349x449.20
RenderSVGContainer {g} at (45,36) size 349x449.20
- RenderSVGText {text} at (168,50) size 148x17 contains 1 chunk(s)
+ RenderSVGText {text} at (151,50) size 148x17 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-14) size 148x17
- chunk 1 (middle anchor) text run 1 at (168.00,50.00) startOffset 0 endOffset 21 width 114.00: " Text Elem"
+ chunk 1 (middle anchor) text run 1 at (151.00,50.00) startOffset 0 endOffset 21 width 148.00: "Text Element Features"
RenderSVGContainer {g} at (45,72) size 349x413.20
RenderSVGText {text} at (45,100) size 328x36 contains 1 chunk(s) [color=#191970]
RenderSVGInlineText {#text} at (0,-13) size 107x17
- chunk 1 text run 1 at (45.00,100.00) startOffset 0 endOffset 16 width 86.00: " Text can"
+ chunk 1 text run 1 at (45.00,100.00) startOffset 0 endOffset 16 width 107.00: "Text can change "
RenderSVGTSpan {tspan} at (0,0) size 54x36
RenderSVGInlineText {#text} at (107,-28) size 54x36
chunk 1 text run 2 at (152.00,100.00) startOffset 0 endOffset 5 width 54.00: "size,"
chunk 1 text run 6 at (288.00,100.00) startOffset 0 endOffset 6 width 36.00: "color,"
RenderSVGInlineText {#text} at (279,-13) size 21x17
chunk 1 text run 7 at (324.00,100.00) startOffset 0 endOffset 1 width 4.00: " "
+ chunk 1 text run 8 at (328.00,100.00) startOffset 0 endOffset 3 width 17.00: "or "
RenderSVGTSpan {tspan} at (0,0) size 28x17 [color=#FF0000]
RenderSVGInlineText {#text} at (300,-13) size 28x17
chunk 1 text run 9 at (345.00,100.00) startOffset 0 endOffset 5 width 28.00: "style"
RenderSVGInlineText {#text} at (0,0) size 0x0
RenderSVGText {text} at (45,125) size 175x17 contains 1 chunk(s) [color=#191970]
RenderSVGInlineText {#text} at (0,-13) size 175x17
- chunk 1 text run 1 at (45.00,125.00) startOffset 0 endOffset 29 width 154.00: " within a single text"
+ chunk 1 text run 1 at (45.00,125.00) startOffset 0 endOffset 29 width 175.00: "within a single text element."
RenderSVGText {text} at (45,175) size 341x17 contains 1 chunk(s) [color=#191970]
RenderSVGInlineText {#text} at (0,-13) size 151x17
chunk 1 text run 1 at (45.00,175.00) startOffset 0 endOffset 25 width 151.00: "Styling features include "
RenderPath {rect} at (45,200) size 202.50x50 [fill={[type=SOLID] [color=#1E90FF]}] [data="M45.00,200.00L247.50,200.00L247.50,250.00L45.00,250.00"]
RenderSVGText {text} at (45,225) size 316x17 contains 1 chunk(s) [color=#191970]
RenderSVGInlineText {#text} at (0,-13) size 171x17
- chunk 1 text run 1 at (45.00,225.00) startOffset 0 endOffset 28 width 153.00: " Graphics attributes "
+ chunk 1 text run 1 at (45.00,225.00) startOffset 0 endOffset 28 width 171.00: "Graphics attributes such as "
RenderSVGTSpan {tspan} at (0,0) size 46x17 [color=#FF0000]
RenderSVGInlineText {#text} at (171,-13) size 46x17
chunk 1 text run 2 at (216.00,225.00) startOffset 0 endOffset 7 width 46.00: "opacity"
chunk 1 text run 5 at (198.00,306.50) startOffset 0 endOffset 3 width 16.00: "sub"
RenderSVGInlineText {#text} at (169,-6) size 132x17
chunk 1 text run 6 at (214.00,300.00) startOffset 0 endOffset 9 width 49.00: "-scripts "
+ chunk 1 text run 7 at (263.00,300.00) startOffset 0 endOffset 14 width 83.00: "are available."
RenderSVGText {text} at (45,319) size 342x24 contains 1 chunk(s) [color=#191970]
RenderSVGInlineText {#text} at (0,-7) size 177x17
chunk 1 text run 1 at (45.00,325.00) startOffset 0 endOffset 29 width 177.00: "Baseline can also be shifted "
chunk 1 text run 4 at (265.00,330.50) startOffset 0 endOffset 4 width 26.00: "down"
RenderSVGInlineText {#text} at (246,-7) size 96x17
chunk 1 text run 5 at (291.00,325.00) startOffset 0 endOffset 1 width 4.00: " "
+ chunk 1 text run 6 at (295.00,325.00) startOffset 0 endOffset 14 width 92.00: "by percentage."
RenderSVGText {text} at (45,375) size 349x17 contains 1 chunk(s) [color=#191970]
RenderSVGInlineText {#text} at (0,-13) size 53x17
- chunk 1 text run 1 at (45.00,375.00) startOffset 0 endOffset 8 width 32.00: " "
+ chunk 1 text run 1 at (45.00,375.00) startOffset 0 endOffset 8 width 53.00: "Various "
RenderSVGTSpan {tspan} at (0,0) size 47x17 [color=#FF0000]
RenderSVGInlineText {#text} at (53,-13) size 47x17
chunk 1 text run 2 at (98.00,375.00) startOffset 0 endOffset 8 width 47.00: "outline "
chunk 1 text run 2 at (266.00,400.00) startOffset 0 endOffset 7 width 52.00: "rounded"
RenderSVGInlineText {#text} at (273,-13) size 21x17
chunk 1 text run 3 at (318.00,400.00) startOffset 0 endOffset 1 width 4.00: " "
+ chunk 1 text run 4 at (322.00,400.00) startOffset 0 endOffset 3 width 17.00: "or "
RenderSVGTSpan {tspan} at (0,0) size 51x17 [color=#000000]
RenderSVGInlineText {#text} at (294,-13) size 51x17
chunk 1 text run 5 at (339.00,400.00) startOffset 0 endOffset 8 width 51.00: "mitered."
RenderSVGContainer {g} at (208.76,433) size 170.44x52.20 [transform={m=((1.00,0.00)(0.00,1.00)) t=(250.00,475.00)}]
RenderSVGText {text} at (0,0) size 129x46 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-36) size 129x46
- chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 6 width 60.00: " "
+ chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 6 width 129.00: "Shadow"
RenderSVGText {text} at (0,0) size 129x46 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-36) size 129x46
- chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 6 width 60.00: " "
+ chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 6 width 129.00: "Shadow"
RenderSVGContainer {use} at (0,0) size 0x0
-1ce0d925d95529e51d9b8b6da0f30afd
\ No newline at end of file
+d1a743c431f0f2de24ac21dd03891d46
\ No newline at end of file
RenderSVGInlineText {#text} at (0,-14) size 44x18
chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 6 width 44.00: "sample"
RenderSVGContainer {g} at (40,36) size 379x421
- RenderSVGText {text} at (164,50) size 148x17 contains 1 chunk(s)
+ RenderSVGText {text} at (151,50) size 148x17 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-14) size 148x17
- chunk 1 (middle anchor) text run 1 at (164.50,50.00) startOffset 0 endOffset 22 width 121.00: " Text Layou"
+ chunk 1 (middle anchor) text run 1 at (151.00,50.00) startOffset 0 endOffset 22 width 148.00: "Text Layout Properties"
RenderSVGText {text} at (170,75) size 110x13 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-10) size 110x13
chunk 1 (middle anchor) text run 1 at (170.00,75.00) startOffset 0 endOffset 26 width 110.00: "Explicit Glyph Positioning"
-ed465935e9cb71745a453e7a87dc2af4
\ No newline at end of file
+f16cb802bc9b04fb1386172f7bd44c96
\ No newline at end of file
RenderSVGInlineText {#text} at (0,-14) size 44x18
chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 6 width 44.00: "sample"
RenderSVGContainer {g} at (90,36) size 249x433
- RenderSVGText {text} at (153,50) size 170x17 contains 1 chunk(s)
+ RenderSVGText {text} at (140,50) size 170x17 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-14) size 170x17
- chunk 1 (middle anchor) text run 1 at (153.00,50.00) startOffset 0 endOffset 26 width 144.00: " Text Layout Pr"
+ chunk 1 (middle anchor) text run 1 at (140.00,50.00) startOffset 0 endOffset 26 width 170.00: "Text Layout Properties (2)"
RenderSVGText {text} at (186,75) size 77x13 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-10) size 77x13
chunk 1 (middle anchor) text run 1 at (186.50,75.00) startOffset 0 endOffset 19 width 77.00: "Baseline Properties"
RenderSVGInlineText {#text} at (0,0) size 0x0
RenderSVGText {text} at (0,0) size 89x103 contains 16 chunk(s) [color=#008000]
RenderSVGInlineText {#text} at (0,-18) size 89x103
- chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 1 width 5.00: " "
- chunk 2 text run 1 at (20.00,0.00) startOffset 1 endOffset 2 width 5.00: " "
- chunk 3 text run 1 at (40.00,0.00) startOffset 2 endOffset 3 width 5.00: " "
- chunk 4 text run 1 at (60.00,0.00) startOffset 3 endOffset 4 width 5.00: " "
- chunk 5 text run 1 at (80.00,0.00) startOffset 4 endOffset 5 width 5.00: " "
- chunk 6 text run 1 at (80.00,20.00) startOffset 5 endOffset 6 width 5.00: " "
- chunk 7 text run 1 at (80.00,40.00) startOffset 6 endOffset 7 width 5.00: " "
- chunk 8 text run 1 at (80.00,60.00) startOffset 7 endOffset 8 width 5.00: " "
- chunk 9 text run 1 at (80.00,80.00) startOffset 8 endOffset 9 width 5.00: " "
- chunk 10 text run 1 at (60.00,80.00) startOffset 9 endOffset 10 width 5.00: " "
- chunk 11 text run 1 at (40.00,80.00) startOffset 10 endOffset 11 width 5.00: " "
- chunk 12 text run 1 at (20.00,80.00) startOffset 11 endOffset 12 width 5.00: " "
- chunk 13 text run 1 at (0.00,80.00) startOffset 12 endOffset 13 width 12.00: "T"
- chunk 14 text run 1 at (0.00,60.00) startOffset 13 endOffset 14 width 9.00: "e"
- chunk 15 text run 1 at (0.00,40.00) startOffset 14 endOffset 15 width 10.00: "x"
- chunk 16 text run 1 at (0.00,20.00) startOffset 15 endOffset 16 width 6.00: "t"
+ chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 1 width 12.00: "T"
+ chunk 2 text run 1 at (20.00,0.00) startOffset 1 endOffset 2 width 9.00: "e"
+ chunk 3 text run 1 at (40.00,0.00) startOffset 2 endOffset 3 width 10.00: "x"
+ chunk 4 text run 1 at (60.00,0.00) startOffset 3 endOffset 4 width 6.00: "t"
+ chunk 5 text run 1 at (80.00,0.00) startOffset 4 endOffset 5 width 7.00: "-"
+ chunk 6 text run 1 at (80.00,20.00) startOffset 5 endOffset 6 width 6.00: "i"
+ chunk 7 text run 1 at (80.00,40.00) startOffset 6 endOffset 7 width 10.00: "n"
+ chunk 8 text run 1 at (80.00,60.00) startOffset 7 endOffset 8 width 7.00: "-"
+ chunk 9 text run 1 at (80.00,80.00) startOffset 8 endOffset 9 width 9.00: "a"
+ chunk 10 text run 1 at (60.00,80.00) startOffset 9 endOffset 10 width 7.00: "-"
+ chunk 11 text run 1 at (40.00,80.00) startOffset 10 endOffset 11 width 8.00: "s"
+ chunk 12 text run 1 at (20.00,80.00) startOffset 11 endOffset 12 width 10.00: "q"
+ chunk 13 text run 1 at (0.00,80.00) startOffset 12 endOffset 13 width 10.00: "u"
+ chunk 14 text run 1 at (0.00,60.00) startOffset 13 endOffset 14 width 9.00: "a"
+ chunk 15 text run 1 at (0.00,40.00) startOffset 14 endOffset 15 width 7.00: "r"
+ chunk 16 text run 1 at (0.00,20.00) startOffset 15 endOffset 16 width 9.00: "e"
RenderSVGText {text} at (149,450) size 152x17 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-13) size 63x17
chunk 1 (middle anchor) text run 1 at (149.00,450.00) startOffset 0 endOffset 10 width 63.00: "Text with "
RenderSVGInlineText {#text} at (260,23) size 51x18
chunk 1 text run 6 at (270.78,-66.97) startOffset 0 endOffset 9 width 51.00: "all with "
RenderSVGInlineText {#text} at (311,23) size 91x18
- chunk 1 text run 7 at (321.78,-66.97) startOffset 0 endOffset 16 width 91.00: " different links"
+ chunk 1 text run 7 at (321.78,-66.97) startOffset 0 endOffset 16 width 91.00: "different links."
RenderSVGContainer {g} at (50,204.33) size 414x129.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(40.00,330.00)}]
RenderSVGContainer {use} at (139.50,204.33) size 141x125.67
RenderSVGContainer {g} at (139.50,204.33) size 141x125.67
RenderSVGInlineText {#text} at (272,45) size 51x18
chunk 1 text run 6 at (282.96,-44.00) startOffset 0 endOffset 9 width 51.00: "all with "
RenderSVGInlineText {#text} at (323,45) size 91x18
- chunk 1 text run 7 at (333.96,-44.00) startOffset 0 endOffset 16 width 91.00: " different links"
+ chunk 1 text run 7 at (333.96,-44.00) startOffset 0 endOffset 16 width 91.00: "different links."
RenderSVGContainer {g} at (50,349.33) size 417x129.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(40.00,475.00)}]
RenderSVGContainer {use} at (139.50,349.33) size 141x125.67
RenderSVGContainer {g} at (139.50,349.33) size 141x125.67
RenderSVGInlineText {#text} at (275,52) size 51x18
chunk 1 text run 6 at (285.21,-37.01) startOffset 0 endOffset 9 width 51.00: "all with "
RenderSVGInlineText {#text} at (326,52) size 91x18
- chunk 1 text run 7 at (336.21,-37.01) startOffset 0 endOffset 16 width 91.00: " different links"
+ chunk 1 text run 7 at (336.21,-37.01) startOffset 0 endOffset 16 width 91.00: "different links."
-3afffe7d10473461bfc0eff1d6c111fd
\ No newline at end of file
+95b0e5e1abcf9f574f717ae77805bba6
\ No newline at end of file
RenderSVGInlineText {#text} at (0,-14) size 44x18
chunk 1 (middle anchor) text run 1 at (-22.00,0.00) startOffset 0 endOffset 6 width 44.00: "sample"
RenderSVGContainer {g} at (15,36) size 415x433
- RenderSVGText {text} at (78,50) size 332x17 contains 1 chunk(s)
+ RenderSVGText {text} at (59,50) size 332x17 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-14) size 332x17
- chunk 1 (middle anchor) text run 1 at (78.00,50.00) startOffset 0 endOffset 47 width 294.00: " Text Alignment, Geometry, Reference"
- RenderSVGContainer {g} at (154,70) size 188x70
+ chunk 1 (middle anchor) text run 1 at (59.00,50.00) startOffset 0 endOffset 47 width 332.00: "Text Alignment, Geometry, References, and Spans"
+ RenderSVGContainer {g} at (111,70) size 231x70
RenderPath {line} at (224.50,70) size 1x70 [stroke={[type=SOLID] [color=#808080]}] [fill={[type=SOLID] [color=#000000]}] [data="M225.00,70.00L225.00,140.00"]
RenderSVGText {text} at (225,90) size 117x17 contains 1 chunk(s) [color=#191970]
RenderSVGInlineText {#text} at (0,-13) size 117x17
- chunk 1 text run 1 at (225.00,90.00) startOffset 0 endOffset 19 width 83.00: " text"
- RenderSVGText {text} at (181,110) size 134x17 contains 1 chunk(s) [color=#8B0000]
+ chunk 1 text run 1 at (225.00,90.00) startOffset 0 endOffset 19 width 117.00: "text-anchor=\"start\""
+ RenderSVGText {text} at (158,110) size 134x17 contains 1 chunk(s) [color=#8B0000]
RenderSVGInlineText {#text} at (0,-13) size 134x17
- chunk 1 (middle anchor) text run 1 at (181.00,110.00) startOffset 0 endOffset 20 width 88.00: " text-"
- RenderSVGText {text} at (154,130) size 114x17 contains 1 chunk(s) [color=#228B22]
+ chunk 1 (middle anchor) text run 1 at (158.00,110.00) startOffset 0 endOffset 20 width 134.00: "text-anchor=\"middle\""
+ RenderSVGText {text} at (111,130) size 114x17 contains 1 chunk(s) [color=#228B22]
RenderSVGInlineText {#text} at (0,-13) size 114x17
- chunk 1 (end anchor) text run 1 at (154.00,130.00) startOffset 0 endOffset 17 width 71.00: " te"
+ chunk 1 (end anchor) text run 1 at (111.00,130.00) startOffset 0 endOffset 17 width 114.00: "text-anchor=\"end\""
RenderSVGContainer {g} at (45,145) size 109x54 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,180.00)}]
RenderSVGText {text} at (-55,0) size 108x45 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-35) size 109x45
RenderSVGText {text} at (-80,15) size 158x18 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-14) size 159x18
chunk 1 (middle anchor) text run 1 at (-79.50,15.00) startOffset 0 endOffset 26 width 159.00: "referenced text via <tref>"
- RenderSVGContainer {g} at (178,197) size 94x47 [transform={m=((1.00,0.00)(0.00,1.00)) t=(225.00,225.00)}]
- RenderSVGText {text} at (-39,0) size 85x36 contains 1 chunk(s)
+ RenderSVGContainer {g} at (178,197) size 93x47 [transform={m=((1.00,0.00)(0.00,1.00)) t=(225.00,225.00)}]
+ RenderSVGText {text} at (-43,0) size 86x36 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-28) size 25x36
- chunk 1 (middle anchor) text run 1 at (-38.50,0.00) startOffset 0 endOffset 2 width 16.00: " "
- RenderSVGTSpan {tspan} at (0,0) size 24x36 [color=#8B0000]
+ chunk 1 (middle anchor) text run 1 at (-43.00,0.00) startOffset 0 endOffset 2 width 25.00: "sa"
+ RenderSVGTSpan {tspan} at (0,0) size 25x36 [color=#8B0000]
RenderSVGInlineText {#text} at (25,-28) size 25x36
- chunk 1 (middle anchor) text run 2 at (-13.50,0.00) startOffset 0 endOffset 1 width 25.00: "m"
+ chunk 1 (middle anchor) text run 2 at (-18.00,0.00) startOffset 0 endOffset 1 width 25.00: "m"
RenderSVGInlineText {#text} at (50,-28) size 36x36
- chunk 1 (middle anchor) text run 3 at (11.50,0.00) startOffset 0 endOffset 3 width 36.00: "ple"
+ chunk 1 (middle anchor) text run 3 at (7.00,0.00) startOffset 0 endOffset 3 width 36.00: "ple"
RenderSVGText {text} at (-47,15) size 92x18 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-14) size 93x18
chunk 1 (middle anchor) text run 1 at (-46.50,15.00) startOffset 0 endOffset 14 width 93.00: "use of <tspan>"
RenderSVGText {text} at (-80,15) size 160x18 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-14) size 160x18
chunk 1 (middle anchor) text run 1 at (-80.00,15.00) startOffset 0 endOffset 25 width 160.00: "predefined text via <use>"
- RenderSVGText {text} at (156,280) size 163x17 contains 1 chunk(s)
+ RenderSVGText {text} at (143,280) size 163x17 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-13) size 163x17
- chunk 1 (middle anchor) text run 1 at (156.50,280.00) startOffset 0 endOffset 25 width 137.00: " Text Renderin"
+ chunk 1 (middle anchor) text run 1 at (143.50,280.00) startOffset 0 endOffset 25 width 163.00: "Text Rendering Properties"
RenderSVGContainer {g} at (24,297) size 152x42 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,305.00)}]
RenderSVGContainer {g} at (58.00,297) size 84x36 [transform={m=((-1.00,-0.00)(0.00,-1.00)) t=(0.00,0.00)}]
RenderSVGContainer {use} at (58.00,297) size 84x36
RenderSVGText {text} at (-50,15) size 98x18 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-14) size 99x18
chunk 1 (middle anchor) text run 1 at (-49.50,15.00) startOffset 0 endOffset 17 width 99.00: "text as clip-path"
- RenderSVGText {text} at (142,440) size 27x69 contains 1 chunk(s) [color=#8B0000]
+ RenderSVGText {text} at (136,440) size 27x69 contains 1 chunk(s) [color=#8B0000]
RenderSVGInlineText {#text} at (0,-54) size 27x69
- chunk 1 (middle anchor) text run 1 at (142.50,440.00) startOffset 0 endOffset 1 width 15.00: " "
+ chunk 1 (middle anchor) text run 1 at (136.50,440.00) startOffset 0 endOffset 1 width 27.00: "a"
RenderSVGText {text} at (77,455) size 145x18 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-14) size 145x18
chunk 1 (middle anchor) text run 1 at (77.50,455.00) startOffset 0 endOffset 23 width 145.00: "stroke-linejoin=\"miter\""
RenderSVGText {text} at (74,465) size 152x18 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-14) size 152x18
chunk 1 (middle anchor) text run 1 at (74.00,465.00) startOffset 0 endOffset 23 width 152.00: "stroke-linecap=\"square\""
- RenderSVGText {text} at (292,440) size 27x69 contains 1 chunk(s) [color=#8B0000]
+ RenderSVGText {text} at (286,440) size 27x69 contains 1 chunk(s) [color=#8B0000]
RenderSVGInlineText {#text} at (0,-54) size 27x69
- chunk 1 (middle anchor) text run 1 at (292.50,440.00) startOffset 0 endOffset 1 width 15.00: " "
+ chunk 1 (middle anchor) text run 1 at (286.50,440.00) startOffset 0 endOffset 1 width 27.00: "a"
RenderSVGText {text} at (225,455) size 150x18 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-14) size 150x18
chunk 1 (middle anchor) text run 1 at (225.00,455.00) startOffset 0 endOffset 23 width 150.00: "stroke-linejoin=\"round\""
-d1d774c2e97e3ea838ae86fb4ab41748
\ No newline at end of file
+9274d52374ee3fc651bea64bb04299a6
\ No newline at end of file
RenderSVGRoot {svg} at (12,26) size 469x306.50
RenderSVGHiddenContainer {defs} at (0,0) size 0x0
RenderSVGContainer {g} at (12,26) size 469x306.50
- RenderSVGText {text} at (147,40) size 166x17 contains 1 chunk(s)
+ RenderSVGText {text} at (142,40) size 166x17 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-14) size 166x17
- chunk 1 (middle anchor) text run 1 at (147.50,40.00) startOffset 0 endOffset 28 width 155.00: " Text display and"
+ chunk 1 (middle anchor) text run 1 at (142.00,40.00) startOffset 0 endOffset 28 width 166.00: "Text display and visibility."
RenderSVGText {text} at (143,74) size 164x18 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-14) size 164x18
chunk 1 (middle anchor) text run 1 at (143.00,74.00) startOffset 0 endOffset 27 width 164.00: "Visibility on text & tspans"
chunk 1 text run 2 at (53.00,70.00) startOffset 0 endOffset 8 width 49.00: "tspan 1 "
RenderSVGTSpan {tspan} at (0,0) size 45x18 [color=#800080]
RenderSVGInlineText {#text} at (82,-14) size 45x18
- chunk 1 text run 3 at (102.00,70.00) startOffset 0 endOffset 7 width 41.00: " tspan "
+ chunk 1 text run 3 at (102.00,70.00) startOffset 0 endOffset 7 width 45.00: "tspan 2"
RenderSVGInlineText {#text} at (127,-14) size 81x18
chunk 1 text run 4 at (147.00,70.00) startOffset 0 endOffset 12 width 81.00: " more span 1"
RenderSVGInlineText {#text} at (208,-14) size 66x18
chunk 1 text run 2 at (53.00,90.00) startOffset 0 endOffset 8 width 49.00: "tspan 1 "
RenderSVGTSpan {tspan} at (0,0) size 45x18 [color=#800080]
RenderSVGInlineText {#text} at (82,-14) size 45x18
- chunk 1 text run 3 at (102.00,90.00) startOffset 0 endOffset 7 width 41.00: " tspan "
+ chunk 1 text run 3 at (102.00,90.00) startOffset 0 endOffset 7 width 45.00: "tspan 2"
RenderSVGInlineText {#text} at (127,-14) size 81x18
chunk 1 text run 4 at (147.00,90.00) startOffset 0 endOffset 12 width 81.00: " more span 1"
RenderSVGInlineText {#text} at (208,-14) size 66x18
chunk 1 text run 2 at (53.00,110.00) startOffset 0 endOffset 8 width 49.00: "tspan 1 "
RenderSVGTSpan {tspan} at (0,0) size 45x18 [color=#800080]
RenderSVGInlineText {#text} at (82,-14) size 45x18
- chunk 1 text run 3 at (102.00,110.00) startOffset 0 endOffset 7 width 41.00: " tspan "
+ chunk 1 text run 3 at (102.00,110.00) startOffset 0 endOffset 7 width 45.00: "tspan 2"
RenderSVGInlineText {#text} at (127,-14) size 81x18
chunk 1 text run 4 at (147.00,110.00) startOffset 0 endOffset 12 width 81.00: " more span 1"
RenderSVGInlineText {#text} at (208,-14) size 66x18
chunk 1 text run 2 at (53.00,130.00) startOffset 0 endOffset 8 width 49.00: "tspan 1 "
RenderSVGTSpan {tspan} at (0,0) size 45x18 [color=#800080]
RenderSVGInlineText {#text} at (82,-14) size 45x18
- chunk 1 text run 3 at (102.00,130.00) startOffset 0 endOffset 7 width 41.00: " tspan "
+ chunk 1 text run 3 at (102.00,130.00) startOffset 0 endOffset 7 width 45.00: "tspan 2"
RenderSVGInlineText {#text} at (127,-14) size 81x18
chunk 1 text run 4 at (147.00,130.00) startOffset 0 endOffset 12 width 81.00: " more span 1"
RenderSVGInlineText {#text} at (208,-14) size 66x18
RenderSVGInlineText {#text} at (33,-14) size 49x18
chunk 1 text run 2 at (53.00,190.00) startOffset 0 endOffset 8 width 49.00: "tspan 1 "
RenderSVGInlineText {#text} at (82,-14) size 77x18
- chunk 1 text run 3 at (102.00,190.00) startOffset 0 endOffset 11 width 73.00: " more span "
+ chunk 1 text run 3 at (102.00,190.00) startOffset 0 endOffset 11 width 77.00: "more span 1"
RenderSVGInlineText {#text} at (159,-14) size 66x18
chunk 1 text run 4 at (179.00,190.00) startOffset 0 endOffset 12 width 66.00: " finish text"
RenderSVGText {text} at (20,210) size 95x18 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-14) size 33x18
chunk 1 text run 1 at (20.00,210.00) startOffset 0 endOffset 5 width 33.00: "Text "
RenderSVGInlineText {#text} at (33,-14) size 62x18
- chunk 1 text run 2 at (53.00,210.00) startOffset 0 endOffset 11 width 62.00: " finish tex"
+ chunk 1 text run 2 at (53.00,210.00) startOffset 0 endOffset 11 width 62.00: "finish text"
RenderSVGText {text} at (20,230) size 95x18 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-14) size 33x18
chunk 1 text run 1 at (20.00,230.00) startOffset 0 endOffset 5 width 33.00: "Text "
RenderSVGInlineText {#text} at (33,-14) size 62x18
- chunk 1 text run 2 at (53.00,230.00) startOffset 0 endOffset 11 width 62.00: " finish tex"
+ chunk 1 text run 2 at (53.00,230.00) startOffset 0 endOffset 11 width 62.00: "finish text"
RenderSVGText {text} at (20,250) size 225x18 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-14) size 33x18
chunk 1 text run 1 at (20.00,250.00) startOffset 0 endOffset 5 width 33.00: "Text "
RenderSVGInlineText {#text} at (33,-14) size 49x18
chunk 1 text run 2 at (53.00,250.00) startOffset 0 endOffset 8 width 49.00: "tspan 1 "
RenderSVGInlineText {#text} at (82,-14) size 77x18
- chunk 1 text run 3 at (102.00,250.00) startOffset 0 endOffset 11 width 73.00: " more span "
+ chunk 1 text run 3 at (102.00,250.00) startOffset 0 endOffset 11 width 77.00: "more span 1"
RenderSVGInlineText {#text} at (159,-14) size 66x18
chunk 1 text run 4 at (179.00,250.00) startOffset 0 endOffset 12 width 66.00: " finish text"
RenderSVGContainer {use} at (0,0) size 0x0
-caf2559181dfad15602793d63a11acf5
\ No newline at end of file
+2a554f0e682e7c1f485877cd95d896af
\ No newline at end of file
RenderSVGInlineText {#text} at (0,-14) size 44x18
chunk 1 (middle anchor) text run 1 at (-22.00,0.00) startOffset 0 endOffset 6 width 44.00: "sample"
RenderSVGContainer {g} at (-71,36) size 581x397
- RenderSVGText {text} at (151,50) size 180x17 contains 1 chunk(s)
+ RenderSVGText {text} at (135,50) size 180x17 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-14) size 180x17
- chunk 1 (middle anchor) text run 1 at (151.50,50.00) startOffset 0 endOffset 26 width 147.00: " Text Font Face"
+ chunk 1 (middle anchor) text run 1 at (135.00,50.00) startOffset 0 endOffset 26 width 180.00: "Text Font Faces and Styles"
RenderSVGText {text} at (184,75) size 82x13 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-10) size 82x13
chunk 1 (middle anchor) text run 1 at (184.00,75.00) startOffset 0 endOffset 19 width 82.00: "Standard Font Faces"
RenderSVGText {text} at (181,310) size 88x13 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-10) size 88x13
chunk 1 (middle anchor) text run 1 at (181.00,310.00) startOffset 0 endOffset 19 width 88.00: "Named Font Families"
- RenderSVGText {text} at (133,325) size 193x13 contains 1 chunk(s)
+ RenderSVGText {text} at (128,325) size 193x13 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-10) size 193x13
- chunk 1 (middle anchor) text run 1 at (133.00,325.00) startOffset 0 endOffset 49 width 184.00: " (Not all typefaces are available on a"
+ chunk 1 (middle anchor) text run 1 at (128.50,325.00) startOffset 0 endOffset 49 width 193.00: "(Not all typefaces are available on all systems.)"
RenderSVGContainer {g} at (58,332) size 84x51 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,360.00)}]
RenderSVGContainer {use} at (58,332) size 84x36
RenderSVGContainer {g} at (58,332) size 84x36
RenderSVGContainer {g} at (10,-14) size 2147483648.00x2147483648.00
RenderSVGText {text} at (10,0) size 28x18 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-14) size 28x18
- chunk 1 text run 1 at (10.00,0.00) startOffset 0 endOffset 2 width 8.00: " "
+ chunk 1 text run 1 at (10.00,0.00) startOffset 0 endOffset 2 width 16.00: "X "
+ chunk 1 text run 2 at (26.00,0.00) startOffset 0 endOffset 1 width 12.00: "X"
RenderSVGText {text} at (120,75) size 107x18 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-14) size 107x18
chunk 1 text run 1 at (120.00,75.00) startOffset 0 endOffset 17 width 107.00: "no xml:space attr"
RenderSVGText {text} at (10,100) size 28x18 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-14) size 28x18
- chunk 1 text run 1 at (10.00,100.00) startOffset 0 endOffset 2 width 8.00: " "
+ chunk 1 text run 1 at (10.00,100.00) startOffset 0 endOffset 2 width 16.00: "X "
+ chunk 1 text run 2 at (26.00,100.00) startOffset 0 endOffset 1 width 12.00: "X"
RenderSVGText {text} at (120,100) size 129x18 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-14) size 129x18
chunk 1 text run 1 at (120.00,100.00) startOffset 0 endOffset 19 width 129.00: "xml:space=\"default\""
chunk 1 text run 1 at (345.00,100.00) startOffset 0 endOffset 20 width 139.00: "xml:space=\"preserve\""
RenderSVGText {text} at (235,150) size 28x18 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-14) size 28x18
- chunk 1 text run 1 at (235.00,150.00) startOffset 0 endOffset 2 width 8.00: " "
+ chunk 1 text run 1 at (235.00,150.00) startOffset 0 endOffset 2 width 16.00: "X "
+ chunk 1 text run 2 at (251.00,150.00) startOffset 0 endOffset 1 width 12.00: "X"
RenderSVGTSpan {tspan} at (0,0) size 0x0 [color=#FF0000]
RenderSVGText {text} at (345,140) size 139x37 contains 2 chunk(s)
RenderSVGInlineText {#text} at (0,-14) size 125x18
chunk 2 text run 1 at (345.00,159.20) startOffset 0 endOffset 20 width 139.00: "xml:space=\"preserve\""
RenderSVGText {text} at (235,175) size 36x18 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-14) size 28x18
- chunk 1 text run 1 at (235.00,175.00) startOffset 0 endOffset 2 width 8.00: " "
+ chunk 1 text run 1 at (235.00,175.00) startOffset 0 endOffset 2 width 16.00: "X "
+ chunk 1 text run 2 at (251.00,175.00) startOffset 0 endOffset 1 width 12.00: "X"
RenderSVGTSpan {tspan} at (0,0) size 8x18 [color=#FF0000]
RenderSVGInlineText {#text} at (28,-14) size 8x18
chunk 1 text run 3 at (263.00,175.00) startOffset 0 endOffset 2 width 8.00: " "
chunk 2 text run 1 at (345.00,184.20) startOffset 0 endOffset 20 width 139.00: "xml:space=\"preserve\""
RenderSVGText {text} at (235,200) size 36x18 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-14) size 32x18
- chunk 1 text run 1 at (235.00,200.00) startOffset 0 endOffset 2 width 8.00: " "
+ chunk 1 text run 1 at (235.00,200.00) startOffset 0 endOffset 2 width 16.00: "X "
+ chunk 1 text run 2 at (251.00,200.00) startOffset 0 endOffset 2 width 16.00: "X "
RenderSVGTSpan {tspan} at (0,0) size 4x18 [color=#FF0000]
RenderSVGInlineText {#text} at (32,-14) size 4x18
chunk 1 text run 3 at (267.00,200.00) startOffset 0 endOffset 1 width 4.00: " "
chunk 1 text run 1 at (235.00,225.00) startOffset 0 endOffset 1 width 4.00: " "
RenderSVGInlineText {#text} at (4,-14) size 32x18
chunk 1 text run 2 at (239.00,225.00) startOffset 0 endOffset 3 width 20.00: " X "
+ chunk 1 text run 3 at (259.00,225.00) startOffset 0 endOffset 1 width 12.00: "X"
RenderSVGText {text} at (345,215) size 139x37 contains 2 chunk(s)
RenderSVGInlineText {#text} at (0,-14) size 67x18
chunk 1 text run 1 at (345.00,215.00) startOffset 0 endOffset 12 width 67.00: "tspan start "
chunk 1 text run 1 at (235.00,250.00) startOffset 0 endOffset 1 width 4.00: " "
RenderSVGInlineText {#text} at (4,-14) size 28x18
chunk 1 text run 2 at (239.00,250.00) startOffset 0 endOffset 2 width 16.00: "X "
+ chunk 1 text run 3 at (255.00,250.00) startOffset 0 endOffset 1 width 12.00: "X"
RenderSVGText {text} at (345,240) size 139x37 contains 2 chunk(s)
RenderSVGInlineText {#text} at (0,-14) size 98x18
chunk 1 text run 1 at (345.00,240.00) startOffset 0 endOffset 17 width 98.00: "tspan near start "
chunk 2 text run 1 at (345.00,259.20) startOffset 0 endOffset 20 width 139.00: "xml:space=\"preserve\""
RenderSVGText {text} at (235,275) size 32x18 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-14) size 12x18
- chunk 1 text run 1 at (235.00,275.00) startOffset 0 endOffset 1 width 4.00: " "
+ chunk 1 text run 1 at (235.00,275.00) startOffset 0 endOffset 1 width 12.00: "X"
RenderSVGTSpan {tspan} at (0,0) size 4x18 [color=#FF0000]
RenderSVGInlineText {#text} at (12,-14) size 4x18
chunk 1 text run 2 at (247.00,275.00) startOffset 0 endOffset 1 width 4.00: " "
chunk 2 text run 1 at (345.00,284.20) startOffset 0 endOffset 20 width 139.00: "xml:space=\"preserve\""
RenderSVGText {text} at (235,300) size 32x18 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-14) size 16x18
- chunk 1 text run 1 at (235.00,300.00) startOffset 0 endOffset 2 width 8.00: " "
+ chunk 1 text run 1 at (235.00,300.00) startOffset 0 endOffset 2 width 16.00: "X "
RenderSVGTSpan {tspan} at (0,0) size 4x18 [color=#FF0000]
RenderSVGInlineText {#text} at (16,-14) size 4x18
chunk 1 text run 2 at (251.00,300.00) startOffset 0 endOffset 1 width 4.00: " "
chunk 2 text run 1 at (345.00,309.20) startOffset 0 endOffset 20 width 139.00: "xml:space=\"preserve\""
RenderSVGText {text} at (235,325) size 28x18 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-14) size 28x18
- chunk 1 text run 1 at (235.00,325.00) startOffset 0 endOffset 2 width 16.00: " X"
+ chunk 1 text run 1 at (235.00,325.00) startOffset 0 endOffset 2 width 16.00: "X "
+ chunk 1 text run 2 at (251.00,325.00) startOffset 0 endOffset 1 width 12.00: "X"
RenderSVGText {text} at (345,315) size 117x37 contains 2 chunk(s)
RenderSVGInlineText {#text} at (0,-14) size 117x18
chunk 1 text run 1 at (345.00,315.00) startOffset 0 endOffset 16 width 117.00: "unknown element "
chunk 2 text run 1 at (345.00,334.20) startOffset 0 endOffset 5 width 26.00: "start"
RenderSVGText {text} at (235,350) size 28x18 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-14) size 16x18
- chunk 1 text run 1 at (235.00,350.00) startOffset 0 endOffset 2 width 8.00: " "
+ chunk 1 text run 1 at (235.00,350.00) startOffset 0 endOffset 2 width 16.00: "X "
RenderSVGInlineText {#text} at (16,-14) size 12x18
- chunk 1 text run 2 at (251.00,350.00) startOffset 0 endOffset 1 width 4.00: " "
+ chunk 1 text run 2 at (251.00,350.00) startOffset 0 endOffset 1 width 12.00: "X"
RenderSVGText {text} at (345,340) size 117x37 contains 2 chunk(s)
RenderSVGInlineText {#text} at (0,-14) size 117x18
chunk 1 text run 1 at (345.00,340.00) startOffset 0 endOffset 16 width 117.00: "unknown element "
chunk 2 text run 1 at (345.00,359.20) startOffset 0 endOffset 6 width 43.00: "middle"
RenderSVGText {text} at (236,375) size 28x18 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-14) size 28x18
- chunk 1 text run 1 at (236.00,375.00) startOffset 0 endOffset 2 width 8.00: " "
+ chunk 1 text run 1 at (236.00,375.00) startOffset 0 endOffset 2 width 16.00: "X "
+ chunk 1 text run 2 at (252.00,375.00) startOffset 0 endOffset 1 width 12.00: "X"
RenderSVGInlineText {#text} at (0,0) size 0x0
RenderSVGText {text} at (345,365) size 117x37 contains 2 chunk(s)
RenderSVGInlineText {#text} at (0,-14) size 117x18
-8e6a70af163a7808d980a8bca7a6d172
\ No newline at end of file
+8e2b08be77371c6473a6e710b039afcd
\ No newline at end of file
-f7f4170c359af0eec99a4faa9802b3eb
\ No newline at end of file
+e4b836e5d629495bd8522838c209fbb2
\ No newline at end of file
-2612ace66227159723eecb180408084d
\ No newline at end of file
+814ea9e4be11a502fd4ce559a856becb
\ No newline at end of file
-8ca024cde0e7c366d222db40536e2623
\ No newline at end of file
+8b8c774b6f148d51babc94195bcc6823
\ No newline at end of file
layer at (0,0) size 800x600
RenderView at (0,0) size 800x600
layer at (0,0) size 800x600
- RenderSVGRoot {svg} at (0.83,0.83) size 989.17x598.33
- RenderSVGContainer {g} at (80,86.67) size 910x326.67
- RenderSVGText {text} at (119,80) size 458x36 contains 1 chunk(s)
- RenderSVGInlineText {#text} at (0,-28) size 458x36
+ RenderSVGRoot {svg} at (0.83,0.83) size 982.50x598.33
+ RenderSVGContainer {g} at (80,86.67) size 903.33x326.67
+ RenderSVGText {text} at (119,80) size 455x36 contains 1 chunk(s)
+ RenderSVGInlineText {#text} at (0,-28) size 455x36
chunk 1 (end anchor) text run 1 at (119.00,80.00) startOffset 0 endOffset 37 width 341.00 RTL: "\x{644}\x{645}\x{627}\x{630}\x{627} \x{644}\x{627} \x{64A}\x{62A}\x{643}\x{644}\x{645}\x{648}\x{646} \x{627}\x{644}\x{644}\x{651}\x{63A}\x{629} \x{627}\x{644}\x{639}\x{631}\x{628}\x{64A}\x{629} \x{641}\x{62D}\x{633}\x{628}\x{61F}"
- RenderSVGText {text} at (48,160) size 546x41 contains 1 chunk(s)
- RenderSVGInlineText {#text} at (0,-32) size 546x41
+ RenderSVGText {text} at (48,160) size 542x41 contains 1 chunk(s)
+ RenderSVGInlineText {#text} at (0,-32) size 542x41
chunk 1 (end anchor) text run 1 at (48.00,160.00) startOffset 0 endOffset 37 width 412.00 RTL: "\x{644}\x{645}\x{627}\x{630}\x{627} \x{644}\x{627} \x{64A}\x{62A}\x{643}\x{644}\x{645}\x{648}\x{646} \x{627}\x{644}\x{644}\x{651}\x{63A}\x{629} \x{627}\x{644}\x{639}\x{631}\x{628}\x{64A}\x{629} \x{641}\x{62D}\x{633}\x{628}\x{61F}"
- RenderSVGText {text} at (119,240) size 458x36 contains 1 chunk(s)
- RenderSVGInlineText {#text} at (0,-28) size 458x36
+ RenderSVGText {text} at (119,240) size 455x36 contains 1 chunk(s)
+ RenderSVGInlineText {#text} at (0,-28) size 455x36
chunk 1 (end anchor) text run 1 at (119.00,240.00) startOffset 0 endOffset 37 width 341.00 RTL: "\x{644}\x{645}\x{627}\x{630}\x{627} \x{644}\x{627} \x{64A}\x{62A}\x{643}\x{644}\x{645}\x{648}\x{646} \x{627}\x{644}\x{644}\x{651}\x{63A}\x{629} \x{627}\x{644}\x{639}\x{631}\x{628}\x{64A}\x{629} \x{641}\x{62D}\x{633}\x{628}\x{61F}"
RenderSVGText {text} at (10,340) size 264x46 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-36) size 264x46
-a1b292729346bd1ff093e4cf701a4605
\ No newline at end of file
+87afb739dd957b5d9778af35ef0309b6
\ No newline at end of file
-6daff68c0c5f3fd0c65078ab7453a771
\ No newline at end of file
+cc817a6d98771186f913bdd816627b9d
\ No newline at end of file
RenderSVGContainer {g} at (30,10) size 660x500
RenderSVGText {text} at (3,8) size 52x9 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-7) size 52x9
- chunk 1 text run 1 at (3.00,8.00) startOffset 0 endOffset 16 width 50.00: " letter-spacing:"
+ chunk 1 text run 1 at (3.00,8.00) startOffset 0 endOffset 16 width 52.00: "letter-spacing:0"
RenderSVGText {text} at (3,16) size 38x9 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-7) size 38x9
chunk 1 text run 1 at (3.00,16.00) startOffset 0 endOffset 17 width 38.00: "letter-spacing:-1"
-ca079fd04e880db097a58362cf079194
\ No newline at end of file
+79db9993a99642bedaceea4613524645
\ No newline at end of file
-aef793787a3d51b18b46be9ff3bd88f4
\ No newline at end of file
+8134633414eba4f7ed52a725056b17a3
\ No newline at end of file
chunk 1 text run 1 at (10.00,70.00) startOffset 0 endOffset 26 width 174.00: "StartIndex: 0. NumChars: 9"
RenderSVGText {text} at (10,128) size 403x55 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-43) size 403x55
- chunk 1 text run 1 at (10.00,128.00) startOffset 0 endOffset 4 width 57.00: " a"
+ chunk 1 text run 1 at (10.00,128.00) startOffset 0 endOffset 4 width 78.00: "abc "
+ chunk 1 text run 2 at (88.00,128.00) startOffset 0 endOffset 4 width 86.00 RTL: " \x{5D3}\x{5D4}\x{5D5}"
+ chunk 1 text run 3 at (176.00,128.00) startOffset 0 endOffset 3 width 72.00: "123"
+ chunk 1 text run 4 at (248.00,128.00) startOffset 0 endOffset 4 width 91.00 RTL: "\x{5D0}\x{5D1}\x{5D2} "
+ chunk 1 text run 5 at (340.00,128.00) startOffset 0 endOffset 4 width 73.00: " def"
RenderSVGContainer {g} at (16.67,366.67) size 716.67x33.33
RenderPath {rect} at (16.67,366.67) size 166.67x33.33 [fill={[type=SOLID] [color=#0000FF]}] [data="M10.00,160.00L110.00,160.00L110.00,180.00L10.00,180.00"]
RenderSVGText {text} at (20,175) size 80x18 contains 1 chunk(s) [color=#FFFFFF]
-56d459c01fa89880151a05ed45db409f
\ No newline at end of file
+c2bb0197ee5fdb34d25f2a45c3400c0a
\ No newline at end of file
+2007-08-08 Nikolas Zimmermann <zimmermann@kde.org>
+
+ Reviewed by Oliver.
+
+ Fixes: http://bugs.webkit.org/show_bug.cgi?id=13909 (SVG text selection doesn't work with RTL text)
+
+ Use drawHighlightForText() to draw the selection, instead of my home-brewn solution.
+ Affected code in SVGRootInlineBox::paintSelectionForTextBox. Removed not anymore needed
+ helper function cummulatedWidthOfSelectionRange.
+
+ Dump all contained InlineTextBox(es) in SVGRenderTreeAsText, take into account multiple
+ child text boxes in ie. a RenderSVGInlineText objects (which happens for RTL text and
+ LTR text cases where newlines were involved - see changed testcase results.)
+ This affects a lot of LTR tests which actually had more than one child text box, that
+ wasn't taken properly into account before (in terms of selection, not rendering.)
+
+ Fix selection for RTL text by taking box start offsets into account in closestCharacterToPosition()
+ and by offering RTL text selection special cases in svgCharacterHitsPosition().
+
+ Centralized the creation of a TextStyle object for text selection/painting in a new helper function
+ svgTextStyleForInlineTextBox. Add new helper functions calculateGlyphWidth/calculateGlyphHeight to
+ centralize these calculations -> use these new helpers everywhere to avoid code duplication.
+
+ A single fix in bidi.cpp was needed to fix SVG's unicode-bidi/direction handling, to fix text-intro-02-b.svg.
+ SVG didacts that the 'direction' attribute is ignored if unicode-bidi is set to 'normal' (default).
+ Discussed with Mitz.
+
+ * rendering/RenderSVGInlineText.cpp:
+ (WebCore::RenderSVGInlineText::positionForCoordinates):
+ * rendering/SVGInlineTextBox.cpp:
+ (WebCore::SVGInlineTextBox::calculateGlyphWidth):
+ (WebCore::SVGInlineTextBox::calculateGlyphHeight):
+ (WebCore::SVGInlineTextBox::closestCharacterToPosition):
+ (WebCore::SVGInlineTextBox::svgCharacterHitsPosition):
+ (WebCore::SVGInlineTextBox::nodeAtPoint):
+ (WebCore::SVGInlineTextBox::selectionRect):
+ * rendering/SVGInlineTextBox.h:
+ * rendering/SVGRenderTreeAsText.cpp:
+ (WebCore::writeSVGInlineTextBox):
+ (WebCore::writeSVGInlineText):
+ * rendering/SVGRootInlineBox.cpp:
+ (WebCore::cummulatedWidthOfInlineBoxCharacterRange): Take box start offset into account.
+ (WebCore::svgTextStyleForInlineTextBox): New helper function.
+ (WebCore::totalAdvanceOfInlineTextBox): Take box start offset into account.
+ (WebCore::SVGRootInlineBox::buildLayoutInformationForTextBox): Ditto. (correctly calculate advance values in RTL mode!)
+ (WebCore::SVGRootInlineBox::paintSelectionForTextBox): Use GraphicsContext drawHighlightForText() instead of self-made hacks.
+ (WebCore::SVGRootInlineBox::paintCharacterRangeForTextBox): Use new helper function svgTextStyleForInlineTextBox.
+ * rendering/SVGRootInlineBox.h:
+ * rendering/bidi.cpp: Add special case for SVG.
+ (WebCore::RenderBlock::layoutInlineChildren):
+
2007-07-30 Nikolas Zimmermann <zimmermann@kde.org>
Reviewed by Oliver & Rob.
void setHasBadParent();
- int toAdd() { return m_toAdd; }
+ int toAdd() const { return m_toAdd; }
public:
RenderObject* m_object;
return VisiblePosition(element(), 0, DOWNSTREAM);
int offset = 0;
- textBox->svgCharacterHitsPosition(x + object->xPos(), y + object->yPos(), offset);
+
+ for (SVGInlineTextBox* box = textBox; box; box = static_cast<SVGInlineTextBox*>(box->nextTextBox())) {
+ if (box->svgCharacterHitsPosition(x + object->xPos(), y + object->yPos(), offset)) {
+ // If we're not at the end/start of the box, stop looking for other selected boxes.
+ if (!box->m_reversed) {
+ if (offset <= (int) box->end() + 1)
+ break;
+ } else {
+ if (offset > (int) box->start())
+ break;
+ }
+ }
+ }
+
return VisiblePosition(element(), offset, DOWNSTREAM);
}
return static_cast<SVGRootInlineBox*>(parentBox);
}
+float SVGInlineTextBox::calculateGlyphWidth(RenderStyle* style, int offset) const
+{
+ return style->font().floatWidth(TextRun(textObject()->text()->characters() + offset, 1), svgTextStyleForInlineTextBox(style, this, 0));
+}
+
+float SVGInlineTextBox::calculateGlyphHeight(RenderStyle* style, int offset) const
+{
+ ASSERT(style);
+
+ // This is just a guess, and the only purpose of this function is to centralize this hack.
+ // In real-life top-top-bottom scripts this won't be enough, I fear.
+ return style->font().ascent() + style->font().descent();
+}
+
SVGChar* SVGInlineTextBox::closestCharacterToPosition(int x, int y, int& offset) const
{
// Find corresponding text chunk for our inline box & reference x position
// Iterate through the characters, respecting their individual placement
// Find the character within the chunk with the smallest diagonal distance
// to the current position. Check whether the passed x value hits that character.
- SVGTextChunk chunk;
+ Vector<SVGChar>::iterator character = 0;
float distance = FLT_MAX;
- const Font& font = textObject()->style()->font();
+ RenderStyle* style = textObject()->style();
Vector<SVGTextChunk>::iterator it = chunks.begin();
- Vector<SVGTextChunk>::iterator end = chunks.end();
+ Vector<SVGTextChunk>::iterator itEnd = chunks.end();
- for (; it != end; ++it) {
+ for (; it != itEnd; ++it) {
SVGTextChunk& curChunk = *it;
Vector<SVGInlineBoxCharacterRange>::iterator boxIt = curChunk.boxes.begin();
unsigned int chunkOffset = 0;
unsigned int firstRangeInFirstChunkStartOffset = 0;
-
+
for (; boxIt != boxEnd; ++boxIt) {
SVGInlineBoxCharacterRange& range = *boxIt;
continue;
}
+ Vector<SVGChar>::iterator closestCharacter = 0;
unsigned int closestOffset = UINT_MAX;
// Walk chunk finding closest character
ASSERT(itCharEnd <= curChunk.end);
for (Vector<SVGChar>::iterator itChar = itCharBegin; itChar != itCharEnd; ++itChar) {
- unsigned int newOffset = (itChar - itCharBegin) + firstRangeInFirstChunkStartOffset;
-
- float glyphWidth = font.floatWidth(TextRun(textObject()->text()->characters() + newOffset, 1), TextStyle(0, 0));
- float glyphHeight = font.ascent() + font.descent();
+ unsigned int newOffset = start() + (itChar - itCharBegin) + firstRangeInFirstChunkStartOffset;
+
+ // Take RTL text into account and pick right glyph width/height.
+ float glyphWidth = 0.0;
+ float glyphHeight = 0.0;
+
+ if (!m_reversed) {
+ glyphWidth = calculateGlyphWidth(style, newOffset);
+ glyphHeight = calculateGlyphHeight(style, newOffset);
+ } else {
+ glyphWidth = calculateGlyphWidth(style, start() + end() - newOffset);
+ glyphHeight = calculateGlyphHeight(style, start() + end() - newOffset);
+ newOffset = start() + end() - newOffset;
+ }
// Calculate distances relative to the glyph mid-point. I hope this is accurate enough.
float xDistance = (*itChar).x + glyphWidth / 2.0 - x;
if (newDistance <= distance) {
distance = newDistance;
closestOffset = newOffset;
+ closestCharacter = itChar;
}
}
continue;
// Record current chunk, if it contains the current closest character next to the mouse.
- chunk = curChunk;
+ character = closestCharacter;
offset = closestOffset;
}
}
- if (!chunk.start) {
+ if (!character) {
offset = 0;
return 0;
}
- // Be very careful here! The chunk.start offset already takes the first range's
- // startOffset into account! Need to subtract it here.
- ASSERT(!chunk.boxes.isEmpty());
- Vector<SVGInlineBoxCharacterRange>::iterator boxStart = chunk.boxes.begin();
-
- return (chunk.start + offset - (*boxStart).startOffset);
+ return character;
}
bool SVGInlineTextBox::svgCharacterHitsPosition(int x, int y, int& offset) const
SVGChar& charAtPos = *charAtPosPtr;
RenderStyle* style = textObject()->style(m_firstLine);
- float glyphHeight = style->font().ascent() + style->font().descent();
+ float glyphWidth = calculateGlyphWidth(style, offset);
+ float glyphHeight = calculateGlyphHeight(style, offset);
+
+ if (m_reversed)
+ offset++;
- // FIXME: Several things need to be done:
- // (#13909) This code does not handle bottom-to-top vertical text (low priority).
- // (#13909) This code does not handle top-to-bottom vertical text (higher priority).
- // (#13010) This code does not handle right-to-left selection yet (highest priority).
+ // FIXME: todo list
+ // (#13910) This code does not handle bottom-to-top/top-to-bottom vertical text.
// Check whether y position hits the current character
if (y < charAtPos.y - glyphHeight || y > charAtPos.y)
return false;
// Check whether x position hits the current character
- float glyphWidth = style->font().floatWidth(TextRun(textObject()->text()->characters() + offset, 1), TextStyle(0, 0));
- if (x < charAtPos.x)
+ if (x < charAtPos.x) {
+ if (offset > 0 && !m_reversed)
+ return true;
+ else if (offset < (int) end() && m_reversed)
+ return true;
+
+ return false;
+ }
+
+ // If we are past the last glyph of this box, don't mark it as 'hit' anymore.
+ if (x >= charAtPos.x + glyphWidth && offset == (int) end())
return false;
// Snap to character at half of it's advance
if (x >= charAtPos.x + glyphWidth / 2.0)
- offset++;
+ offset += m_reversed ? -1 : 1;
return true;
}
RenderStyle* style = textObject()->style(m_firstLine);
IntRect rect = selectionRect(0, -style->font().ascent(), 0, len());
+
if (object()->style()->visibility() == VISIBLE && rect.contains(x, y)) {
object()->updateHitTestResult(result, IntPoint(x - tx, y - ty));
return true;
SVGRootInlineBox* rootBox = svgRootInlineBox();
Vector<SVGTextChunk>& chunks = const_cast<Vector<SVGTextChunk>& >(rootBox->svgTextChunks());
- const Font& font = textObject()->style()->font();
+ RenderStyle* style = textObject()->style();
+ const Font& font = style->font();
FloatRect selectionRect;
Vector<SVGTextChunk>::iterator it = chunks.begin();
- Vector<SVGTextChunk>::iterator end = chunks.end();
+ Vector<SVGTextChunk>::iterator itEnd = chunks.end();
- for (; it != end; ++it) {
+ for (; it != itEnd; ++it) {
SVGTextChunk& curChunk = *it;
Vector<SVGInlineBoxCharacterRange>::iterator boxIt = curChunk.boxes.begin();
unsigned int chunkOffset = 0;
unsigned int firstRangeInFirstChunkStartOffset = 0;
-
+
for (; boxIt != boxEnd; ++boxIt) {
SVGInlineBoxCharacterRange& range = *boxIt;
continue;
}
- // Figure out chunk size
+ // Walk chunk finding closest character
Vector<SVGChar>::iterator itCharBegin = curChunk.start + chunkOffset - firstRangeInFirstChunkStartOffset + range.startOffset;
Vector<SVGChar>::iterator itCharEnd = curChunk.start + chunkOffset - firstRangeInFirstChunkStartOffset + range.endOffset;
ASSERT(itCharEnd <= curChunk.end);
for (Vector<SVGChar>::iterator itChar = itCharBegin; itChar != itCharEnd; ++itChar) {
- unsigned int newOffset = (itChar - itCharBegin) + firstRangeInFirstChunkStartOffset;
- float glyphWidth = font.floatWidth(TextRun(textObject()->text()->characters() + newOffset, 1), TextStyle(0, 0));
-
+ unsigned int newOffset = start() + (itChar - itCharBegin) + firstRangeInFirstChunkStartOffset;
+
+ // Take RTL text into account and pick right glyph width/height.
+ float glyphWidth = 0.0;
+ float glyphHeight = 0.0;
+
+ if (!m_reversed) {
+ glyphWidth = calculateGlyphWidth(style, newOffset);
+ glyphHeight = calculateGlyphHeight(style, newOffset);
+ } else {
+ glyphWidth = calculateGlyphWidth(style, start() + end() - newOffset);
+ glyphHeight = calculateGlyphHeight(style, start() + end() - newOffset);
+ }
+
float x1 = (*itChar).x;
float x2 = (*itChar).x + glyphWidth;
selectionRect.unite(glyphRect);
}
+
+ chunkOffset += range.endOffset - range.startOffset;
}
}
virtual IntRect selectionRect(int absx, int absy, int startPos, int endPos);
SVGRootInlineBox* svgRootInlineBox() const;
-
- protected:
+
+ // Helper functions shared with SVGRootInlineBox
+ float calculateGlyphWidth(RenderStyle*, int offset) const;
+ float calculateGlyphHeight(RenderStyle*, int offset) const;
+
+ private:
friend class RenderSVGInlineText;
bool svgCharacterHitsPosition(int x, int y, int& offset) const;
return found;
}
-static inline void writeSVGInlineText(TextStream& ts, const RenderSVGInlineText& text, int indent)
+static inline void writeSVGInlineTextBox(TextStream& ts, SVGInlineTextBox* textBox, int indent)
{
- SVGInlineTextBox* textBox = static_cast<SVGInlineTextBox*>(text.firstTextBox());
-
- if (!textBox)
- return;
-
SVGRootInlineBox* rootBox = textBox->svgRootInlineBox();
ASSERT(rootBox);
-
+
if (!rootBox)
return;
ts << " override";
}
- ts << ": " << quoteAndEscapeNonPrintables(String(textBox->textObject()->text()).substring(range.startOffset, offset)) << endl;
+ ts << ": " << quoteAndEscapeNonPrintables(String(textBox->textObject()->text()).substring(textBox->start() + range.startOffset, offset)) << endl;
j++;
}
}
}
+static inline void writeSVGInlineText(TextStream& ts, const RenderSVGInlineText& text, int indent)
+{
+ for (InlineTextBox* box = text.firstTextBox(); box; box = box->nextTextBox())
+ writeSVGInlineTextBox(ts, static_cast<SVGInlineTextBox*>(box), indent);
+}
+
static String getTagName(SVGStyledElement* elem)
{
if (elem)
#include "Range.h"
#include "RenderSVGRoot.h"
#include "SVGInlineFlowBox.h"
+#include "SVGInlineTextBox.h"
#include "SVGPaintServer.h"
#include "SVGRenderSupport.h"
#include "SVGResourceClipper.h"
heightOfBlock = height();
}
-float SVGRootInlineBox::cummulatedWidthOfSelectionRange(InlineTextBox* textBox, int startPos, int endPos, int length, int boxStartOffset)
-{
- int chunkStartPos = boxStartOffset;
- int chunkEndPos = chunkStartPos + length;
-
- if ((startPos > chunkStartPos && endPos > chunkEndPos) || chunkStartPos >= endPos)
- return FLT_MAX;
-
- if (endPos > chunkEndPos)
- endPos = chunkEndPos;
-
- if (startPos < chunkStartPos)
- startPos = chunkStartPos;
-
- ASSERT(startPos >= chunkStartPos);
- ASSERT(endPos <= chunkEndPos);
-
- ASSERT(startPos < endPos);
-
- RenderText* text = textBox->textObject();
- const Font& font = text->style()->font();
-
- return font.floatWidth(TextRun(text->characters() + startPos, endPos - startPos), TextStyle(0, 0));
-}
-
float cummulatedWidthOfInlineBoxCharacterRange(SVGInlineBoxCharacterRange& range)
{
ASSERT(!range.isOpen());
InlineTextBox* textBox = static_cast<InlineTextBox*>(range.box);
RenderText* text = textBox->textObject();
- const Font& font = text->style()->font();
+ RenderStyle* style = text->style();
- return font.floatWidth(TextRun(text->characters() + range.startOffset, range.endOffset - range.startOffset), TextStyle(0, 0));
+ return style->font().floatWidth(TextRun(text->characters() + textBox->start() + range.startOffset, range.endOffset - range.startOffset), svgTextStyleForInlineTextBox(style, textBox, 0));
}
float cummulatedHeightOfInlineBoxCharacterRange(SVGInlineBoxCharacterRange& range)
return (range.endOffset - range.startOffset) * (font.ascent() + font.descent());
}
+TextStyle svgTextStyleForInlineTextBox(RenderStyle* style, const InlineTextBox* textBox, float xPos)
+{
+ ASSERT(textBox);
+ ASSERT(style);
+
+ return TextStyle(false, xPos, textBox->toAdd(), textBox->m_reversed, textBox->m_dirOverride || style->visuallyOrdered());
+}
+
static float cummulatedWidthOfTextChunk(SVGTextChunk& chunk)
{
float width = 0.0;
if (to > 0 && (unsigned int) to > textBox->len())
to = textBox->len();
- RenderText* text = static_cast<RenderText*>(textBox->object());
- const Font& font = text->style()->font();
+ RenderStyle* style = textBox->object()->style();
+ SVGInlineTextBox* svgTextBox = static_cast<SVGInlineTextBox*>(textBox);
for (int i = from; i < to; ++i) {
+ int offset = textBox->m_reversed ? textBox->end() - i : textBox->start() + i;
+
if (!isVerticalText)
- totalAdvance += font.floatWidth(TextRun(text->text()->characters() + i, 1), TextStyle(0, 0));
+ totalAdvance += svgTextBox->calculateGlyphWidth(style, offset);
else
- totalAdvance += font.ascent() + font.descent();
+ totalAdvance += svgTextBox->calculateGlyphHeight(style, offset);
}
}
RenderStyle* style = text->style(textBox->isFirstLineStyle());
ASSERT(style);
- const Font& font = style->font();
+ SVGInlineTextBox* svgTextBox = static_cast<SVGInlineTextBox*>(textBox);
+
unsigned length = textBox->len();
bool isVerticalText = isVerticalWritingMode(style->svgStyle());
svgChar.newTextChunk = false;
float angle = 0.0;
- float glyphWidth = font.floatWidth(TextRun(text->text()->characters() + textBox->start() + i, 1), TextStyle(0, 0));
- float glyphHeight = font.ascent() + font.descent();
+ float glyphWidth = 0.0;
+ float glyphHeight = 0.0;
+
+ if (!textBox->m_reversed) {
+ glyphWidth = svgTextBox->calculateGlyphWidth(style, textBox->start() + i);
+ glyphHeight = svgTextBox->calculateGlyphHeight(style, textBox->start() + i);
+ } else {
+ glyphWidth = svgTextBox->calculateGlyphWidth(style, textBox->end() - i);
+ glyphHeight = svgTextBox->calculateGlyphHeight(style, textBox->end() - i);
+ }
bool assignedX = false;
bool assignedY = false;
continue;
#if DEBUG_CHUNK_BUILDING > 1
- fprintf(stderr, " -> Handle inline text box (%p) with %i characters, handlingTextPath=%i\n", textBox, length, (int) info.handlingTextPath);
+ fprintf(stderr, " -> Handle inline text box (%p) with %i characters (start: %i, end: %i), handlingTextPath=%i\n",
+ textBox, length, textBox->start(), textBox->end(), (int) info.handlingTextPath);
#endif
RenderText* text = textBox->textObject();
fprintf(stderr, " | -> Close mid-text chunk, at endOffset: %i and starting new mid chunk!\n", range.endOffset);
#endif
- // Prepare for next chunk, if we're not at the end
+ // Prepare for next chunk, if we're not at the end
startTextChunk(info);
if (i + 1 == length) {
#if DEBUG_CHUNK_BUILDING > 1
applyTextAnchorToTextChunk(*it);
}
-void SVGRootInlineBox::paintSelectionForTextBox(InlineTextBox* textBox, int boxStartOffset, SVGChar* svgCharPtr, const UChar* chars, int length, GraphicsContext* p, RenderStyle* style, const Font* f)
+void SVGRootInlineBox::paintSelectionForTextBox(InlineTextBox* textBox, int boxStartOffset, const SVGChar& svgChar, const UChar* chars, int length, GraphicsContext* p, RenderStyle* style, const Font* f)
{
if (textBox->selectionState() == RenderObject::SelectionNone)
return;
if (startPos >= endPos)
return;
- float width = cummulatedWidthOfSelectionRange(textBox, startPos, endPos, length, boxStartOffset);
- if (width == FLT_MAX)
- return;
-
Color textColor = style->color();
Color color = textBox->object()->selectionBackgroundColor();
if (!color.isValid() || color.alpha() == 0)
if (textColor == color)
color = Color(0xff - color.red(), 0xff - color.green(), 0xff - color.blue());
+ // Map from text box positions and a given start offset to chunk positions
+ // 'boxStartOffset' represents the beginning of the text chunk.
+ if ((startPos > boxStartOffset && endPos > boxStartOffset + length) || boxStartOffset >= endPos)
+ return;
+
+ if (endPos > boxStartOffset + length)
+ endPos = boxStartOffset + length;
+
+ if (startPos < boxStartOffset)
+ startPos = boxStartOffset;
+
+ ASSERT(startPos >= boxStartOffset);
+ ASSERT(endPos <= boxStartOffset + length);
+ ASSERT(startPos < endPos);
+
p->save();
- SVGChar firstChar = *(svgCharPtr + (startPos > boxStartOffset ? startPos - boxStartOffset : 0));
- if (!firstChar.transform.isIdentity())
- p->concatCTM(firstChar.transform);
+ if (!svgChar.transform.isIdentity())
+ p->concatCTM(svgChar.transform);
- FloatRect selectionRect(firstChar.x, firstChar.y - f->ascent(), width, f->ascent() + f->descent());
- p->fillRect(selectionRect, color);
+ int adjust = startPos >= boxStartOffset ? boxStartOffset : 0;
+ p->drawHighlightForText(TextRun(textBox->textObject()->text()->characters() + textBox->start() + boxStartOffset, length),
+ IntPoint((int) svgChar.x, (int) svgChar.y - f->ascent()), f->ascent() + f->descent(),
+ svgTextStyleForInlineTextBox(style, textBox, svgChar.x), color,
+ startPos - adjust, endPos - adjust);
p->restore();
}
if (haveSelection && !useCustomUnderlines) {
int boxStartOffset = chars - text->characters() - textBox->start();
- paintSelectionForTextBox(textBox, boxStartOffset, const_cast<SVGChar*>(&svgChar), chars, length, paintInfo.context, styleToUse, font);
+ paintSelectionForTextBox(textBox, boxStartOffset, svgChar, chars, length, paintInfo.context, styleToUse, font);
}
}
}
}
- TextStyle textStyle(0, svgChar.x, textBox->toAdd(), textBox->m_reversed, textBox->m_dirOverride || styleToUse->visuallyOrdered());
-
ASSERT(!paintSelectedTextOnly && !paintSelectedTextSeparately);
- paintInfo.context->drawText(TextRun(chars, length), IntPoint(svgChar.x, svgChar.y), textStyle);
+ paintInfo.context->drawText(TextRun(chars, length), IntPoint((int) svgChar.x, (int) svgChar.y), svgTextStyleForInlineTextBox(styleToUse, textBox, svgChar.x));
// Paint decorations
if (d != TDNONE && paintInfo.phase != PaintPhaseSelection) {
// Used by SVGInlineTextBox
const Vector<SVGTextChunk>& svgTextChunks() const;
- float cummulatedWidthOfSelectionRange(InlineTextBox*, int startPos, int endPos, int length, int boxStartOffset = 0);
private:
void layoutInlineBoxes();
void buildTextChunks(InlineFlowBox* start, SVGTextChunkLayoutInfo&);
void layoutTextChunks();
- void paintSelectionForTextBox(InlineTextBox*, int boxStartOffset, SVGChar*, const UChar*, int length, GraphicsContext*, RenderStyle*, const Font*);
+ void paintSelectionForTextBox(InlineTextBox*, int boxStartOffset, const SVGChar&, const UChar*, int length, GraphicsContext*, RenderStyle*, const Font*);
void paintInlineBoxes(RenderObject::PaintInfo&, int tx, int ty, InlineFlowBox* start, Vector<SVGChar>::iterator&);
void paintChildInlineTextBox(RenderObject::PaintInfo&, int tx, int ty, InlineTextBox*, Vector<SVGChar>::iterator&);
Vector<SVGTextChunk> m_svgTextChunks;
};
-// Shared with SVGRenderTreeAsText
+// Shared with SVGRenderTreeAsText / SVGInlineTextBox
+TextStyle svgTextStyleForInlineTextBox(RenderStyle* style, const InlineTextBox* textBox, float xPos);
FloatPoint topLeftPositionOfCharacterRange(Vector<SVGChar>::iterator start, Vector<SVGChar>::iterator end);
float cummulatedWidthOfInlineBoxCharacterRange(SVGInlineBoxCharacterRange& range);
float cummulatedHeightOfInlineBoxCharacterRange(SVGInlineBoxCharacterRange& range);
}
}
- BidiContext* startEmbed;
- if (style()->direction() == LTR)
+ BidiContext *startEmbed;
+ if (style()->direction() == LTR
+#if ENABLE(SVG)
+ || (style()->unicodeBidi() == UBNormal && isSVGText())
+#endif
+ ) {
startEmbed = new BidiContext(0, LeftToRight, style()->unicodeBidi() == Override);
- else
+ } else {
startEmbed = new BidiContext(1, RightToLeft, style()->unicodeBidi() == Override);
+ }
bidi.setLastStrongDir(startEmbed->dir());
bidi.setLastDir(startEmbed->dir());