Changeset 89311 in webkit
- Timestamp:
- Jun 20, 2011 4:29:57 PM (13 years ago)
- Location:
- trunk
- Files:
-
- 14 deleted
- 71 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r89301 r89311 1 2011-06-20 Kenneth Russell <kbr@google.com> 2 3 Unreviewed. 4 5 Rolled out r89233 and r89235 because of crashes in http/tests/misc/acid3.html on Snow Leopard and other platforms 6 https://bugs.webkit.org/show_bug.cgi?id=63022 7 8 * platform/mac/svg/W3C-SVG-1.1-SE/coords-units-03-b-expected.png: 9 * platform/mac/svg/W3C-SVG-1.1-SE/coords-units-03-b-expected.txt: 10 * platform/mac/svg/W3C-SVG-1.1/fonts-glyph-03-t-expected.png: 11 * platform/mac/svg/W3C-SVG-1.1/fonts-glyph-03-t-expected.txt: 12 * platform/mac/svg/W3C-SVG-1.1/fonts-glyph-04-t-expected.png: 13 * platform/mac/svg/W3C-SVG-1.1/fonts-glyph-04-t-expected.txt: 14 * platform/mac/svg/W3C-SVG-1.1/pservers-grad-08-b-expected.png: 15 * platform/mac/svg/W3C-SVG-1.1/pservers-grad-08-b-expected.txt: 16 * platform/mac/svg/W3C-SVG-1.1/text-altglyph-01-b-expected.png: 17 * platform/mac/svg/W3C-SVG-1.1/text-altglyph-01-b-expected.txt: 18 * platform/mac/svg/batik/text/textEffect-expected.png: 19 * platform/mac/svg/batik/text/textEffect-expected.txt: 20 * platform/mac/svg/batik/text/textEffect3-expected.png: 21 * platform/mac/svg/batik/text/textEffect3-expected.txt: 22 * platform/mac/svg/batik/text/xmlSpace-expected.png: 23 * platform/mac/svg/batik/text/xmlSpace-expected.txt: 24 * platform/mac/svg/custom/glyph-selection-lang-attribute-expected.png: 25 * platform/mac/svg/custom/glyph-selection-lang-attribute-expected.txt: 26 * platform/mac/svg/custom/svg-fonts-fallback-expected.png: Removed. 27 * platform/mac/svg/custom/svg-fonts-fallback-expected.txt: Removed. 28 * platform/mac/svg/custom/svg-fonts-segmented-expected.png: Removed. 29 * platform/mac/svg/custom/svg-fonts-segmented-expected.txt: Removed. 30 * platform/mac/svg/custom/svg-fonts-with-no-element-reference-expected.png: 31 * platform/mac/svg/custom/svg-fonts-with-no-element-reference-expected.txt: 32 * platform/mac/svg/custom/svg-fonts-without-missing-glyph-expected.png: 33 * platform/mac/svg/custom/svg-fonts-without-missing-glyph-expected.txt: 34 * platform/mac/svg/custom/svg-fonts-word-spacing-expected.png: Removed. 35 * platform/mac/svg/custom/svg-fonts-word-spacing-expected.txt: Removed. 36 * platform/mac/svg/dynamic-updates/SVGFEConvolveMatrixElement-dom-preserveAlpha-attr-expected.png: 37 * platform/mac/svg/dynamic-updates/SVGFEConvolveMatrixElement-svgdom-preserveAlpha-prop-expected.png: 38 * platform/mac/svg/foreignObject/text-tref-02-b-expected.png: 39 * platform/mac/svg/foreignObject/text-tref-02-b-expected.txt: 40 * platform/mac/svg/text/text-altglyph-01-b-expected.png: 41 * platform/mac/svg/text/text-altglyph-01-b-expected.txt: 42 * platform/mac/svg/text/text-overflow-ellipsis-svgfont-expected.png: Removed. 43 * platform/mac/svg/text/text-overflow-ellipsis-svgfont-expected.txt: Removed. 44 * platform/mac/svg/text/text-text-04-t-expected.png: 45 * platform/mac/svg/text/text-text-04-t-expected.txt: 46 * platform/mac/svg/text/text-text-05-t-expected.png: 47 * platform/mac/svg/text/text-text-05-t-expected.txt: 48 * platform/mac/svg/text/text-text-06-t-expected.png: 49 * platform/mac/svg/text/text-text-06-t-expected.txt: 50 * platform/mac/svg/transforms/text-with-mask-with-svg-transform-expected.png: 51 * platform/mac/svg/transforms/text-with-mask-with-svg-transform-expected.txt: 52 * platform/mac/svg/wicd/test-rightsizing-b-expected.png: 53 * platform/mac/svg/wicd/test-rightsizing-b-expected.txt: 54 * svg/custom/resources/ABCFont.svg: 55 * svg/custom/svg-fonts-fallback.xhtml: Removed. 56 * svg/custom/svg-fonts-segmented.xhtml: Removed. 57 * svg/custom/svg-fonts-word-spacing.html: Removed. 58 * svg/text/select-text-svgfont-expected.txt: Removed. 59 * svg/text/select-text-svgfont.html: Removed. 60 * svg/text/text-overflow-ellipsis-svgfont.html: Removed. 61 1 62 2011-06-20 Ryosuke Niwa <rniwa@webkit.org> 2 63 -
trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1-SE/coords-units-03-b-expected.txt
r89233 r89311 11 11 RenderSVGInlineText {#text} at (0,0) size 181x14 12 12 chunk 1 text run 1 at (125.00,20.00) startOffset 0 endOffset 35 width 181.00: "Initial viewport and CSS units test" 13 RenderSVGContainer {g} at (20,67) size 3 86x196 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,60.00)}]14 RenderSVGText {text} at (20,7) size 2 2x14 contains 1 chunk(s)15 RenderSVGInlineText {#text} at (0,0) size 2 2x1416 chunk 1 text run 1 at (20.00,18.00) startOffset 0 endOffset 3 width 2 1.68: "200"17 RenderSVGText {text} at (230,9) size 1 76x14 contains 1 chunk(s)18 RenderSVGInlineText {#text} at (0,0) size 1 76x1419 chunk 1 text run 1 at (230.00,20.00) startOffset 0 endOffset 27 width 1 56.78: "User space units (no specif"20 chunk 1 text run 2 at (3 86.75,20.00) startOffset 27 endOffset 31 width 18.77: "ier)"13 RenderSVGContainer {g} at (20,67) size 391x196 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,60.00)}] 14 RenderSVGText {text} at (20,7) size 23x14 contains 1 chunk(s) 15 RenderSVGInlineText {#text} at (0,0) size 23x14 16 chunk 1 text run 1 at (20.00,18.00) startOffset 0 endOffset 3 width 22.24: "200" 17 RenderSVGText {text} at (230,9) size 181x14 contains 1 chunk(s) 18 RenderSVGInlineText {#text} at (0,0) size 181x14 19 chunk 1 text run 1 at (230.00,20.00) startOffset 0 endOffset 27 width 160.80: "User space units (no specif" 20 chunk 1 text run 2 at (390.77,20.00) startOffset 27 endOffset 31 width 19.25: "ier)" 21 21 RenderSVGPath {rect} at (20,80) size 200x1 [fill={[type=SOLID] [color=#000000]}] [x=20.00] [y=20.00] [width=200.00] [height=1.00] 22 RenderSVGText {text} at (20,27) size 4 0x14 contains 1 chunk(s)23 RenderSVGInlineText {#text} at (0,0) size 4 0x1424 chunk 1 text run 1 at (20.00,38.00) startOffset 0 endOffset 6 width 39.03: "200 px"25 RenderSVGText {text} at (230,29) size 6 1x14 contains 1 chunk(s)26 RenderSVGInlineText {#text} at (0,0) size 6 1x1427 chunk 1 text run 1 at (230.00,40.00) startOffset 0 endOffset 3 width 18. 06: "Pix"28 chunk 1 text run 2 at (24 7.68,40.00) startOffset 3 endOffset 11 width 42.61: "els (px)"22 RenderSVGText {text} at (20,27) size 41x14 contains 1 chunk(s) 23 RenderSVGInlineText {#text} at (0,0) size 41x14 24 chunk 1 text run 1 at (20.00,38.00) startOffset 0 endOffset 6 width 40.03: "200 px" 25 RenderSVGText {text} at (230,29) size 62x14 contains 1 chunk(s) 26 RenderSVGInlineText {#text} at (0,0) size 62x14 27 chunk 1 text run 1 at (230.00,40.00) startOffset 0 endOffset 3 width 18.52: "Pix" 28 chunk 1 text run 2 at (248.15,40.00) startOffset 3 endOffset 11 width 43.71: "els (px)" 29 29 RenderSVGPath {rect} at (20,100) size 200x1 [fill={[type=SOLID] [color=#000000]}] [x=20.00] [y=40.00] [width=200.00] [height=1.00] 30 RenderSVGText {text} at (20,47) size 1 87x14 contains 1 chunk(s)31 RenderSVGInlineText {#text} at (0,0) size 1 87x1432 chunk 1 text run 1 at (20.00,58.00) startOffset 0 endOffset 17 width 10 1.53: "20 em = 200 px (f"33 chunk 1 text run 2 at (12 1.40,58.00) startOffset 17 endOffset 27 width 60.33: "ont-size=1"34 chunk 1 text run 3 at (18 0.90,58.00) startOffset 27 endOffset 31 width 25.28: "0px)"35 RenderSVGText {text} at (230,49) size 14 4x14 contains 1 chunk(s)36 RenderSVGInlineText {#text} at (0,0) size 14 4x1437 chunk 1 text run 1 at (230.00,60.00) startOffset 0 endOffset 1 width 9. 39: "R"38 chunk 1 text run 2 at (239. 23,60.00) startOffset 1 endOffset 7 width 30.34: "elativ"39 chunk 1 text run 3 at (2 69.29,60.00) startOffset 7 endOffset 10 width 14.46: "e t"40 chunk 1 text run 4 at (28 3.58,60.00) startOffset 10 endOffset 13 width 14.46: "o f"41 chunk 1 text run 5 at (29 7.91,60.00) startOffset 13 endOffset 26 width 75.13: "ont size (em)"30 RenderSVGText {text} at (20,47) size 191x14 contains 1 chunk(s) 31 RenderSVGInlineText {#text} at (0,0) size 191x14 32 chunk 1 text run 1 at (20.00,58.00) startOffset 0 endOffset 17 width 104.13: "20 em = 200 px (f" 33 chunk 1 text run 2 at (124.00,58.00) startOffset 17 endOffset 27 width 61.88: "ont-size=1" 34 chunk 1 text run 3 at (185.05,58.00) startOffset 27 endOffset 31 width 25.93: "0px)" 35 RenderSVGText {text} at (230,49) size 147x14 contains 1 chunk(s) 36 RenderSVGInlineText {#text} at (0,0) size 147x14 37 chunk 1 text run 1 at (230.00,60.00) startOffset 0 endOffset 1 width 9.63: "R" 38 chunk 1 text run 2 at (239.47,60.00) startOffset 1 endOffset 7 width 31.12: "elativ" 39 chunk 1 text run 3 at (270.31,60.00) startOffset 7 endOffset 10 width 14.83: "e t" 40 chunk 1 text run 4 at (284.97,60.00) startOffset 10 endOffset 13 width 14.83: "o f" 41 chunk 1 text run 5 at (299.67,60.00) startOffset 13 endOffset 26 width 77.05: "ont size (em)" 42 42 RenderSVGContainer {g} at (20,120) size 200x1 43 43 RenderSVGPath {rect} at (20,120) size 200x1 [fill={[type=SOLID] [color=#000000]}] [x=20.00] [y=60.00] [width=200.00] [height=1.00] 44 RenderSVGText {text} at (20,67) size 3 2x14 contains 1 chunk(s)45 RenderSVGInlineText {#text} at (0,0) size 3 2x1446 chunk 1 text run 1 at (20.00,78.00) startOffset 0 endOffset 4 width 25. 30: "40 e"47 chunk 1 text run 2 at (4 4.94,78.00) startOffset 4 endOffset 5 width 6.50: "x"48 RenderSVGText {text} at (230,69) size 16 2x14 contains 1 chunk(s)49 RenderSVGInlineText {#text} at (0,0) size 16 2x1450 chunk 1 text run 1 at (230.00,80.00) startOffset 0 endOffset 1 width 9. 39: "R"51 chunk 1 text run 2 at (239. 23,80.00) startOffset 1 endOffset 7 width 30.34: "elativ"52 chunk 1 text run 3 at (2 69.29,80.00) startOffset 7 endOffset 10 width 14.46: "e t"53 chunk 1 text run 4 at (28 3.58,80.00) startOffset 10 endOffset 13 width 14.46: "o f"54 chunk 1 text run 5 at (29 7.91,80.00) startOffset 13 endOffset 28 width 83.10: "ont x-height (e"55 chunk 1 text run 6 at (38 0.64,80.00) startOffset 28 endOffset 30 width 10.83: "x)"44 RenderSVGText {text} at (20,67) size 33x14 contains 1 chunk(s) 45 RenderSVGInlineText {#text} at (0,0) size 33x14 46 chunk 1 text run 1 at (20.00,78.00) startOffset 0 endOffset 4 width 25.95: "40 e" 47 chunk 1 text run 2 at (45.59,78.00) startOffset 4 endOffset 5 width 6.67: "x" 48 RenderSVGText {text} at (230,69) size 166x14 contains 1 chunk(s) 49 RenderSVGInlineText {#text} at (0,0) size 166x14 50 chunk 1 text run 1 at (230.00,80.00) startOffset 0 endOffset 1 width 9.63: "R" 51 chunk 1 text run 2 at (239.47,80.00) startOffset 1 endOffset 7 width 31.12: "elativ" 52 chunk 1 text run 3 at (270.31,80.00) startOffset 7 endOffset 10 width 14.83: "e t" 53 chunk 1 text run 4 at (284.97,80.00) startOffset 10 endOffset 13 width 14.83: "o f" 54 chunk 1 text run 5 at (299.67,80.00) startOffset 13 endOffset 28 width 85.23: "ont x-height (e" 55 chunk 1 text run 6 at (384.53,80.00) startOffset 28 endOffset 30 width 11.11: "x)" 56 56 RenderSVGContainer {g} at (20,140) size 200x1 57 57 RenderSVGPath {rect} at (20,140) size 200x1 [fill={[type=SOLID] [color=#000000]}] [x=20.00] [y=80.00] [width=200.00] [height=1.00] 58 RenderSVGText {text} at (20,87) size 9 6x14 contains 1 chunk(s)59 RenderSVGInlineText {#text} at (0,0) size 9 6x1460 chunk 1 text run 1 at (20.00,98.00) startOffset 0 endOffset 1 width 7. 23: "4"61 chunk 1 text run 2 at (26. 11,98.00) startOffset 1 endOffset 2 width 7.23: "1"62 chunk 1 text run 3 at (32. 35,98.00) startOffset 2 endOffset 4 width 10.84: ".6"63 chunk 1 text run 4 at (4 2.79,98.00) startOffset 4 endOffset 15 width 72.63: "7% = 200 px"64 RenderSVGText {text} at (230,89) size 9 0x14 contains 1 chunk(s)65 RenderSVGInlineText {#text} at (0,0) size 9 0x1466 chunk 1 text run 1 at (230.00,100.00) startOffset 0 endOffset 1 width 8. 67: "P"67 chunk 1 text run 2 at (238. 26,100.00) startOffset 1 endOffset 3 width 11.56: "er"68 chunk 1 text run 3 at (2 49.73,100.00) startOffset 3 endOffset 7 width 24.57: "cent"69 chunk 1 text run 4 at (27 4.29,100.00) startOffset 7 endOffset 14 width 45.51: "age (%)"58 RenderSVGText {text} at (20,87) size 98x14 contains 1 chunk(s) 59 RenderSVGInlineText {#text} at (0,0) size 98x14 60 chunk 1 text run 1 at (20.00,98.00) startOffset 0 endOffset 1 width 7.41: "4" 61 chunk 1 text run 2 at (26.29,98.00) startOffset 1 endOffset 2 width 7.41: "1" 62 chunk 1 text run 3 at (32.72,98.00) startOffset 2 endOffset 4 width 11.12: ".6" 63 chunk 1 text run 4 at (43.44,98.00) startOffset 4 endOffset 15 width 74.49: "7% = 200 px" 64 RenderSVGText {text} at (230,89) size 93x14 contains 1 chunk(s) 65 RenderSVGInlineText {#text} at (0,0) size 93x14 66 chunk 1 text run 1 at (230.00,100.00) startOffset 0 endOffset 1 width 8.89: "P" 67 chunk 1 text run 2 at (238.48,100.00) startOffset 1 endOffset 3 width 11.85: "er" 68 chunk 1 text run 3 at (250.25,100.00) startOffset 3 endOffset 7 width 25.20: "cent" 69 chunk 1 text run 4 at (275.44,100.00) startOffset 7 endOffset 14 width 46.68: "age (%)" 70 70 RenderSVGPath {rect} at (20,160) size 201x1 [fill={[type=SOLID] [color=#000000]}] [x=20.00] [y=100.00] [width=200.02] [height=1.00] 71 RenderSVGText {text} at (20,107) size 21x14 contains 1 chunk(s) 72 RenderSVGInlineText {#text} at (0,0) size 21x14 73 chunk 1 text run 1 at (20.00,118.00) startOffset 0 endOffset 4 width 20.96: "1 in" 74 RenderSVGText {text} at (230,109) size 61x14 contains 1 chunk(s) 71 RenderSVGText {text} at (20,107) size 22x14 contains 1 chunk(s) 72 RenderSVGInlineText {#text} at (0,0) size 22x14 73 chunk 1 text run 1 at (20.00,118.00) startOffset 0 endOffset 4 width 21.49: "1 in" 74 RenderSVGText {text} at (230,109) size 63x14 contains 1 chunk(s) 75 RenderSVGInlineText {#text} at (0,0) size 63x14 76 chunk 1 text run 1 at (230.00,120.00) startOffset 0 endOffset 3 width 17.79: "Inc" 77 chunk 1 text run 2 at (247.80,120.00) startOffset 3 endOffset 11 width 44.45: "hes (in)" 78 RenderSVGPath {rect} at (20,180) size 96x1 [fill={[type=SOLID] [color=#000000]}] [x=20.00] [y=120.00] [width=96.00] [height=1.00] 79 RenderSVGText {text} at (20,127) size 85x14 contains 1 chunk(s) 80 RenderSVGInlineText {#text} at (0,0) size 85x14 81 chunk 1 text run 1 at (20.00,138.00) startOffset 0 endOffset 3 width 18.53: "2.5" 82 chunk 1 text run 2 at (38.55,138.00) startOffset 3 endOffset 14 width 65.59: "4 cm = 1 in" 83 RenderSVGText {text} at (230,129) size 102x14 contains 1 chunk(s) 84 RenderSVGInlineText {#text} at (0,0) size 102x14 85 chunk 1 text run 1 at (230.00,140.00) startOffset 0 endOffset 7 width 49.64: "Centime" 86 chunk 1 text run 2 at (279.51,140.00) startOffset 7 endOffset 8 width 3.71: "t" 87 chunk 1 text run 3 at (283.03,140.00) startOffset 8 endOffset 10 width 11.85: "er" 88 chunk 1 text run 4 at (294.93,140.00) startOffset 10 endOffset 16 width 37.03: "s (cm)" 89 RenderSVGPath {rect} at (20,200) size 96x1 [fill={[type=SOLID] [color=#000000]}] [x=20.00] [y=140.00] [width=96.00] [height=1.00] 90 RenderSVGText {text} at (20,147) size 89x14 contains 1 chunk(s) 91 RenderSVGInlineText {#text} at (0,0) size 89x14 92 chunk 1 text run 1 at (20.00,158.00) startOffset 0 endOffset 14 width 88.56: "25.4 mm = 1 in" 93 RenderSVGText {text} at (230,149) size 99x14 contains 1 chunk(s) 94 RenderSVGInlineText {#text} at (0,0) size 99x14 95 chunk 1 text run 1 at (230.00,160.00) startOffset 0 endOffset 7 width 41.47: "Millime" 96 chunk 1 text run 2 at (271.33,160.00) startOffset 7 endOffset 8 width 3.71: "t" 97 chunk 1 text run 3 at (274.85,160.00) startOffset 8 endOffset 10 width 11.85: "er" 98 chunk 1 text run 4 at (286.76,160.00) startOffset 10 endOffset 16 width 41.47: "s (mm)" 99 RenderSVGPath {rect} at (20,220) size 96x1 [fill={[type=SOLID] [color=#000000]}] [x=20.00] [y=160.00] [width=96.00] [height=1.00] 100 RenderSVGText {text} at (20,167) size 63x14 contains 1 chunk(s) 101 RenderSVGInlineText {#text} at (0,0) size 63x14 102 chunk 1 text run 1 at (20.00,178.00) startOffset 0 endOffset 1 width 7.41: "7" 103 chunk 1 text run 2 at (27.04,178.00) startOffset 1 endOffset 3 width 14.83: "2p" 104 chunk 1 text run 3 at (41.81,178.00) startOffset 3 endOffset 11 width 40.40: "t = 1 in" 105 RenderSVGText {text} at (230,169) size 61x14 contains 1 chunk(s) 75 106 RenderSVGInlineText {#text} at (0,0) size 61x14 76 chunk 1 text run 1 at (230.00,120.00) startOffset 0 endOffset 3 width 17.34: "Inc" 77 chunk 1 text run 2 at (247.36,120.00) startOffset 3 endOffset 11 width 43.34: "hes (in)" 78 RenderSVGPath {rect} at (20,180) size 96x1 [fill={[type=SOLID] [color=#000000]}] [x=20.00] [y=120.00] [width=96.00] [height=1.00] 79 RenderSVGText {text} at (20,127) size 83x14 contains 1 chunk(s) 80 RenderSVGInlineText {#text} at (0,0) size 83x14 81 chunk 1 text run 1 at (20.00,138.00) startOffset 0 endOffset 3 width 18.07: "2.5" 82 chunk 1 text run 2 at (38.08,138.00) startOffset 3 endOffset 14 width 63.95: "4 cm = 1 in" 83 RenderSVGText {text} at (230,129) size 100x14 contains 1 chunk(s) 84 RenderSVGInlineText {#text} at (0,0) size 100x14 85 chunk 1 text run 1 at (230.00,140.00) startOffset 0 endOffset 7 width 48.40: "Centime" 86 chunk 1 text run 2 at (278.27,140.00) startOffset 7 endOffset 8 width 3.61: "t" 87 chunk 1 text run 3 at (281.69,140.00) startOffset 8 endOffset 10 width 11.56: "er" 88 chunk 1 text run 4 at (293.30,140.00) startOffset 10 endOffset 16 width 36.10: "s (cm)" 89 RenderSVGPath {rect} at (20,200) size 96x1 [fill={[type=SOLID] [color=#000000]}] [x=20.00] [y=140.00] [width=96.00] [height=1.00] 90 RenderSVGText {text} at (20,147) size 87x14 contains 1 chunk(s) 91 RenderSVGInlineText {#text} at (0,0) size 87x14 92 chunk 1 text run 1 at (20.00,158.00) startOffset 0 endOffset 14 width 86.35: "25.4 mm = 1 in" 93 RenderSVGText {text} at (230,149) size 96x14 contains 1 chunk(s) 94 RenderSVGInlineText {#text} at (0,0) size 96x14 95 chunk 1 text run 1 at (230.00,160.00) startOffset 0 endOffset 7 width 40.43: "Millime" 96 chunk 1 text run 2 at (270.30,160.00) startOffset 7 endOffset 8 width 3.61: "t" 97 chunk 1 text run 3 at (273.72,160.00) startOffset 8 endOffset 10 width 11.56: "er" 98 chunk 1 text run 4 at (285.33,160.00) startOffset 10 endOffset 16 width 40.43: "s (mm)" 99 RenderSVGPath {rect} at (20,220) size 96x1 [fill={[type=SOLID] [color=#000000]}] [x=20.00] [y=160.00] [width=96.00] [height=1.00] 100 RenderSVGText {text} at (20,167) size 61x14 contains 1 chunk(s) 101 RenderSVGInlineText {#text} at (0,0) size 61x14 102 chunk 1 text run 1 at (20.00,178.00) startOffset 0 endOffset 1 width 7.23: "7" 103 chunk 1 text run 2 at (26.85,178.00) startOffset 1 endOffset 3 width 14.46: "2p" 104 chunk 1 text run 3 at (41.26,178.00) startOffset 3 endOffset 11 width 39.39: "t = 1 in" 105 RenderSVGText {text} at (230,169) size 59x14 contains 1 chunk(s) 107 chunk 1 text run 1 at (230.00,180.00) startOffset 0 endOffset 1 width 8.89: "P" 108 chunk 1 text run 2 at (238.53,180.00) startOffset 1 endOffset 9 width 43.72: "oints (p" 109 chunk 1 text run 3 at (282.20,180.00) startOffset 9 endOffset 11 width 8.15: "t)" 110 RenderSVGPath {rect} at (20,240) size 96x1 [fill={[type=SOLID] [color=#000000]}] [x=20.00] [y=180.00] [width=96.00] [height=1.00] 111 RenderSVGText {text} at (20,187) size 59x14 contains 1 chunk(s) 106 112 RenderSVGInlineText {#text} at (0,0) size 59x14 107 chunk 1 text run 1 at (230.00,180.00) startOffset 0 endOffset 1 width 8.67: "P" 108 chunk 1 text run 2 at (238.31,180.00) startOffset 1 endOffset 9 width 42.63: "oints (p" 109 chunk 1 text run 3 at (280.88,180.00) startOffset 9 endOffset 11 width 7.94: "t)" 110 RenderSVGPath {rect} at (20,240) size 96x1 [fill={[type=SOLID] [color=#000000]}] [x=20.00] [y=180.00] [width=96.00] [height=1.00] 111 RenderSVGText {text} at (20,187) size 57x14 contains 1 chunk(s) 112 RenderSVGInlineText {#text} at (0,0) size 57x14 113 chunk 1 text run 1 at (20.00,198.00) startOffset 0 endOffset 10 width 56.73: "6pc = 1 in" 114 RenderSVGText {text} at (230,189) size 58x14 contains 1 chunk(s) 115 RenderSVGInlineText {#text} at (0,0) size 58x14 116 chunk 1 text run 1 at (230.00,200.00) startOffset 0 endOffset 10 width 57.78: "Picas (pc)" 113 chunk 1 text run 1 at (20.00,198.00) startOffset 0 endOffset 10 width 58.19: "6pc = 1 in" 114 RenderSVGText {text} at (230,189) size 60x14 contains 1 chunk(s) 115 RenderSVGInlineText {#text} at (0,0) size 60x14 116 chunk 1 text run 1 at (230.00,200.00) startOffset 0 endOffset 10 width 59.27: "Picas (pc)" 117 117 RenderSVGPath {rect} at (20,260) size 96x1 [fill={[type=SOLID] [color=#000000]}] [x=20.00] [y=200.00] [width=96.00] [height=1.00] 118 118 RenderSVGContainer {g} at (10,314) size 227x33 -
trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/fonts-glyph-03-t-expected.txt
r89233 r89311 3 3 layer at (0,0) size 480x360 4 4 RenderSVGRoot {svg} at (0,0) size 480x360 5 RenderSVGContainer {g} at (50,10) size 2 8x2605 RenderSVGContainer {g} at (50,10) size 25x260 6 6 RenderSVGHiddenContainer {defs} at (0,0) size 0x0 7 RenderSVGContainer {g} at (50,10) size 2 8x2607 RenderSVGContainer {g} at (50,10) size 25x260 8 8 RenderSVGText {text} at (50,10) size 25x50 contains 1 chunk(s) 9 9 RenderSVGInlineText {#text} at (0,0) size 25x50 … … 15 15 RenderSVGInlineText {#text} at (0,0) size 25x50 16 16 chunk 1 text run 1 at (50.00,190.00) startOffset 0 endOffset 1 width 25.00: "a" 17 RenderSVGText {text} at (50,220) size 2 8x50 contains 1 chunk(s)18 RenderSVGInlineText {#text} at (0,0) size 2 8x5019 chunk 1 text run 1 at (50.00,260.00) startOffset 0 endOffset 1 width 2 8.00: "a"17 RenderSVGText {text} at (50,220) size 25x50 contains 1 chunk(s) 18 RenderSVGInlineText {#text} at (0,0) size 25x50 19 chunk 1 text run 1 at (50.00,260.00) startOffset 0 endOffset 1 width 25.00: "a" 20 20 RenderSVGText {text} at (10,304) size 284x46 contains 1 chunk(s) 21 21 RenderSVGInlineText {#text} at (0,0) size 284x46 -
trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/fonts-glyph-04-t-expected.txt
r89233 r89311 3 3 layer at (0,0) size 480x360 4 4 RenderSVGRoot {svg} at (0,0) size 480x360 5 RenderSVGContainer {g} at (100,60) size 6 1x1505 RenderSVGContainer {g} at (100,60) size 64x150 6 6 RenderSVGHiddenContainer {defs} at (0,0) size 0x0 7 RenderSVGText {text} at (100,60) size 6 1x50 contains 1 chunk(s)8 RenderSVGInlineText {#text} at (0,0) size 6 1x509 chunk 1 text run 1 at (100.00,100.00) startOffset 0 endOffset 3 width 6 1.00: "ffl"7 RenderSVGText {text} at (100,60) size 64x50 contains 1 chunk(s) 8 RenderSVGInlineText {#text} at (0,0) size 64x50 9 chunk 1 text run 1 at (100.00,100.00) startOffset 0 endOffset 3 width 64.00: "ffl" 10 10 RenderSVGText {text} at (100,160) size 25x50 contains 1 chunk(s) 11 11 RenderSVGInlineText {#text} at (0,0) size 25x50 -
trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/pservers-grad-08-b-expected.txt
r89233 r89311 4 4 RenderSVGRoot {svg} at (0,0) size 480x360 5 5 RenderSVGHiddenContainer {defs} at (0,0) size 0x0 6 RenderSVGContainer {g} at (17,33) size 45 1x222 [transform={m=((1.00,0.00)(0.00,1.50)) t=(0.00,0.00)}]6 RenderSVGContainer {g} at (17,33) size 450x222 [transform={m=((1.00,0.00)(0.00,1.50)) t=(0.00,0.00)}] 7 7 RenderSVGResourceLinearGradient {linearGradient} [id="Gradient"] [gradientUnits=userSpaceOnUse] [start=(10,10)] [end=(440,10)] 8 8 RenderSVGGradientStop {stop} [offset=0.00] [color=#0000FF] 9 9 RenderSVGGradientStop {stop} [offset=1.00] [color=#FF0000] 10 RenderSVGText {text} at (20,22) size 44 8x57 contains 1 chunk(s)11 RenderSVGInlineText {#text} at (0,0) size 44 8x5712 chunk 1 text run 1 at (20.00,70.00) startOffset 0 endOffset 16 width 44 7.91: "Gradient on fill"10 RenderSVGText {text} at (20,22) size 447x57 contains 1 chunk(s) 11 RenderSVGInlineText {#text} at (0,0) size 447x57 12 chunk 1 text run 1 at (20.00,70.00) startOffset 0 endOffset 16 width 446.28: "Gradient on fill" 13 13 RenderSVGText {text} at (20,121) size 430x46 contains 1 chunk(s) 14 14 RenderSVGInlineText {#text} at (0,0) size 430x46 15 chunk 1 text run 1 at (20.00,160.00) startOffset 0 endOffset 18 width 429. 20: "Gradient on stroke"15 chunk 1 text run 1 at (20.00,160.00) startOffset 0 endOffset 18 width 429.88: "Gradient on stroke" 16 16 RenderSVGText {text} at (40,117) size 342x36 contains 1 chunk(s) 17 17 RenderSVGInlineText {#text} at (0,0) size 342x36 -
trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/text-altglyph-01-b-expected.txt
r89233 r89311 12 12 RenderSVGHiddenContainer {defs} at (0,0) size 0x0 13 13 RenderSVGContainer {g} at (45,125) size 398x165 14 RenderSVGText {text} at (140,130) size 1 98x75 contains 1 chunk(s)15 RenderSVGTSpan {altGlyph} at (0,0) size 43x7516 RenderSVGInlineText {#text} at (0,0) size 43x7517 chunk 1 text run 1 at (140.00,190.00) startOffset 0 endOffset 1 width 43.00: "H"14 RenderSVGText {text} at (140,130) size 188x75 contains 1 chunk(s) 15 RenderSVGTSpan {altGlyph} at (0,0) size 38x75 16 RenderSVGInlineText {#text} at (0,0) size 38x75 17 chunk 1 text run 1 at (140.00,190.00) startOffset 0 endOffset 1 width 37.50: "H" 18 18 RenderSVGInlineText {#text} at (0,0) size 0x0 19 19 RenderSVGTSpan {altGlyph} at (0,0) size 38x75 20 RenderSVGInlineText {#text} at (43,0) size 38x75 21 chunk 1 text run 1 at (183.00,190.00) startOffset 0 endOffset 1 width 37.50: "A" 22 RenderSVGInlineText {#text} at (0,0) size 0x0 23 RenderSVGTSpan {altGlyph} at (0,0) size 41x75 24 RenderSVGInlineText {#text} at (80,0) size 41x75 25 chunk 1 text run 1 at (220.50,190.00) startOffset 0 endOffset 1 width 40.00: "P" 26 RenderSVGInlineText {#text} at (0,0) size 0x0 27 RenderSVGTSpan {altGlyph} at (0,0) size 41x75 28 RenderSVGInlineText {#text} at (120,0) size 41x75 29 chunk 1 text run 1 at (260.50,190.00) startOffset 0 endOffset 1 width 40.00: "P" 20 RenderSVGInlineText {#text} at (37,0) size 38x75 21 chunk 1 text run 1 at (177.50,190.00) startOffset 0 endOffset 1 width 37.50: "A" 30 22 RenderSVGInlineText {#text} at (0,0) size 0x0 31 23 RenderSVGTSpan {altGlyph} at (0,0) size 38x75 32 RenderSVGInlineText {#text} at (160,0) size 38x75 33 chunk 1 text run 1 at (300.50,190.00) startOffset 0 endOffset 1 width 37.50: "Y" 24 RenderSVGInlineText {#text} at (75,0) size 38x75 25 chunk 1 text run 1 at (215.00,190.00) startOffset 0 endOffset 1 width 37.50: "P" 26 RenderSVGInlineText {#text} at (0,0) size 0x0 27 RenderSVGTSpan {altGlyph} at (0,0) size 38x75 28 RenderSVGInlineText {#text} at (112,0) size 38x75 29 chunk 1 text run 1 at (252.50,190.00) startOffset 0 endOffset 1 width 37.50: "P" 30 RenderSVGInlineText {#text} at (0,0) size 0x0 31 RenderSVGTSpan {altGlyph} at (0,0) size 38x75 32 RenderSVGInlineText {#text} at (150,0) size 38x75 33 chunk 1 text run 1 at (290.00,190.00) startOffset 0 endOffset 1 width 37.50: "Y" 34 34 RenderSVGInlineText {#text} at (0,0) size 0x0 35 35 RenderSVGText {text} at (50,210) size 113x75 contains 1 chunk(s) -
trunk/LayoutTests/platform/mac/svg/batik/text/textEffect-expected.txt
r89233 r89311 2 2 RenderView at (0,0) size 800x600 3 3 layer at (0,0) size 450x500 4 RenderSVGRoot {svg} at (28,15) size 39 5x3885 RenderSVGContainer {g} at (28,15) size 39 5x3884 RenderSVGRoot {svg} at (28,15) size 396x388 5 RenderSVGContainer {g} at (28,15) size 396x388 6 6 RenderSVGText {text} at (136,15) size 178x19 contains 1 chunk(s) 7 7 RenderSVGInlineText {#text} at (0,0) size 178x19 … … 25 25 RenderSVGInlineText {#text} at (0,0) size 152x60 26 26 chunk 1 (middle anchor) text run 1 at (44.00,160.00) startOffset 0 endOffset 5 width 152.00: "BATIK" 27 RenderSVGText {text} at (25 3,112) size 154x60 contains 1 chunk(s)28 RenderSVGInlineText {#text} at (0,0) size 15 4x6029 chunk 1 (middle anchor) text run 1 at (25 3.42,160.00) startOffset 0 endOffset 5 width 153.15: "BATIK"27 RenderSVGText {text} at (252,112) size 156x60 contains 1 chunk(s) 28 RenderSVGInlineText {#text} at (0,0) size 156x60 29 chunk 1 (middle anchor) text run 1 at (252.94,160.00) startOffset 0 endOffset 5 width 154.11: "BATIK" 30 30 RenderSVGText {text} at (44,212) size 152x60 contains 1 chunk(s) 31 31 RenderSVGInlineText {#text} at (0,0) size 152x60 32 32 chunk 1 (middle anchor) text run 1 at (44.00,260.00) startOffset 0 endOffset 5 width 152.00: "BATIK" 33 RenderSVGText {text} at (25 3,212) size 154x60 contains 1 chunk(s)34 RenderSVGInlineText {#text} at (0,0) size 15 4x6035 chunk 1 (middle anchor) text run 1 at (25 3.42,260.00) startOffset 0 endOffset 5 width 153.15: "BATIK"33 RenderSVGText {text} at (252,212) size 156x60 contains 1 chunk(s) 34 RenderSVGInlineText {#text} at (0,0) size 156x60 35 chunk 1 (middle anchor) text run 1 at (252.94,260.00) startOffset 0 endOffset 5 width 154.11: "BATIK" 36 36 RenderSVGText {text} at (44,312) size 152x60 contains 1 chunk(s) 37 37 [filter="dropShadow"] RenderSVGResourceFilter {filter} at (28.80,306) size 182.40x72 … … 39 39 [filter="dropShadow"] RenderSVGResourceFilter {filter} at (0,0) size 0x0 40 40 chunk 1 (middle anchor) text run 1 at (44.00,360.00) startOffset 0 endOffset 5 width 152.00: "BATIK" 41 RenderSVGText {text} at (25 3,312) size 154x60 contains 1 chunk(s)42 [filter="dropShadow"] RenderSVGResourceFilter {filter} at (23 7.60,306) size 184.80x7243 RenderSVGInlineText {#text} at (0,0) size 15 4x6041 RenderSVGText {text} at (252,312) size 156x60 contains 1 chunk(s) 42 [filter="dropShadow"] RenderSVGResourceFilter {filter} at (236.40,306) size 187.20x72 43 RenderSVGInlineText {#text} at (0,0) size 156x60 44 44 [filter="dropShadow"] RenderSVGResourceFilter {filter} at (0,0) size 0x0 45 chunk 1 (middle anchor) text run 1 at (25 3.42,360.00) startOffset 0 endOffset 5 width 153.15: "BATIK"45 chunk 1 (middle anchor) text run 1 at (252.94,360.00) startOffset 0 endOffset 5 width 154.11: "BATIK" 46 46 RenderSVGText {text} at (87,389) size 66x14 contains 1 chunk(s) 47 47 RenderSVGInlineText {#text} at (0,0) size 66x14 -
trunk/LayoutTests/platform/mac/svg/batik/text/textEffect3-expected.txt
r89233 r89311 39 39 RenderSVGText {text} at (263,92) size 148x80 contains 1 chunk(s) 40 40 RenderSVGInlineText {#text} at (0,20) size 37x60 41 chunk 1 (middle anchor) text run 1 at (263. 90,160.00) startOffset 0 endOffset 1 width 35.35: "B"41 chunk 1 (middle anchor) text run 1 at (263.69,160.00) startOffset 0 endOffset 1 width 35.57: "B" 42 42 RenderSVGTSpan {tspan} at (0,0) size 19x31 43 43 RenderSVGInlineText {#text} at (36,23) size 19x31 44 chunk 1 (middle anchor) text run 1 at (299.2 5,140.00) startOffset 0 endOffset 1 width 18.01: "A"44 chunk 1 (middle anchor) text run 1 at (299.26,140.00) startOffset 0 endOffset 1 width 17.79: "A" 45 45 RenderSVGInlineText {#text} at (54,0) size 33x60 46 chunk 1 (middle anchor) text run 1 at (317. 26,140.00) startOffset 0 endOffset 1 width 32.37: "T"46 chunk 1 (middle anchor) text run 1 at (317.05,140.00) startOffset 0 endOffset 1 width 32.58: "T" 47 47 RenderSVGTSpan {tspan} at (0,0) size 12x46 48 48 RenderSVGInlineText {#text} at (86,11) size 12x46 49 chunk 1 (middle anchor) text run 1 at (349.6 4,140.00) startOffset 0 endOffset 1 width 11.11: "I"49 chunk 1 (middle anchor) text run 1 at (349.63,140.00) startOffset 0 endOffset 1 width 11.11: "I" 50 50 RenderSVGTSpan {tspan} at (0,0) size 55x69 51 51 RenderSVGInlineText {#text} at (93,2) size 55x69 52 chunk 1 (middle anchor) text run 1 at (360.7 5,140.00) startOffset 0 endOffset 1 width 35.35: "K"52 chunk 1 (middle anchor) text run 1 at (360.74,140.00) startOffset 0 endOffset 1 width 35.57: "K" 53 53 RenderSVGInlineText {#text} at (0,0) size 0x0 54 54 RenderSVGText {text} at (54,192) size 146x80 contains 1 chunk(s) … … 69 69 RenderSVGText {text} at (263,192) size 148x80 contains 1 chunk(s) 70 70 RenderSVGInlineText {#text} at (0,20) size 37x60 71 chunk 1 (middle anchor) text run 1 at (263. 90,260.00) startOffset 0 endOffset 1 width 35.35: "B"71 chunk 1 (middle anchor) text run 1 at (263.69,260.00) startOffset 0 endOffset 1 width 35.57: "B" 72 72 RenderSVGTSpan {tspan} at (0,0) size 19x31 73 73 RenderSVGInlineText {#text} at (36,23) size 19x31 74 chunk 1 (middle anchor) text run 1 at (299.2 5,240.00) startOffset 0 endOffset 1 width 18.01: "A"74 chunk 1 (middle anchor) text run 1 at (299.26,240.00) startOffset 0 endOffset 1 width 17.79: "A" 75 75 RenderSVGInlineText {#text} at (54,0) size 33x60 76 chunk 1 (middle anchor) text run 1 at (317. 26,240.00) startOffset 0 endOffset 1 width 32.37: "T"76 chunk 1 (middle anchor) text run 1 at (317.05,240.00) startOffset 0 endOffset 1 width 32.58: "T" 77 77 RenderSVGTSpan {tspan} at (0,0) size 12x46 78 78 RenderSVGInlineText {#text} at (86,11) size 12x46 79 chunk 1 (middle anchor) text run 1 at (349.6 4,240.00) startOffset 0 endOffset 1 width 11.11: "I"79 chunk 1 (middle anchor) text run 1 at (349.63,240.00) startOffset 0 endOffset 1 width 11.11: "I" 80 80 RenderSVGTSpan {tspan} at (0,0) size 55x69 81 81 RenderSVGInlineText {#text} at (93,2) size 55x69 82 chunk 1 (middle anchor) text run 1 at (360.7 5,240.00) startOffset 0 endOffset 1 width 35.35: "K"82 chunk 1 (middle anchor) text run 1 at (360.74,240.00) startOffset 0 endOffset 1 width 35.57: "K" 83 83 RenderSVGInlineText {#text} at (0,0) size 0x0 84 84 RenderSVGText {text} at (54,292) size 146x80 contains 1 chunk(s) … … 105 105 RenderSVGInlineText {#text} at (0,20) size 37x60 106 106 [filter="dropShadow"] RenderSVGResourceFilter {filter} at (0,0) size 0x0 107 chunk 1 (middle anchor) text run 1 at (263. 90,360.00) startOffset 0 endOffset 1 width 35.35: "B"107 chunk 1 (middle anchor) text run 1 at (263.69,360.00) startOffset 0 endOffset 1 width 35.57: "B" 108 108 RenderSVGTSpan {tspan} at (0,0) size 19x31 109 109 RenderSVGInlineText {#text} at (36,23) size 19x31 110 chunk 1 (middle anchor) text run 1 at (299.2 5,340.00) startOffset 0 endOffset 1 width 18.01: "A"110 chunk 1 (middle anchor) text run 1 at (299.26,340.00) startOffset 0 endOffset 1 width 17.79: "A" 111 111 RenderSVGInlineText {#text} at (54,0) size 33x60 112 112 [filter="dropShadow"] RenderSVGResourceFilter {filter} at (0,0) size 0x0 113 chunk 1 (middle anchor) text run 1 at (317. 26,340.00) startOffset 0 endOffset 1 width 32.37: "T"113 chunk 1 (middle anchor) text run 1 at (317.05,340.00) startOffset 0 endOffset 1 width 32.58: "T" 114 114 RenderSVGTSpan {tspan} at (0,0) size 12x46 115 115 RenderSVGInlineText {#text} at (86,11) size 12x46 116 chunk 1 (middle anchor) text run 1 at (349.6 4,340.00) startOffset 0 endOffset 1 width 11.11: "I"116 chunk 1 (middle anchor) text run 1 at (349.63,340.00) startOffset 0 endOffset 1 width 11.11: "I" 117 117 RenderSVGTSpan {tspan} at (0,0) size 55x69 118 118 RenderSVGInlineText {#text} at (93,2) size 55x69 119 chunk 1 (middle anchor) text run 1 at (360.7 5,340.00) startOffset 0 endOffset 1 width 35.35: "K"119 chunk 1 (middle anchor) text run 1 at (360.74,340.00) startOffset 0 endOffset 1 width 35.57: "K" 120 120 RenderSVGInlineText {#text} at (0,0) size 0x0 121 121 [filter="dropShadow"] RenderSVGResourceFilter {filter} at (0,0) size 0x0 -
trunk/LayoutTests/platform/mac/svg/batik/text/xmlSpace-expected.txt
r89233 r89311 7 7 chunk 1 (middle anchor) text run 1 at (130.00,40.00) startOffset 0 endOffset 26 width 190.00: "Test of xml:space handling" 8 8 RenderSVGContainer {g} at (10,55) size 435x325 9 RenderSVGText {text} at (10,55) size 3 8x25 contains 1 chunk(s)10 RenderSVGInlineText {#text} at (0,0) size 3 8x2511 chunk 1 text run 1 at (10.00,75.00) startOffset 0 endOffset 2 width 2 5.00: "X "12 chunk 1 text run 1 at (3 5.00,75.00) startOffset 0 endOffset 1 width 13.00: "X"9 RenderSVGText {text} at (10,55) size 36x25 contains 1 chunk(s) 10 RenderSVGInlineText {#text} at (0,0) size 36x25 11 chunk 1 text run 1 at (10.00,75.00) startOffset 0 endOffset 2 width 24.00: "X " 12 chunk 1 text run 1 at (34.00,75.00) startOffset 0 endOffset 1 width 12.00: "X" 13 13 RenderSVGText {text} at (120,67) size 85x10 contains 1 chunk(s) 14 14 RenderSVGInlineText {#text} at (0,0) size 85x10 15 15 chunk 1 text run 1 at (120.00,75.00) startOffset 0 endOffset 17 width 85.00: "no xml:space attr" 16 RenderSVGText {text} at (10,80) size 3 8x25 contains 1 chunk(s)17 RenderSVGInlineText {#text} at (0,0) size 3 8x2518 chunk 1 text run 1 at (10.00,100.00) startOffset 0 endOffset 2 width 2 5.00: "X "19 chunk 1 text run 1 at (3 5.00,100.00) startOffset 0 endOffset 1 width 13.00: "X"16 RenderSVGText {text} at (10,80) size 36x25 contains 1 chunk(s) 17 RenderSVGInlineText {#text} at (0,0) size 36x25 18 chunk 1 text run 1 at (10.00,100.00) startOffset 0 endOffset 2 width 24.00: "X " 19 chunk 1 text run 1 at (34.00,100.00) startOffset 0 endOffset 1 width 12.00: "X" 20 20 RenderSVGText {text} at (120,92) size 95x10 contains 1 chunk(s) 21 21 RenderSVGInlineText {#text} at (0,0) size 95x10 22 22 chunk 1 text run 1 at (120.00,100.00) startOffset 0 endOffset 19 width 95.00: "xml:space=\"default\"" 23 RenderSVGText {text} at (10,130) size 9 8x25 contains 1 chunk(s)24 RenderSVGInlineText {#text} at (0,0) size 9 8x2525 chunk 1 text run 1 at (10.00,150.00) startOffset 0 endOffset 8 width 9 8.00: " X X "23 RenderSVGText {text} at (10,130) size 96x25 contains 1 chunk(s) 24 RenderSVGInlineText {#text} at (0,0) size 96x25 25 chunk 1 text run 1 at (10.00,150.00) startOffset 0 endOffset 8 width 96.00: " X X " 26 26 RenderSVGTSpan {tspan} at (0,0) size 0x0 27 27 RenderSVGText {text} at (120,132) size 95x20 contains 1 chunk(s) … … 31 31 RenderSVGInlineText {#text} at (0,10) size 95x10 32 32 chunk 1 text run 1 at (120.00,149.60) startOffset 0 endOffset 19 width 95.00: "xml:space=\"default\"" 33 RenderSVGText {text} at (10,155) size 7 4x25 contains 1 chunk(s)34 RenderSVGInlineText {#text} at (0,0) size 7 4x2535 chunk 1 text run 1 at (10.00,175.00) startOffset 0 endOffset 6 width 7 4.00: " X X"33 RenderSVGText {text} at (10,155) size 72x25 contains 1 chunk(s) 34 RenderSVGInlineText {#text} at (0,0) size 72x25 35 chunk 1 text run 1 at (10.00,175.00) startOffset 0 endOffset 6 width 72.00: " X X" 36 36 RenderSVGTSpan {tspan} at (0,0) size 0x0 37 37 RenderSVGInlineText {#text} at (0,0) size 0x0 … … 42 42 RenderSVGInlineText {#text} at (0,10) size 95x10 43 43 chunk 1 text run 1 at (120.00,174.60) startOffset 0 endOffset 19 width 95.00: "xml:space=\"default\"" 44 RenderSVGText {text} at (10,180) size 8 6x25 contains 1 chunk(s)45 RenderSVGInlineText {#text} at (0,0) size 8 6x2546 chunk 1 text run 1 at (10.00,200.00) startOffset 0 endOffset 7 width 8 6.00: " X X "44 RenderSVGText {text} at (10,180) size 84x25 contains 1 chunk(s) 45 RenderSVGInlineText {#text} at (0,0) size 84x25 46 chunk 1 text run 1 at (10.00,200.00) startOffset 0 endOffset 7 width 84.00: " X X " 47 47 RenderSVGTSpan {tspan} at (0,0) size 0x0 48 48 RenderSVGInlineText {#text} at (-10,-180) size 0x0 … … 53 53 RenderSVGInlineText {#text} at (0,10) size 95x10 54 54 chunk 1 text run 1 at (120.00,199.60) startOffset 0 endOffset 19 width 95.00: "xml:space=\"default\"" 55 RenderSVGText {text} at (10,205) size 8 6x25 contains 1 chunk(s)55 RenderSVGText {text} at (10,205) size 84x25 contains 1 chunk(s) 56 56 RenderSVGTSpan {tspan} at (0,0) size 0x0 57 57 RenderSVGInlineText {#text} at (0,0) size 0x0 58 RenderSVGInlineText {#text} at (0,0) size 8 6x2559 chunk 1 text run 1 at (10.00,225.00) startOffset 0 endOffset 7 width 8 6.00: " X X "58 RenderSVGInlineText {#text} at (0,0) size 84x25 59 chunk 1 text run 1 at (10.00,225.00) startOffset 0 endOffset 7 width 84.00: " X X " 60 60 RenderSVGText {text} at (120,207) size 95x20 contains 1 chunk(s) 61 61 RenderSVGInlineText {#text} at (0,0) size 60x10 … … 64 64 RenderSVGInlineText {#text} at (0,10) size 95x10 65 65 chunk 1 text run 1 at (120.00,224.60) startOffset 0 endOffset 19 width 95.00: "xml:space=\"default\"" 66 RenderSVGText {text} at (10,230) size 8 6x25 contains 1 chunk(s)66 RenderSVGText {text} at (10,230) size 84x25 contains 1 chunk(s) 67 67 RenderSVGInlineText {#text} at (0,0) size 12x25 68 68 chunk 1 text run 1 at (10.00,250.00) startOffset 0 endOffset 1 width 12.00: " " 69 69 RenderSVGTSpan {tspan} at (0,0) size 0x0 70 70 RenderSVGInlineText {#text} at (-10,-230) size 0x0 71 RenderSVGInlineText {#text} at (12,0) size 7 4x2572 chunk 1 text run 1 at (22.00,250.00) startOffset 0 endOffset 6 width 7 4.00: "X X "71 RenderSVGInlineText {#text} at (12,0) size 72x25 72 chunk 1 text run 1 at (22.00,250.00) startOffset 0 endOffset 6 width 72.00: "X X " 73 73 RenderSVGText {text} at (120,232) size 95x20 contains 1 chunk(s) 74 74 RenderSVGInlineText {#text} at (0,0) size 85x10 … … 77 77 RenderSVGInlineText {#text} at (0,10) size 95x10 78 78 chunk 1 text run 1 at (120.00,249.60) startOffset 0 endOffset 19 width 95.00: "xml:space=\"default\"" 79 RenderSVGText {text} at (10,255) size 9 8x25 contains 1 chunk(s)80 RenderSVGInlineText {#text} at (0,0) size 3 7x2581 chunk 1 text run 1 at (10.00,275.00) startOffset 0 endOffset 3 width 3 7.00: " X"82 RenderSVGTSpan {tspan} at (0,0) size 12x25 83 RenderSVGInlineText {#text} at (3 7,0) size 12x2584 chunk 1 text run 1 at (4 7.00,275.00) startOffset 0 endOffset 1 width 12.00: " "85 RenderSVGInlineText {#text} at (4 9,0) size 49x2586 chunk 1 text run 1 at (5 9.00,275.00) startOffset 0 endOffset 4 width 49.00: " X "79 RenderSVGText {text} at (10,255) size 96x25 contains 1 chunk(s) 80 RenderSVGInlineText {#text} at (0,0) size 36x25 81 chunk 1 text run 1 at (10.00,275.00) startOffset 0 endOffset 3 width 36.00: " X" 82 RenderSVGTSpan {tspan} at (0,0) size 12x25 83 RenderSVGInlineText {#text} at (36,0) size 12x25 84 chunk 1 text run 1 at (46.00,275.00) startOffset 0 endOffset 1 width 12.00: " " 85 RenderSVGInlineText {#text} at (48,0) size 48x25 86 chunk 1 text run 1 at (58.00,275.00) startOffset 0 endOffset 4 width 48.00: " X " 87 87 RenderSVGText {text} at (120,257) size 95x20 contains 1 chunk(s) 88 88 RenderSVGInlineText {#text} at (0,0) size 95x10 … … 91 91 RenderSVGInlineText {#text} at (0,10) size 95x10 92 92 chunk 1 text run 1 at (120.00,274.60) startOffset 0 endOffset 19 width 95.00: "xml:space=\"default\"" 93 RenderSVGText {text} at (10,280) size 8 6x25 contains 1 chunk(s)94 RenderSVGInlineText {#text} at (0,0) size 4 9x2595 chunk 1 text run 1 at (10.00,300.00) startOffset 0 endOffset 4 width 4 9.00: " X "93 RenderSVGText {text} at (10,280) size 84x25 contains 1 chunk(s) 94 RenderSVGInlineText {#text} at (0,0) size 48x25 95 chunk 1 text run 1 at (10.00,300.00) startOffset 0 endOffset 4 width 48.00: " X " 96 96 RenderSVGTSpan {tspan} at (0,0) size 0x0 97 97 RenderSVGInlineText {#text} at (-10,-280) size 0x0 98 RenderSVGInlineText {#text} at (4 9,0) size 37x2599 chunk 1 text run 1 at (5 9.00,300.00) startOffset 0 endOffset 3 width 37.00: "X "98 RenderSVGInlineText {#text} at (48,0) size 36x25 99 chunk 1 text run 1 at (58.00,300.00) startOffset 0 endOffset 3 width 36.00: "X " 100 100 RenderSVGText {text} at (120,282) size 95x20 contains 1 chunk(s) 101 101 RenderSVGInlineText {#text} at (0,0) size 85x10 … … 104 104 RenderSVGInlineText {#text} at (0,10) size 95x10 105 105 chunk 1 text run 1 at (120.00,299.60) startOffset 0 endOffset 19 width 95.00: "xml:space=\"default\"" 106 RenderSVGText {text} at (10,305) size 9 8x25 contains 1 chunk(s)106 RenderSVGText {text} at (10,305) size 96x25 contains 1 chunk(s) 107 107 RenderSVGInlineText {#text} at (0,0) size 12x25 108 108 chunk 1 text run 1 at (10.00,325.00) startOffset 0 endOffset 1 width 12.00: " " 109 RenderSVGInlineText {#text} at (12,0) size 8 6x25110 chunk 1 text run 1 at (22.00,325.00) startOffset 0 endOffset 7 width 8 6.00: " X X "109 RenderSVGInlineText {#text} at (12,0) size 84x25 110 chunk 1 text run 1 at (22.00,325.00) startOffset 0 endOffset 7 width 84.00: " X X " 111 111 RenderSVGText {text} at (120,307) size 80x20 contains 1 chunk(s) 112 112 RenderSVGInlineText {#text} at (0,0) size 80x10 … … 115 115 RenderSVGInlineText {#text} at (0,10) size 25x10 116 116 chunk 1 text run 1 at (120.00,324.60) startOffset 0 endOffset 5 width 25.00: "start" 117 RenderSVGText {text} at (10,330) size 9 8x25 contains 1 chunk(s)118 RenderSVGInlineText {#text} at (0,0) size 4 9x25119 chunk 1 text run 1 at (10.00,350.00) startOffset 0 endOffset 4 width 4 9.00: " X "120 RenderSVGInlineText {#text} at (4 9,0) size 49x25121 chunk 1 text run 1 at (5 9.00,350.00) startOffset 0 endOffset 4 width 49.00: " X "117 RenderSVGText {text} at (10,330) size 96x25 contains 1 chunk(s) 118 RenderSVGInlineText {#text} at (0,0) size 48x25 119 chunk 1 text run 1 at (10.00,350.00) startOffset 0 endOffset 4 width 48.00: " X " 120 RenderSVGInlineText {#text} at (48,0) size 48x25 121 chunk 1 text run 1 at (58.00,350.00) startOffset 0 endOffset 4 width 48.00: " X " 122 122 RenderSVGText {text} at (120,332) size 80x20 contains 1 chunk(s) 123 123 RenderSVGInlineText {#text} at (0,0) size 80x10 … … 126 126 RenderSVGInlineText {#text} at (0,10) size 30x10 127 127 chunk 1 text run 1 at (120.00,349.60) startOffset 0 endOffset 6 width 30.00: "middle" 128 RenderSVGText {text} at (10,355) size 9 8x25 contains 1 chunk(s)129 RenderSVGInlineText {#text} at (0,0) size 8 6x25130 chunk 1 text run 1 at (10.00,375.00) startOffset 0 endOffset 7 width 8 6.00: " X X "131 RenderSVGInlineText {#text} at (8 6,0) size 12x25132 chunk 1 text run 1 at (9 6.00,375.00) startOffset 0 endOffset 1 width 12.00: " "128 RenderSVGText {text} at (10,355) size 96x25 contains 1 chunk(s) 129 RenderSVGInlineText {#text} at (0,0) size 84x25 130 chunk 1 text run 1 at (10.00,375.00) startOffset 0 endOffset 7 width 84.00: " X X " 131 RenderSVGInlineText {#text} at (84,0) size 12x25 132 chunk 1 text run 1 at (94.00,375.00) startOffset 0 endOffset 1 width 12.00: " " 133 133 RenderSVGText {text} at (120,357) size 80x20 contains 1 chunk(s) 134 134 RenderSVGInlineText {#text} at (0,0) size 80x10 … … 137 137 RenderSVGInlineText {#text} at (0,10) size 15x10 138 138 chunk 1 text run 1 at (120.00,374.60) startOffset 0 endOffset 3 width 15.00: "end" 139 RenderSVGText {text} at (235,80) size 9 8x25 contains 1 chunk(s)140 RenderSVGInlineText {#text} at (0,0) size 9 8x25141 chunk 1 text run 1 at (235.00,100.00) startOffset 0 endOffset 8 width 9 8.00: " X X "139 RenderSVGText {text} at (235,80) size 96x25 contains 1 chunk(s) 140 RenderSVGInlineText {#text} at (0,0) size 96x25 141 chunk 1 text run 1 at (235.00,100.00) startOffset 0 endOffset 8 width 96.00: " X X " 142 142 RenderSVGText {text} at (345,92) size 100x10 contains 1 chunk(s) 143 143 RenderSVGInlineText {#text} at (0,0) size 100x10 144 144 chunk 1 text run 1 at (345.00,100.00) startOffset 0 endOffset 20 width 100.00: "xml:space=\"preserve\"" 145 RenderSVGText {text} at (235,130) size 3 8x25 contains 1 chunk(s)146 RenderSVGInlineText {#text} at (0,0) size 3 8x25147 chunk 1 text run 1 at (235.00,150.00) startOffset 0 endOffset 2 width 2 5.00: "X "148 chunk 1 text run 1 at (2 60.00,150.00) startOffset 0 endOffset 1 width 13.00: "X"145 RenderSVGText {text} at (235,130) size 36x25 contains 1 chunk(s) 146 RenderSVGInlineText {#text} at (0,0) size 36x25 147 chunk 1 text run 1 at (235.00,150.00) startOffset 0 endOffset 2 width 24.00: "X " 148 chunk 1 text run 1 at (259.00,150.00) startOffset 0 endOffset 1 width 12.00: "X" 149 149 RenderSVGTSpan {tspan} at (0,0) size 0x0 150 150 RenderSVGText {text} at (345,132) size 100x20 contains 1 chunk(s) … … 154 154 RenderSVGInlineText {#text} at (0,10) size 100x10 155 155 chunk 1 text run 1 at (345.00,149.60) startOffset 0 endOffset 20 width 100.00: "xml:space=\"preserve\"" 156 RenderSVGText {text} at (235,155) size 6 2x25 contains 1 chunk(s)157 RenderSVGInlineText {#text} at (0,0) size 3 8x25158 chunk 1 text run 1 at (235.00,175.00) startOffset 0 endOffset 2 width 2 5.00: "X "159 chunk 1 text run 1 at (2 60.00,175.00) startOffset 0 endOffset 1 width 13.00: "X"156 RenderSVGText {text} at (235,155) size 60x25 contains 1 chunk(s) 157 RenderSVGInlineText {#text} at (0,0) size 36x25 158 chunk 1 text run 1 at (235.00,175.00) startOffset 0 endOffset 2 width 24.00: "X " 159 chunk 1 text run 1 at (259.00,175.00) startOffset 0 endOffset 1 width 12.00: "X" 160 160 RenderSVGTSpan {tspan} at (0,0) size 24x25 161 RenderSVGInlineText {#text} at (3 8,0) size 24x25162 chunk 1 text run 1 at (27 3.00,175.00) startOffset 0 endOffset 2 width 24.00: " "161 RenderSVGInlineText {#text} at (36,0) size 24x25 162 chunk 1 text run 1 at (271.00,175.00) startOffset 0 endOffset 2 width 24.00: " " 163 163 RenderSVGText {text} at (345,157) size 100x20 contains 1 chunk(s) 164 164 RenderSVGInlineText {#text} at (0,0) size 75x10 … … 167 167 RenderSVGInlineText {#text} at (0,10) size 100x10 168 168 chunk 1 text run 1 at (345.00,174.60) startOffset 0 endOffset 20 width 100.00: "xml:space=\"preserve\"" 169 RenderSVGText {text} at (235,180) size 6 2x25 contains 1 chunk(s)170 RenderSVGInlineText {#text} at (0,0) size 50x25171 chunk 1 text run 1 at (235.00,200.00) startOffset 0 endOffset 2 width 2 5.00: "X "172 chunk 1 text run 1 at (2 60.00,200.00) startOffset 0 endOffset 2 width 25.00: "X "173 RenderSVGTSpan {tspan} at (0,0) size 12x25 174 RenderSVGInlineText {#text} at ( 50,0) size 12x25175 chunk 1 text run 1 at (28 5.00,200.00) startOffset 0 endOffset 1 width 12.00: " "169 RenderSVGText {text} at (235,180) size 60x25 contains 1 chunk(s) 170 RenderSVGInlineText {#text} at (0,0) size 48x25 171 chunk 1 text run 1 at (235.00,200.00) startOffset 0 endOffset 2 width 24.00: "X " 172 chunk 1 text run 1 at (259.00,200.00) startOffset 0 endOffset 2 width 24.00: "X " 173 RenderSVGTSpan {tspan} at (0,0) size 12x25 174 RenderSVGInlineText {#text} at (48,0) size 12x25 175 chunk 1 text run 1 at (283.00,200.00) startOffset 0 endOffset 1 width 12.00: " " 176 176 RenderSVGText {text} at (345,182) size 100x20 contains 1 chunk(s) 177 177 RenderSVGInlineText {#text} at (0,0) size 50x10 … … 180 180 RenderSVGInlineText {#text} at (0,10) size 100x10 181 181 chunk 1 text run 1 at (345.00,199.60) startOffset 0 endOffset 20 width 100.00: "xml:space=\"preserve\"" 182 RenderSVGText {text} at (235,205) size 50x25 contains 1 chunk(s)182 RenderSVGText {text} at (235,205) size 48x25 contains 1 chunk(s) 183 183 RenderSVGTSpan {tspan} at (0,0) size 12x25 184 184 RenderSVGInlineText {#text} at (0,0) size 12x25 185 185 chunk 1 text run 1 at (235.00,225.00) startOffset 0 endOffset 1 width 12.00: " " 186 RenderSVGInlineText {#text} at (12,0) size 3 8x25187 chunk 1 text run 1 at (247.00,225.00) startOffset 1 endOffset 3 width 2 5.00: "X "188 chunk 1 text run 1 at (27 2.00,225.00) startOffset 0 endOffset 1 width 13.00: "X"186 RenderSVGInlineText {#text} at (12,0) size 36x25 187 chunk 1 text run 1 at (247.00,225.00) startOffset 1 endOffset 3 width 24.00: "X " 188 chunk 1 text run 1 at (271.00,225.00) startOffset 0 endOffset 1 width 12.00: "X" 189 189 RenderSVGText {text} at (345,207) size 100x20 contains 1 chunk(s) 190 190 RenderSVGInlineText {#text} at (0,0) size 60x10 … … 193 193 RenderSVGInlineText {#text} at (0,10) size 100x10 194 194 chunk 1 text run 1 at (345.00,224.60) startOffset 0 endOffset 20 width 100.00: "xml:space=\"preserve\"" 195 RenderSVGText {text} at (235,230) size 50x25 contains 1 chunk(s)195 RenderSVGText {text} at (235,230) size 48x25 contains 1 chunk(s) 196 196 RenderSVGTSpan {tspan} at (0,0) size 12x25 197 197 RenderSVGInlineText {#text} at (0,0) size 12x25 198 198 chunk 1 text run 1 at (235.00,250.00) startOffset 0 endOffset 1 width 12.00: " " 199 RenderSVGInlineText {#text} at (12,0) size 3 8x25200 chunk 1 text run 1 at (247.00,250.00) startOffset 0 endOffset 2 width 2 5.00: "X "201 chunk 1 text run 1 at (27 2.00,250.00) startOffset 0 endOffset 1 width 13.00: "X"199 RenderSVGInlineText {#text} at (12,0) size 36x25 200 chunk 1 text run 1 at (247.00,250.00) startOffset 0 endOffset 2 width 24.00: "X " 201 chunk 1 text run 1 at (271.00,250.00) startOffset 0 endOffset 1 width 12.00: "X" 202 202 RenderSVGText {text} at (345,232) size 100x20 contains 1 chunk(s) 203 203 RenderSVGInlineText {#text} at (0,0) size 85x10 … … 206 206 RenderSVGInlineText {#text} at (0,10) size 100x10 207 207 chunk 1 text run 1 at (345.00,249.60) startOffset 0 endOffset 20 width 100.00: "xml:space=\"preserve\"" 208 RenderSVGText {text} at (235,255) size 3 8x25 contains 1 chunk(s)209 RenderSVGInlineText {#text} at (0,0) size 1 3x25210 chunk 1 text run 1 at (235.00,275.00) startOffset 0 endOffset 1 width 1 3.00: "X"211 RenderSVGTSpan {tspan} at (0,0) size 12x25 212 RenderSVGInlineText {#text} at (1 3,0) size 12x25213 chunk 1 text run 1 at (24 8.00,275.00) startOffset 0 endOffset 1 width 12.00: " "214 RenderSVGInlineText {#text} at (2 5,0) size 13x25215 chunk 1 text run 1 at (2 60.00,275.00) startOffset 1 endOffset 2 width 13.00: "X"208 RenderSVGText {text} at (235,255) size 36x25 contains 1 chunk(s) 209 RenderSVGInlineText {#text} at (0,0) size 12x25 210 chunk 1 text run 1 at (235.00,275.00) startOffset 0 endOffset 1 width 12.00: "X" 211 RenderSVGTSpan {tspan} at (0,0) size 12x25 212 RenderSVGInlineText {#text} at (12,0) size 12x25 213 chunk 1 text run 1 at (247.00,275.00) startOffset 0 endOffset 1 width 12.00: " " 214 RenderSVGInlineText {#text} at (24,0) size 12x25 215 chunk 1 text run 1 at (259.00,275.00) startOffset 1 endOffset 2 width 12.00: "X" 216 216 RenderSVGText {text} at (345,257) size 100x20 contains 1 chunk(s) 217 217 RenderSVGInlineText {#text} at (0,0) size 95x10 … … 220 220 RenderSVGInlineText {#text} at (0,10) size 100x10 221 221 chunk 1 text run 1 at (345.00,274.60) startOffset 0 endOffset 20 width 100.00: "xml:space=\"preserve\"" 222 RenderSVGText {text} at (235,280) size 50x25 contains 1 chunk(s)223 RenderSVGInlineText {#text} at (0,0) size 2 5x25224 chunk 1 text run 1 at (235.00,300.00) startOffset 0 endOffset 2 width 2 5.00: "X "225 RenderSVGTSpan {tspan} at (0,0) size 12x25 226 RenderSVGInlineText {#text} at (2 5,0) size 12x25227 chunk 1 text run 1 at (2 60.00,300.00) startOffset 0 endOffset 1 width 12.00: " "228 RenderSVGInlineText {#text} at (3 7,0) size 13x25229 chunk 1 text run 1 at (27 2.00,300.00) startOffset 0 endOffset 1 width 13.00: "X"222 RenderSVGText {text} at (235,280) size 48x25 contains 1 chunk(s) 223 RenderSVGInlineText {#text} at (0,0) size 24x25 224 chunk 1 text run 1 at (235.00,300.00) startOffset 0 endOffset 2 width 24.00: "X " 225 RenderSVGTSpan {tspan} at (0,0) size 12x25 226 RenderSVGInlineText {#text} at (24,0) size 12x25 227 chunk 1 text run 1 at (259.00,300.00) startOffset 0 endOffset 1 width 12.00: " " 228 RenderSVGInlineText {#text} at (36,0) size 12x25 229 chunk 1 text run 1 at (271.00,300.00) startOffset 0 endOffset 1 width 12.00: "X" 230 230 RenderSVGText {text} at (345,282) size 100x20 contains 1 chunk(s) 231 231 RenderSVGInlineText {#text} at (0,0) size 85x10 … … 234 234 RenderSVGInlineText {#text} at (0,10) size 100x10 235 235 chunk 1 text run 1 at (345.00,299.60) startOffset 0 endOffset 20 width 100.00: "xml:space=\"preserve\"" 236 RenderSVGText {text} at (235,305) size 3 8x25 contains 1 chunk(s)237 RenderSVGInlineText {#text} at (0,0) size 3 8x25238 chunk 1 text run 1 at (235.00,325.00) startOffset 0 endOffset 2 width 2 5.00: "X "239 chunk 1 text run 1 at (2 60.00,325.00) startOffset 0 endOffset 1 width 13.00: "X"236 RenderSVGText {text} at (235,305) size 36x25 contains 1 chunk(s) 237 RenderSVGInlineText {#text} at (0,0) size 36x25 238 chunk 1 text run 1 at (235.00,325.00) startOffset 0 endOffset 2 width 24.00: "X " 239 chunk 1 text run 1 at (259.00,325.00) startOffset 0 endOffset 1 width 12.00: "X" 240 240 RenderSVGText {text} at (345,307) size 80x20 contains 1 chunk(s) 241 241 RenderSVGInlineText {#text} at (0,0) size 80x10 … … 244 244 RenderSVGInlineText {#text} at (0,10) size 25x10 245 245 chunk 1 text run 1 at (345.00,324.60) startOffset 0 endOffset 5 width 25.00: "start" 246 RenderSVGText {text} at (235,330) size 3 8x25 contains 1 chunk(s)247 RenderSVGInlineText {#text} at (0,0) size 2 5x25248 chunk 1 text run 1 at (235.00,350.00) startOffset 0 endOffset 2 width 2 5.00: "X "249 RenderSVGInlineText {#text} at (2 5,0) size 13x25250 chunk 1 text run 1 at (2 60.00,350.00) startOffset 0 endOffset 1 width 13.00: "X"246 RenderSVGText {text} at (235,330) size 36x25 contains 1 chunk(s) 247 RenderSVGInlineText {#text} at (0,0) size 24x25 248 chunk 1 text run 1 at (235.00,350.00) startOffset 0 endOffset 2 width 24.00: "X " 249 RenderSVGInlineText {#text} at (24,0) size 12x25 250 chunk 1 text run 1 at (259.00,350.00) startOffset 0 endOffset 1 width 12.00: "X" 251 251 RenderSVGText {text} at (345,332) size 80x20 contains 1 chunk(s) 252 252 RenderSVGInlineText {#text} at (0,0) size 80x10 … … 255 255 RenderSVGInlineText {#text} at (0,10) size 30x10 256 256 chunk 1 text run 1 at (345.00,349.60) startOffset 0 endOffset 6 width 30.00: "middle" 257 RenderSVGText {text} at (236,355) size 3 8x25 contains 1 chunk(s)258 RenderSVGInlineText {#text} at (0,0) size 3 8x25259 chunk 1 text run 1 at (236.00,375.00) startOffset 0 endOffset 2 width 2 5.00: "X "260 chunk 1 text run 1 at (26 1.00,375.00) startOffset 0 endOffset 1 width 13.00: "X"257 RenderSVGText {text} at (236,355) size 36x25 contains 1 chunk(s) 258 RenderSVGInlineText {#text} at (0,0) size 36x25 259 chunk 1 text run 1 at (236.00,375.00) startOffset 0 endOffset 2 width 24.00: "X " 260 chunk 1 text run 1 at (260.00,375.00) startOffset 0 endOffset 1 width 12.00: "X" 261 261 RenderSVGInlineText {#text} at (0,0) size 0x0 262 262 RenderSVGText {text} at (345,357) size 80x20 contains 1 chunk(s) -
trunk/LayoutTests/platform/mac/svg/custom/glyph-selection-lang-attribute-expected.txt
r89233 r89311 4 4 RenderSVGRoot {svg} at (0,0) size 800x600 5 5 RenderSVGHiddenContainer {defs} at (0,0) size 0x0 6 RenderSVGContainer {g} at (83,16) size 4 7x5516 RenderSVGContainer {g} at (83,16) size 42x551 7 7 RenderSVGText {text} at (50,10) size 25x50 contains 1 chunk(s) 8 8 RenderSVGInlineText {#text} at (0,0) size 25x50 9 chunk 1 text run 1 at (50.00,50.00) startOffset 0 endOffset 1 width 2 4.90: "a"9 chunk 1 text run 1 at (50.00,50.00) startOffset 0 endOffset 1 width 25.00: "a" 10 10 RenderSVGText {text} at (50,80) size 25x50 contains 1 chunk(s) 11 11 RenderSVGInlineText {#text} at (0,0) size 25x50 12 chunk 1 text run 1 at (50.00,120.00) startOffset 0 endOffset 1 width 2 4.90: "a"13 RenderSVGText {text} at (50,150) size 2 8x50 contains 1 chunk(s)14 RenderSVGInlineText {#text} at (0,0) size 2 8x5015 chunk 1 text run 1 at (50.00,190.00) startOffset 0 endOffset 1 width 2 7.60: "a"16 RenderSVGText {text} at (50,220) size 2 8x50 contains 1 chunk(s)17 RenderSVGInlineText {#text} at (0,0) size 2 8x5018 chunk 1 text run 1 at (50.00,260.00) startOffset 0 endOffset 1 width 2 7.60: "a"19 RenderSVGText {text} at (50,290) size 2 8x50 contains 1 chunk(s)20 RenderSVGInlineText {#text} at (0,0) size 2 8x5021 chunk 1 text run 1 at (50.00,330.00) startOffset 0 endOffset 1 width 2 7.60: "a"12 chunk 1 text run 1 at (50.00,120.00) startOffset 0 endOffset 1 width 25.00: "a" 13 RenderSVGText {text} at (50,150) size 25x50 contains 1 chunk(s) 14 RenderSVGInlineText {#text} at (0,0) size 25x50 15 chunk 1 text run 1 at (50.00,190.00) startOffset 0 endOffset 1 width 25.00: "a" 16 RenderSVGText {text} at (50,220) size 25x50 contains 1 chunk(s) 17 RenderSVGInlineText {#text} at (0,0) size 25x50 18 chunk 1 text run 1 at (50.00,260.00) startOffset 0 endOffset 1 width 25.00: "a" 19 RenderSVGText {text} at (50,290) size 25x50 contains 1 chunk(s) 20 RenderSVGInlineText {#text} at (0,0) size 25x50 21 chunk 1 text run 1 at (50.00,330.00) startOffset 0 endOffset 1 width 25.00: "a" 22 22 RenderSVGContainer {g} at (250,16) size 42x551 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,0.00)}] 23 23 RenderSVGText {text} at (50,10) size 25x50 contains 1 chunk(s) 24 24 RenderSVGInlineText {#text} at (0,0) size 25x50 25 chunk 1 text run 1 at (50.00,50.00) startOffset 0 endOffset 1 width 2 4.90: "a"25 chunk 1 text run 1 at (50.00,50.00) startOffset 0 endOffset 1 width 25.00: "a" 26 26 RenderSVGText {text} at (50,80) size 25x50 contains 1 chunk(s) 27 27 RenderSVGInlineText {#text} at (0,0) size 25x50 28 chunk 1 text run 1 at (50.00,120.00) startOffset 0 endOffset 1 width 2 4.90: "a"28 chunk 1 text run 1 at (50.00,120.00) startOffset 0 endOffset 1 width 25.00: "a" 29 29 RenderSVGText {text} at (50,150) size 25x50 contains 1 chunk(s) 30 30 RenderSVGInlineText {#text} at (0,0) size 25x50 31 chunk 1 text run 1 at (50.00,190.00) startOffset 0 endOffset 1 width 2 4.90: "a"31 chunk 1 text run 1 at (50.00,190.00) startOffset 0 endOffset 1 width 25.00: "a" 32 32 RenderSVGText {text} at (50,220) size 25x50 contains 1 chunk(s) 33 33 RenderSVGInlineText {#text} at (0,0) size 25x50 34 chunk 1 text run 1 at (50.00,260.00) startOffset 0 endOffset 1 width 2 4.90: "a"34 chunk 1 text run 1 at (50.00,260.00) startOffset 0 endOffset 1 width 25.00: "a" 35 35 RenderSVGText {text} at (50,290) size 25x50 contains 1 chunk(s) 36 36 RenderSVGInlineText {#text} at (0,0) size 25x50 37 chunk 1 text run 1 at (50.00,330.00) startOffset 0 endOffset 1 width 2 4.90: "a"37 chunk 1 text run 1 at (50.00,330.00) startOffset 0 endOffset 1 width 25.00: "a" 38 38 RenderSVGPath {rect} at (0,0) size 800x600 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=478.00] [height=358.00] -
trunk/LayoutTests/platform/mac/svg/custom/svg-fonts-with-no-element-reference-expected.txt
r89233 r89311 5 5 RenderBody {BODY} at (8,18) size 784x60 6 6 RenderBlock {P} at (0,0) size 784x21 7 RenderText {#text} at (0,1) size 27 7x198 text run at (0,1) width 27 7: "This text should be rendered with a first font."7 RenderText {#text} at (0,1) size 275x19 8 text run at (0,1) width 275: "This text should be rendered with a first font." 9 9 RenderBlock {P} at (0,39) size 784x21 10 RenderText {#text} at (0,1) size 28 5x1911 text run at (0,1) width 28 5: "This text should be rendered with a second font."10 RenderText {#text} at (0,1) size 284x19 11 text run at (0,1) width 284: "This text should be rendered with a second font." -
trunk/LayoutTests/platform/mac/svg/custom/svg-fonts-without-missing-glyph-expected.txt
r89233 r89311 14 14 text run at (0,0) width 506: "Following text should be rendered as usual. Only \"A\" has a glyph in SVG Font." 15 15 RenderBlock {p} at (0,92) size 784x18 16 RenderText {#text} at (0,1) size 3 5x1617 text run at (0,1) width 3 5: "XXA"16 RenderText {#text} at (0,1) size 37x16 17 text run at (0,1) width 37: "XXA" 18 18 RenderBlock {p} at (0,126) size 784x18 19 RenderText {#text} at (0,1) size 3 5x1620 text run at (0,1) width 3 5: "XAX"19 RenderText {#text} at (0,1) size 37x16 20 text run at (0,1) width 37: "XAX" 21 21 RenderBlock {p} at (0,160) size 784x18 22 RenderText {#text} at (0,1) size 3 5x1623 text run at (0,1) width 3 5: "AXX"22 RenderText {#text} at (0,1) size 37x16 23 text run at (0,1) width 37: "AXX" 24 24 RenderBlock {p} at (0,194) size 784x18 25 RenderText {#text} at (0,1) size 3 3x1626 text run at (0,1) width 3 3: "XXX"25 RenderText {#text} at (0,1) size 36x16 26 text run at (0,1) width 36: "XXX" 27 27 RenderBlock {p} at (0,228) size 784x18 28 28 RenderText {#text} at (0,1) size 39x16 -
trunk/LayoutTests/platform/mac/svg/foreignObject/text-tref-02-b-expected.txt
r89233 r89311 27 27 chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 5 width 41.00: "Hello" 28 28 RenderText {#text} at (0,0) size 0x0 29 RenderSVGContainer {g} at (16,523) size 37 6x5630 RenderSVGText {text} at (10,314) size 22 5x33 contains 1 chunk(s)31 RenderSVGInlineText {#text} at (0,0) size 22 5x3332 chunk 1 text run 1 at (10.00,340.00) startOffset 0 endOffset 2 width 40. 64: "$R"33 chunk 1 text run 2 at (50. 26,340.00) startOffset 2 endOffset 3 width 17.68: "e"34 chunk 1 text run 3 at (67. 46,340.00) startOffset 3 endOffset 12 width 116.64: "vision: 1"35 chunk 1 text run 4 at (18 1.73,340.00) startOffset 12 endOffset 16 width 53.04: ".5 $"29 RenderSVGContainer {g} at (16,523) size 379x56 30 RenderSVGText {text} at (10,314) size 227x33 contains 1 chunk(s) 31 RenderSVGInlineText {#text} at (0,0) size 227x33 32 chunk 1 text run 1 at (10.00,340.00) startOffset 0 endOffset 2 width 40.90: "$R" 33 chunk 1 text run 2 at (50.51,340.00) startOffset 2 endOffset 3 width 17.79: "e" 34 chunk 1 text run 3 at (67.82,340.00) startOffset 3 endOffset 12 width 117.38: "vision: 1" 35 chunk 1 text run 4 at (182.83,340.00) startOffset 12 endOffset 16 width 53.38: ".5 $" 36 36 RenderSVGPath {rect} at (0,0) size 800x600 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=478.00] [height=358.00] -
trunk/LayoutTests/platform/mac/svg/text/text-altglyph-01-b-expected.txt
r89233 r89311 12 12 RenderSVGHiddenContainer {defs} at (0,0) size 0x0 13 13 RenderSVGContainer {g} at (75,208) size 664x276 14 RenderSVGText {text} at (140,130) size 1 99x75 contains 1 chunk(s)15 RenderSVGTSpan {altGlyph} at (0,0) size 44x7516 RenderSVGInlineText {#text} at (0,0) size 44x7517 chunk 1 text run 1 at (140.00,190.00) startOffset 0 endOffset 1 width 43.20: "H"14 RenderSVGText {text} at (140,130) size 188x75 contains 1 chunk(s) 15 RenderSVGTSpan {altGlyph} at (0,0) size 38x75 16 RenderSVGInlineText {#text} at (0,0) size 38x75 17 chunk 1 text run 1 at (140.00,190.00) startOffset 0 endOffset 1 width 37.50: "H" 18 18 RenderSVGInlineText {#text} at (0,0) size 0x0 19 19 RenderSVGTSpan {altGlyph} at (0,0) size 38x75 20 RenderSVGInlineText {#text} at (43,0) size 38x75 21 chunk 1 text run 1 at (183.20,190.00) startOffset 0 endOffset 1 width 37.50: "A" 22 RenderSVGInlineText {#text} at (0,0) size 0x0 23 RenderSVGTSpan {altGlyph} at (0,0) size 41x75 24 RenderSVGInlineText {#text} at (80,0) size 41x75 25 chunk 1 text run 1 at (220.70,190.00) startOffset 0 endOffset 1 width 40.20: "P" 26 RenderSVGInlineText {#text} at (0,0) size 0x0 27 RenderSVGTSpan {altGlyph} at (0,0) size 42x75 28 RenderSVGInlineText {#text} at (120,0) size 42x75 29 chunk 1 text run 1 at (260.90,190.00) startOffset 0 endOffset 1 width 40.20: "P" 20 RenderSVGInlineText {#text} at (37,0) size 38x75 21 chunk 1 text run 1 at (177.50,190.00) startOffset 0 endOffset 1 width 37.50: "A" 30 22 RenderSVGInlineText {#text} at (0,0) size 0x0 31 23 RenderSVGTSpan {altGlyph} at (0,0) size 38x75 32 RenderSVGInlineText {#text} at (161,0) size 38x75 33 chunk 1 text run 1 at (301.10,190.00) startOffset 0 endOffset 1 width 37.50: "Y" 24 RenderSVGInlineText {#text} at (75,0) size 38x75 25 chunk 1 text run 1 at (215.00,190.00) startOffset 0 endOffset 1 width 37.50: "P" 26 RenderSVGInlineText {#text} at (0,0) size 0x0 27 RenderSVGTSpan {altGlyph} at (0,0) size 38x75 28 RenderSVGInlineText {#text} at (112,0) size 38x75 29 chunk 1 text run 1 at (252.50,190.00) startOffset 0 endOffset 1 width 37.50: "P" 30 RenderSVGInlineText {#text} at (0,0) size 0x0 31 RenderSVGTSpan {altGlyph} at (0,0) size 38x75 32 RenderSVGInlineText {#text} at (150,0) size 38x75 33 chunk 1 text run 1 at (290.00,190.00) startOffset 0 endOffset 1 width 37.50: "Y" 34 34 RenderSVGInlineText {#text} at (0,0) size 0x0 35 35 RenderSVGText {text} at (50,210) size 113x75 contains 1 chunk(s) -
trunk/LayoutTests/platform/mac/svg/text/text-text-04-t-expected.txt
r89233 r89311 24 24 RenderSVGText {text} at (0,-20) size 60x25 contains 1 chunk(s) 25 25 RenderSVGInlineText {#text} at (0,0) size 60x25 26 chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 4 width 59.40: "1234"26 chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 4 width 60.00: "1234" 27 27 RenderSVGHiddenContainer {defs} at (0,0) size 0x0 28 28 RenderSVGPath {rect} at (0,0) size 7x7 [fill={[type=SOLID] [color=#000000]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00] … … 48 48 RenderSVGText {text} at (20,-20) size 75x25 contains 1 chunk(s) 49 49 RenderSVGInlineText {#text} at (0,0) size 75x25 50 chunk 1 text run 1 at (20.00,0.00) startOffset 0 endOffset 1 width 1 4.85: "1"51 chunk 1 text run 1 at (40.00,0.00) startOffset 0 endOffset 1 width 1 4.85: "2"52 chunk 1 text run 1 at (60.00,0.00) startOffset 0 endOffset 1 width 1 4.85: "3"53 chunk 1 text run 1 at (80.00,0.00) startOffset 0 endOffset 1 width 1 4.85: "4"50 chunk 1 text run 1 at (20.00,0.00) startOffset 0 endOffset 1 width 15.00: "1" 51 chunk 1 text run 1 at (40.00,0.00) startOffset 0 endOffset 1 width 15.00: "2" 52 chunk 1 text run 1 at (60.00,0.00) startOffset 0 endOffset 1 width 15.00: "3" 53 chunk 1 text run 1 at (80.00,0.00) startOffset 0 endOffset 1 width 15.00: "4" 54 54 RenderSVGContainer {g} at (88,166) size 302x43 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,120.00)}] 55 55 RenderSVGText {text} at (-77,-15) size 48x20 contains 1 chunk(s) … … 76 76 RenderSVGText {text} at (20,-20) size 75x25 contains 1 chunk(s) 77 77 RenderSVGInlineText {#text} at (0,0) size 75x25 78 chunk 1 text run 1 at (20.00,0.00) startOffset 0 endOffset 1 width 1 4.85: "1"79 chunk 1 text run 1 at (40.00,0.00) startOffset 0 endOffset 1 width 1 4.85: "2"80 chunk 1 text run 1 at (60.00,0.00) startOffset 0 endOffset 1 width 1 4.85: "3"81 chunk 1 text run 1 at (80.00,0.00) startOffset 0 endOffset 1 width 1 4.85: "4"78 chunk 1 text run 1 at (20.00,0.00) startOffset 0 endOffset 1 width 15.00: "1" 79 chunk 1 text run 1 at (40.00,0.00) startOffset 0 endOffset 1 width 15.00: "2" 80 chunk 1 text run 1 at (60.00,0.00) startOffset 0 endOffset 1 width 15.00: "3" 81 chunk 1 text run 1 at (80.00,0.00) startOffset 0 endOffset 1 width 15.00: "4" 82 82 RenderSVGContainer {g} at (83,233) size 284x42 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,160.00)}] 83 83 RenderSVGText {text} at (-80,-15) size 51x20 contains 1 chunk(s) … … 101 101 RenderSVGText {text} at (20,-20) size 70x25 contains 1 chunk(s) 102 102 RenderSVGInlineText {#text} at (0,0) size 70x25 103 chunk 1 text run 1 at (20.00,0.00) startOffset 0 endOffset 1 width 1 4.85: "1"104 chunk 1 text run 1 at (40.00,0.00) startOffset 0 endOffset 1 width 1 4.85: "2"105 chunk 1 text run 1 at (60.00,0.00) startOffset 0 endOffset 2 width 29.70: "34"103 chunk 1 text run 1 at (20.00,0.00) startOffset 0 endOffset 1 width 15.00: "1" 104 chunk 1 text run 1 at (40.00,0.00) startOffset 0 endOffset 1 width 15.00: "2" 105 chunk 1 text run 1 at (60.00,0.00) startOffset 0 endOffset 2 width 30.00: "34" 106 106 RenderSVGContainer {g} at (116,283) size 201x76 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,200.00)}] 107 107 RenderSVGText {text} at (-60,-15) size 30x20 contains 1 chunk(s) … … 122 122 RenderSVGText {text} at (0,-30) size 60x45 contains 1 chunk(s) 123 123 RenderSVGInlineText {#text} at (0,0) size 60x45 124 chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 1 width 1 4.85: "1"125 chunk 1 text run 1 at (1 4.85,-5.00) startOffset 0 endOffset 1 width 14.85: "2"126 chunk 1 text run 1 at ( 29.70,5.00) startOffset 0 endOffset 1 width 14.85: "3"127 chunk 1 text run 1 at (4 4.55,10.00) startOffset 0 endOffset 1 width 14.85: "4"124 chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1" 125 chunk 1 text run 1 at (15.00,-5.00) startOffset 0 endOffset 1 width 15.00: "2" 126 chunk 1 text run 1 at (30.00,5.00) startOffset 0 endOffset 1 width 15.00: "3" 127 chunk 1 text run 1 at (45.00,10.00) startOffset 0 endOffset 1 width 15.00: "4" 128 128 RenderSVGContainer {g} at (88,366) size 229x76 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,250.00)}] 129 129 RenderSVGText {text} at (-77,-15) size 48x20 contains 1 chunk(s) … … 144 144 RenderSVGText {text} at (0,-30) size 60x45 contains 1 chunk(s) 145 145 RenderSVGInlineText {#text} at (0,0) size 60x45 146 chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 1 width 1 4.85: "1"147 chunk 1 text run 1 at (1 4.85,-5.00) startOffset 0 endOffset 1 width 14.85: "2"148 chunk 1 text run 1 at ( 29.70,5.00) startOffset 0 endOffset 1 width 14.85: "3"149 chunk 1 text run 1 at (4 4.55,10.00) startOffset 0 endOffset 1 width 14.85: "4"146 chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1" 147 chunk 1 text run 1 at (15.00,-5.00) startOffset 0 endOffset 1 width 15.00: "2" 148 chunk 1 text run 1 at (30.00,5.00) startOffset 0 endOffset 1 width 15.00: "3" 149 chunk 1 text run 1 at (45.00,10.00) startOffset 0 endOffset 1 width 15.00: "4" 150 150 RenderSVGContainer {g} at (83,450) size 234x67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,300.00)}] 151 151 RenderSVGText {text} at (-80,-15) size 51x20 contains 1 chunk(s) … … 166 166 RenderSVGText {text} at (0,-30) size 60x40 contains 1 chunk(s) 167 167 RenderSVGInlineText {#text} at (0,0) size 60x40 168 chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 1 width 1 4.85: "1"169 chunk 1 text run 1 at (1 4.85,-5.00) startOffset 0 endOffset 1 width 14.85: "2"170 chunk 1 text run 1 at ( 29.70,5.00) startOffset 0 endOffset 2 width 29.70: "34"168 chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1" 169 chunk 1 text run 1 at (15.00,-5.00) startOffset 0 endOffset 1 width 15.00: "2" 170 chunk 1 text run 1 at (30.00,5.00) startOffset 0 endOffset 2 width 30.00: "34" 171 171 RenderSVGContainer {g} at (395,83) size 362x342 [transform={m=((1.00,0.00)(0.00,1.00)) t=(220.00,0.00)}] 172 172 RenderSVGContainer {g} at (461,83) size 281x76 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,80.00)}] … … 191 191 RenderSVGText {text} at (20,-30) size 75x45 contains 1 chunk(s) 192 192 RenderSVGInlineText {#text} at (0,0) size 75x45 193 chunk 1 text run 1 at (20.00,-10.00) startOffset 0 endOffset 1 width 1 4.85: "1"194 chunk 1 text run 1 at (40.00,-5.00) startOffset 0 endOffset 1 width 1 4.85: "2"195 chunk 1 text run 1 at (60.00,5.00) startOffset 0 endOffset 1 width 1 4.85: "3"196 chunk 1 text run 1 at (80.00,10.00) startOffset 0 endOffset 1 width 1 4.85: "4"193 chunk 1 text run 1 at (20.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1" 194 chunk 1 text run 1 at (40.00,-5.00) startOffset 0 endOffset 1 width 15.00: "2" 195 chunk 1 text run 1 at (60.00,5.00) startOffset 0 endOffset 1 width 15.00: "3" 196 chunk 1 text run 1 at (80.00,10.00) startOffset 0 endOffset 1 width 15.00: "4" 197 197 RenderSVGContainer {g} at (433,150) size 324x90 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,120.00)}] 198 198 RenderSVGText {text} at (-90,-15) size 60x20 contains 1 chunk(s) … … 219 219 RenderSVGText {text} at (20,-30) size 75x45 contains 1 chunk(s) 220 220 RenderSVGInlineText {#text} at (0,0) size 75x45 221 chunk 1 text run 1 at (20.00,-10.00) startOffset 0 endOffset 1 width 1 4.85: "1"222 chunk 1 text run 1 at (40.00,-5.00) startOffset 0 endOffset 1 width 1 4.85: "2"223 chunk 1 text run 1 at (60.00,5.00) startOffset 0 endOffset 1 width 1 4.85: "3"224 chunk 1 text run 1 at (80.00,10.00) startOffset 0 endOffset 1 width 1 4.85: "4"221 chunk 1 text run 1 at (20.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1" 222 chunk 1 text run 1 at (40.00,-5.00) startOffset 0 endOffset 1 width 15.00: "2" 223 chunk 1 text run 1 at (60.00,5.00) startOffset 0 endOffset 1 width 15.00: "3" 224 chunk 1 text run 1 at (80.00,10.00) startOffset 0 endOffset 1 width 15.00: "4" 225 225 RenderSVGContainer {g} at (428,216) size 306x68 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,160.00)}] 226 226 RenderSVGText {text} at (-93,-15) size 63x20 contains 1 chunk(s) … … 244 244 RenderSVGText {text} at (20,-30) size 70x40 contains 1 chunk(s) 245 245 RenderSVGInlineText {#text} at (0,0) size 70x40 246 chunk 1 text run 1 at (20.00,-10.00) startOffset 0 endOffset 1 width 1 4.85: "1"247 chunk 1 text run 1 at (40.00,-5.00) startOffset 0 endOffset 1 width 1 4.85: "2"248 chunk 1 text run 1 at (60.00,5.00) startOffset 0 endOffset 2 width 29.70: "34"246 chunk 1 text run 1 at (20.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1" 247 chunk 1 text run 1 at (40.00,-5.00) startOffset 0 endOffset 1 width 15.00: "2" 248 chunk 1 text run 1 at (60.00,5.00) startOffset 0 endOffset 2 width 30.00: "34" 249 249 RenderSVGContainer {g} at (395,283) size 347x67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,200.00)}] 250 250 RenderSVGText {text} at (-113,-15) size 83x20 contains 1 chunk(s) … … 268 268 RenderSVGText {text} at (20,-30) size 75x40 contains 1 chunk(s) 269 269 RenderSVGInlineText {#text} at (0,0) size 75x40 270 chunk 1 text run 1 at (20.00,-10.00) startOffset 0 endOffset 1 width 1 4.85: "1"271 chunk 1 text run 1 at (40.00,-5.00) startOffset 0 endOffset 1 width 1 4.85: "2"272 chunk 1 text run 1 at (60.00,5.00) startOffset 0 endOffset 1 width 1 4.85: "3"273 chunk 1 text run 1 at (80.00,5.00) startOffset 0 endOffset 1 width 1 4.85: "4"270 chunk 1 text run 1 at (20.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1" 271 chunk 1 text run 1 at (40.00,-5.00) startOffset 0 endOffset 1 width 15.00: "2" 272 chunk 1 text run 1 at (60.00,5.00) startOffset 0 endOffset 1 width 15.00: "3" 273 chunk 1 text run 1 at (80.00,5.00) startOffset 0 endOffset 1 width 15.00: "4" 274 274 RenderSVGContainer {g} at (395,350) size 339x75 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,240.00)}] 275 275 RenderSVGText {text} at (-113,-15) size 83x20 contains 1 chunk(s) … … 293 293 RenderSVGText {text} at (20,-30) size 70x45 contains 1 chunk(s) 294 294 RenderSVGInlineText {#text} at (0,0) size 70x45 295 chunk 1 text run 1 at (20.00,-10.00) startOffset 0 endOffset 1 width 1 4.85: "1"296 chunk 1 text run 1 at (40.00,-5.00) startOffset 0 endOffset 1 width 1 4.85: "2"297 chunk 1 text run 1 at (60.00,5.00) startOffset 0 endOffset 1 width 1 4.85: "3"298 chunk 1 text run 1 at (7 4.85,10.00) startOffset 0 endOffset 1 width 14.85: "4"295 chunk 1 text run 1 at (20.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1" 296 chunk 1 text run 1 at (40.00,-5.00) startOffset 0 endOffset 1 width 15.00: "2" 297 chunk 1 text run 1 at (60.00,5.00) startOffset 0 endOffset 1 width 15.00: "3" 298 chunk 1 text run 1 at (75.00,10.00) startOffset 0 endOffset 1 width 15.00: "4" 299 299 RenderSVGText {text} at (10,303) size 289x48 contains 1 chunk(s) 300 300 RenderSVGInlineText {#text} at (0,0) size 289x48 -
trunk/LayoutTests/platform/mac/svg/text/text-text-05-t-expected.txt
r89233 r89311 37 37 RenderSVGInlineText {#text} at (0,0) size 47x20 38 38 chunk 1 text run 1 at (0.00,270.00) startOffset 0 endOffset 7 width 46.20: "2.x 2.y" 39 RenderSVGContainer {g} at (186,13) size 2 41x537 [transform={m=((1.00,0.00)(0.00,1.00)) t=(150.00,40.00)}]39 RenderSVGContainer {g} at (186,13) size 239x537 [transform={m=((1.00,0.00)(0.00,1.00)) t=(150.00,40.00)}] 40 40 RenderSVGText {text} at (-38,-32) size 76x20 contains 1 chunk(s) 41 41 RenderSVGInlineText {#text} at (0,0) size 76x20 … … 45 45 chunk 1 (middle anchor) text run 1 at (-14.40,-3.00) startOffset 0 endOffset 5 width 28.80: "start" 46 46 RenderSVGPath {line} at (248,83) size 4x467 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#000000]}] [x1=0.00] [y1=10.00] [x2=0.00] [y2=290.00] 47 RenderSVGContainer {g} at (243,91) size 18 4x42447 RenderSVGContainer {g} at (243,91) size 182x424 48 48 RenderSVGContainer {use} at (243,91) size 14x33 49 49 RenderSVGContainer {g} at (243,91) size 14x33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,30.00)}] … … 51 51 RenderSVGPath {line} at (248,91) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00] 52 52 RenderSVGPath {rect} at (243,110) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00] 53 RenderSVGText {text} at (0,20) size 6 2x13 contains 1 chunk(s)54 RenderSVGInlineText {#text} at (0,0) size 6 2x1355 chunk 1 text run 1 at (0.00,30.00) startOffset 0 endOffset 4 width 6 1.20: "1234"53 RenderSVGText {text} at (0,20) size 60x13 contains 1 chunk(s) 54 RenderSVGInlineText {#text} at (0,0) size 60x13 55 chunk 1 text run 1 at (0.00,30.00) startOffset 0 endOffset 4 width 60.00: "1234" 56 56 RenderSVGContainer {use} at (260,141) size 14x33 57 57 RenderSVGContainer {g} at (260,141) size 14x33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,60.00)}] … … 74 74 RenderSVGPath {line} at (315,141) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00] 75 75 RenderSVGPath {rect} at (310,160) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00] 76 RenderSVGText {text} at (10,50) size 4 6x13 contains 1 chunk(s)77 RenderSVGInlineText {#text} at (0,0) size 4 6x1378 chunk 1 text run 1 at (10.00,60.00) startOffset 0 endOffset 1 width 15. 30: "1"79 chunk 1 text run 1 at (20.00,60.00) startOffset 0 endOffset 1 width 15. 30: "2"80 chunk 1 text run 1 at (30.00,60.00) startOffset 0 endOffset 1 width 15. 30: "3"81 chunk 1 text run 1 at (40.00,60.00) startOffset 0 endOffset 1 width 15. 30: "4"76 RenderSVGText {text} at (10,50) size 45x13 contains 1 chunk(s) 77 RenderSVGInlineText {#text} at (0,0) size 45x13 78 chunk 1 text run 1 at (10.00,60.00) startOffset 0 endOffset 1 width 15.00: "1" 79 chunk 1 text run 1 at (20.00,60.00) startOffset 0 endOffset 1 width 15.00: "2" 80 chunk 1 text run 1 at (30.00,60.00) startOffset 0 endOffset 1 width 15.00: "3" 81 chunk 1 text run 1 at (40.00,60.00) startOffset 0 endOffset 1 width 15.00: "4" 82 82 RenderSVGContainer {use} at (260,191) size 14x33 83 83 RenderSVGContainer {g} at (260,191) size 14x33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,90.00)}] … … 90 90 RenderSVGPath {line} at (348,191) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00] 91 91 RenderSVGPath {rect} at (343,210) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00] 92 RenderSVGText {text} at (10,80) size 9 6x13 contains 1 chunk(s)93 RenderSVGInlineText {#text} at (0,0) size 9 6x1394 chunk 1 text run 1 at (10.00,90.00) startOffset 0 endOffset 1 width 15. 30: "1"95 chunk 1 text run 1 at (60.00,90.00) startOffset 0 endOffset 3 width 45. 90: "234"96 RenderSVGContainer {g} at (243,225) size 1 11x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,120.00)}]92 RenderSVGText {text} at (10,80) size 95x13 contains 1 chunk(s) 93 RenderSVGInlineText {#text} at (0,0) size 95x13 94 chunk 1 text run 1 at (10.00,90.00) startOffset 0 endOffset 1 width 15.00: "1" 95 chunk 1 text run 1 at (60.00,90.00) startOffset 0 endOffset 3 width 45.00: "234" 96 RenderSVGContainer {g} at (243,225) size 107x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,120.00)}] 97 97 RenderSVGContainer {use} at (243,225) size 14x32 98 98 RenderSVGContainer {g} at (243,225) size 14x32 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,-10.00)}] … … 115 115 RenderSVGPath {line} at (323,258) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00] 116 116 RenderSVGPath {rect} at (318,276) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00] 117 RenderSVGText {text} at (0,-20) size 6 2x33 contains 1 chunk(s)118 RenderSVGInlineText {#text} at (0,0) size 6 2x33119 chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 1 width 15. 30: "1"120 chunk 1 text run 1 at (15. 30,-5.00) startOffset 0 endOffset 1 width 15.30: "2"121 chunk 1 text run 1 at (30. 60,5.00) startOffset 0 endOffset 1 width 15.30: "3"122 chunk 1 text run 1 at (45. 90,10.00) startOffset 0 endOffset 1 width 15.30: "4"123 RenderSVGContainer {g} at (260,275) size 8 4x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,150.00)}]117 RenderSVGText {text} at (0,-20) size 60x33 contains 1 chunk(s) 118 RenderSVGInlineText {#text} at (0,0) size 60x33 119 chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1" 120 chunk 1 text run 1 at (15.00,-5.00) startOffset 0 endOffset 1 width 15.00: "2" 121 chunk 1 text run 1 at (30.00,5.00) startOffset 0 endOffset 1 width 15.00: "3" 122 chunk 1 text run 1 at (45.00,10.00) startOffset 0 endOffset 1 width 15.00: "4" 123 RenderSVGContainer {g} at (260,275) size 82x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,150.00)}] 124 124 RenderSVGContainer {use} at (260,275) size 14x32 125 125 RenderSVGContainer {g} at (260,275) size 14x32 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,-10.00)}] … … 142 142 RenderSVGPath {line} at (315,308) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00] 143 143 RenderSVGPath {rect} at (310,326) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00] 144 RenderSVGText {text} at (10,-20) size 4 6x33 contains 1 chunk(s)145 RenderSVGInlineText {#text} at (0,0) size 4 6x33146 chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 1 width 15. 30: "1"147 chunk 1 text run 1 at (20.00,-5.00) startOffset 0 endOffset 1 width 15. 30: "2"148 chunk 1 text run 1 at (30.00,5.00) startOffset 0 endOffset 1 width 15. 30: "3"149 chunk 1 text run 1 at (40.00,10.00) startOffset 0 endOffset 1 width 15. 30: "4"150 RenderSVGContainer {g} at (260,325) size 100x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,180.00)}]144 RenderSVGText {text} at (10,-20) size 45x33 contains 1 chunk(s) 145 RenderSVGInlineText {#text} at (0,0) size 45x33 146 chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1" 147 chunk 1 text run 1 at (20.00,-5.00) startOffset 0 endOffset 1 width 15.00: "2" 148 chunk 1 text run 1 at (30.00,5.00) startOffset 0 endOffset 1 width 15.00: "3" 149 chunk 1 text run 1 at (40.00,10.00) startOffset 0 endOffset 1 width 15.00: "4" 150 RenderSVGContainer {g} at (260,325) size 99x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,180.00)}] 151 151 RenderSVGContainer {use} at (260,325) size 14x32 152 152 RenderSVGContainer {g} at (260,325) size 14x32 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,-10.00)}] … … 169 169 RenderSVGPath {line} at (331,358) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00] 170 170 RenderSVGPath {rect} at (326,376) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00] 171 RenderSVGText {text} at (10,-20) size 5 6x33 contains 1 chunk(s)172 RenderSVGInlineText {#text} at (0,0) size 5 6x33173 chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 1 width 15. 30: "1"174 chunk 1 text run 1 at (20.00,-5.00) startOffset 0 endOffset 1 width 15. 30: "2"175 chunk 1 text run 1 at (35. 30,5.00) startOffset 0 endOffset 1 width 15.30: "3"176 chunk 1 text run 1 at (50. 60,10.00) startOffset 0 endOffset 1 width 15.30: "4"177 RenderSVGContainer {g} at (243,375) size 1 11x57 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,210.00)}]171 RenderSVGText {text} at (10,-20) size 55x33 contains 1 chunk(s) 172 RenderSVGInlineText {#text} at (0,0) size 55x33 173 chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1" 174 chunk 1 text run 1 at (20.00,-5.00) startOffset 0 endOffset 1 width 15.00: "2" 175 chunk 1 text run 1 at (35.00,5.00) startOffset 0 endOffset 1 width 15.00: "3" 176 chunk 1 text run 1 at (50.00,10.00) startOffset 0 endOffset 1 width 15.00: "4" 177 RenderSVGContainer {g} at (243,375) size 107x57 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,210.00)}] 178 178 RenderSVGContainer {use} at (243,375) size 14x32 179 179 RenderSVGContainer {g} at (243,375) size 14x32 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,-10.00)}] … … 186 186 RenderSVGPath {line} at (273,400) size 4x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00] 187 187 RenderSVGPath {rect} at (268,418) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00] 188 RenderSVGText {text} at (0,-20) size 6 2x28 contains 1 chunk(s)189 RenderSVGInlineText {#text} at (0,0) size 6 2x28190 chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 1 width 15. 30: "1"191 chunk 1 text run 1 at (15. 30,5.00) startOffset 0 endOffset 3 width 45.90: "234"192 RenderSVGContainer {g} at (260,425) size 8 4x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,240.00)}]188 RenderSVGText {text} at (0,-20) size 60x28 contains 1 chunk(s) 189 RenderSVGInlineText {#text} at (0,0) size 60x28 190 chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1" 191 chunk 1 text run 1 at (15.00,5.00) startOffset 0 endOffset 3 width 45.00: "234" 192 RenderSVGContainer {g} at (260,425) size 82x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,240.00)}] 193 193 RenderSVGContainer {use} at (260,425) size 14x32 194 194 RenderSVGContainer {g} at (260,425) size 14x32 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,-10.00)}] … … 211 211 RenderSVGPath {line} at (315,433) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00] 212 212 RenderSVGPath {rect} at (310,451) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00] 213 RenderSVGText {text} at (10,-20) size 4 6x18 contains 1 chunk(s)214 RenderSVGInlineText {#text} at (0,0) size 4 6x18215 chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 1 width 15. 30: "1"216 chunk 1 text run 1 at (20.00,-5.00) startOffset 0 endOffset 1 width 15. 30: "2"217 chunk 1 text run 1 at (30.00,-5.00) startOffset 0 endOffset 1 width 15. 30: "3"218 chunk 1 text run 1 at (40.00,-5.00) startOffset 0 endOffset 1 width 15. 30: "4"219 RenderSVGContainer {g} at (260,475) size 16 7x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,270.00)}]213 RenderSVGText {text} at (10,-20) size 45x18 contains 1 chunk(s) 214 RenderSVGInlineText {#text} at (0,0) size 45x18 215 chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1" 216 chunk 1 text run 1 at (20.00,-5.00) startOffset 0 endOffset 1 width 15.00: "2" 217 chunk 1 text run 1 at (30.00,-5.00) startOffset 0 endOffset 1 width 15.00: "3" 218 chunk 1 text run 1 at (40.00,-5.00) startOffset 0 endOffset 1 width 15.00: "4" 219 RenderSVGContainer {g} at (260,475) size 165x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,270.00)}] 220 220 RenderSVGContainer {use} at (260,475) size 14x32 221 221 RenderSVGContainer {g} at (260,475) size 14x32 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,-10.00)}] … … 228 228 RenderSVGPath {line} at (348,483) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00] 229 229 RenderSVGPath {rect} at (343,501) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00] 230 RenderSVGText {text} at (10,-20) size 9 6x18 contains 1 chunk(s)231 RenderSVGInlineText {#text} at (0,0) size 9 6x18232 chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 1 width 15. 30: "1"233 chunk 1 text run 1 at (60.00,-5.00) startOffset 0 endOffset 3 width 45. 90: "234"230 RenderSVGText {text} at (10,-20) size 95x18 contains 1 chunk(s) 231 RenderSVGInlineText {#text} at (0,0) size 95x18 232 chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1" 233 chunk 1 text run 1 at (60.00,-5.00) startOffset 0 endOffset 3 width 45.00: "234" 234 234 RenderSVGContainer {g} at (353,13) size 202x537 [transform={m=((1.00,0.00)(0.00,1.00)) t=(250.00,40.00)}] 235 235 RenderSVGText {text} at (-38,-32) size 76x20 contains 1 chunk(s) … … 240 240 chunk 1 (middle anchor) text run 1 at (-23.10,-3.00) startOffset 0 endOffset 6 width 46.20: "middle" 241 241 RenderSVGPath {line} at (415,83) size 4x467 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#000000]}] [x1=0.00] [y1=10.00] [x2=0.00] [y2=290.00] 242 RenderSVGContainer {use} at (36 5,91) size 190x424243 RenderSVGContainer {g} at (36 5,91) size 190x424244 RenderSVGContainer {g} at (36 5,91) size 190x424242 RenderSVGContainer {use} at (366,91) size 189x424 243 RenderSVGContainer {g} at (366,91) size 189x424 244 RenderSVGContainer {g} at (366,91) size 189x424 245 245 RenderSVGContainer {g} at (410,91) size 14x33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,30.00)}] 246 246 RenderSVGContainer {g} at (410,91) size 14x33 247 247 RenderSVGPath {line} at (415,91) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00] 248 248 RenderSVGPath {rect} at (410,110) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00] 249 RenderSVGText {text} at (-3 1,20) size 62x13 contains 1 chunk(s)250 RenderSVGInlineText {#text} at (0,0) size 6 2x13251 chunk 1 (middle anchor) text run 1 at (-30. 60,30.00) startOffset 0 endOffset 4 width 61.20: "1234"249 RenderSVGText {text} at (-30,20) size 60x13 contains 1 chunk(s) 250 RenderSVGInlineText {#text} at (0,0) size 60x13 251 chunk 1 (middle anchor) text run 1 at (-30.00,30.00) startOffset 0 endOffset 4 width 60.00: "1234" 252 252 RenderSVGContainer {g} at (426,141) size 14x33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,60.00)}] 253 253 RenderSVGContainer {g} at (426,141) size 14x33 … … 268 268 RenderSVGText {text} at (2,50) size 46x13 contains 1 chunk(s) 269 269 RenderSVGInlineText {#text} at (0,0) size 46x13 270 chunk 1 (middle anchor) text run 1 at (2. 35,60.00) startOffset 0 endOffset 1 width 15.30: "1"271 chunk 1 (middle anchor) text run 1 at (12. 35,60.00) startOffset 0 endOffset 1 width 15.30: "2"272 chunk 1 (middle anchor) text run 1 at (22. 35,60.00) startOffset 0 endOffset 1 width 15.30: "3"273 chunk 1 (middle anchor) text run 1 at (32. 35,60.00) startOffset 0 endOffset 1 width 15.30: "4"270 chunk 1 (middle anchor) text run 1 at (2.50,60.00) startOffset 0 endOffset 1 width 15.00: "1" 271 chunk 1 (middle anchor) text run 1 at (12.50,60.00) startOffset 0 endOffset 1 width 15.00: "2" 272 chunk 1 (middle anchor) text run 1 at (22.50,60.00) startOffset 0 endOffset 1 width 15.00: "3" 273 chunk 1 (middle anchor) text run 1 at (32.50,60.00) startOffset 0 endOffset 1 width 15.00: "4" 274 274 RenderSVGContainer {g} at (426,191) size 14x33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,90.00)}] 275 275 RenderSVGContainer {g} at (426,191) size 14x33 … … 282 282 RenderSVGText {text} at (2,80) size 81x13 contains 1 chunk(s) 283 283 RenderSVGInlineText {#text} at (0,0) size 81x13 284 chunk 1 (middle anchor) text run 1 at (2. 35,90.00) startOffset 0 endOffset 1 width 15.30: "1"285 chunk 1 (middle anchor) text run 1 at (37. 05,90.00) startOffset 0 endOffset 3 width 45.90: "234"286 RenderSVGContainer {g} at (403,225) size 10 4x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,120.00)}]284 chunk 1 (middle anchor) text run 1 at (2.50,90.00) startOffset 0 endOffset 1 width 15.00: "1" 285 chunk 1 (middle anchor) text run 1 at (37.50,90.00) startOffset 0 endOffset 3 width 45.00: "234" 286 RenderSVGContainer {g} at (403,225) size 102x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,120.00)}] 287 287 RenderSVGContainer {g} at (410,225) size 14x32 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,-10.00)}] 288 288 RenderSVGContainer {g} at (410,225) size 14x32 … … 301 301 RenderSVGPath {line} at (490,258) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00] 302 302 RenderSVGPath {rect} at (485,276) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00] 303 RenderSVGText {text} at (-8,-20) size 6 2x33 contains 1 chunk(s)304 RenderSVGInlineText {#text} at (0,0) size 6 2x33305 chunk 1 (middle anchor) text run 1 at (-7. 65,-10.00) startOffset 0 endOffset 1 width 15.30: "1"306 chunk 1 (middle anchor) text run 1 at (7. 65,-5.00) startOffset 0 endOffset 1 width 15.30: "2"307 chunk 1 (middle anchor) text run 1 at (22. 95,5.00) startOffset 0 endOffset 1 width 15.30: "3"308 chunk 1 (middle anchor) text run 1 at (3 8.25,10.00) startOffset 0 endOffset 1 width 15.30: "4"303 RenderSVGText {text} at (-8,-20) size 61x33 contains 1 chunk(s) 304 RenderSVGInlineText {#text} at (0,0) size 61x33 305 chunk 1 (middle anchor) text run 1 at (-7.50,-10.00) startOffset 0 endOffset 1 width 15.00: "1" 306 chunk 1 (middle anchor) text run 1 at (7.50,-5.00) startOffset 0 endOffset 1 width 15.00: "2" 307 chunk 1 (middle anchor) text run 1 at (22.50,5.00) startOffset 0 endOffset 1 width 15.00: "3" 308 chunk 1 (middle anchor) text run 1 at (37.50,10.00) startOffset 0 endOffset 1 width 15.00: "4" 309 309 RenderSVGContainer {g} at (420,275) size 77x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,150.00)}] 310 310 RenderSVGContainer {g} at (426,275) size 14x32 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,-10.00)}] … … 326 326 RenderSVGText {text} at (2,-20) size 46x33 contains 1 chunk(s) 327 327 RenderSVGInlineText {#text} at (0,0) size 46x33 328 chunk 1 (middle anchor) text run 1 at (2. 35,-10.00) startOffset 0 endOffset 1 width 15.30: "1"329 chunk 1 (middle anchor) text run 1 at (12. 35,-5.00) startOffset 0 endOffset 1 width 15.30: "2"330 chunk 1 (middle anchor) text run 1 at (22. 35,5.00) startOffset 0 endOffset 1 width 15.30: "3"331 chunk 1 (middle anchor) text run 1 at (32. 35,10.00) startOffset 0 endOffset 1 width 15.30: "4"332 RenderSVGContainer {g} at (420,325) size 9 5x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,180.00)}]328 chunk 1 (middle anchor) text run 1 at (2.50,-10.00) startOffset 0 endOffset 1 width 15.00: "1" 329 chunk 1 (middle anchor) text run 1 at (12.50,-5.00) startOffset 0 endOffset 1 width 15.00: "2" 330 chunk 1 (middle anchor) text run 1 at (22.50,5.00) startOffset 0 endOffset 1 width 15.00: "3" 331 chunk 1 (middle anchor) text run 1 at (32.50,10.00) startOffset 0 endOffset 1 width 15.00: "4" 332 RenderSVGContainer {g} at (420,325) size 94x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,180.00)}] 333 333 RenderSVGContainer {g} at (426,325) size 14x32 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,-10.00)}] 334 334 RenderSVGContainer {g} at (426,325) size 14x32 … … 347 347 RenderSVGPath {line} at (498,358) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00] 348 348 RenderSVGPath {rect} at (493,376) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00] 349 RenderSVGText {text} at (2,-20) size 5 7x33 contains 1 chunk(s)350 RenderSVGInlineText {#text} at (0,0) size 5 7x33351 chunk 1 (middle anchor) text run 1 at (2. 35,-10.00) startOffset 0 endOffset 1 width 15.30: "1"352 chunk 1 (middle anchor) text run 1 at (12. 35,-5.00) startOffset 0 endOffset 1 width 15.30: "2"353 chunk 1 (middle anchor) text run 1 at (27. 65,5.00) startOffset 0 endOffset 1 width 15.30: "3"354 chunk 1 (middle anchor) text run 1 at (42. 95,10.00) startOffset 0 endOffset 1 width 15.30: "4"355 RenderSVGContainer {g} at (403,375) size 7 9x57 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,210.00)}]349 RenderSVGText {text} at (2,-20) size 56x33 contains 1 chunk(s) 350 RenderSVGInlineText {#text} at (0,0) size 56x33 351 chunk 1 (middle anchor) text run 1 at (2.50,-10.00) startOffset 0 endOffset 1 width 15.00: "1" 352 chunk 1 (middle anchor) text run 1 at (12.50,-5.00) startOffset 0 endOffset 1 width 15.00: "2" 353 chunk 1 (middle anchor) text run 1 at (27.50,5.00) startOffset 0 endOffset 1 width 15.00: "3" 354 chunk 1 (middle anchor) text run 1 at (42.50,10.00) startOffset 0 endOffset 1 width 15.00: "4" 355 RenderSVGContainer {g} at (403,375) size 77x57 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,210.00)}] 356 356 RenderSVGContainer {g} at (410,375) size 14x32 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,-10.00)}] 357 357 RenderSVGContainer {g} at (410,375) size 14x32 … … 362 362 RenderSVGPath {line} at (440,400) size 4x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00] 363 363 RenderSVGPath {rect} at (435,418) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00] 364 RenderSVGText {text} at (-8,-20) size 4 7x28 contains 1 chunk(s)365 RenderSVGInlineText {#text} at (0,0) size 4 7x28366 chunk 1 (middle anchor) text run 1 at (-7. 65,-10.00) startOffset 0 endOffset 1 width 15.30: "1"367 chunk 1 (middle anchor) text run 1 at (-7. 65,5.00) startOffset 0 endOffset 3 width 45.90: "234"364 RenderSVGText {text} at (-8,-20) size 46x28 contains 1 chunk(s) 365 RenderSVGInlineText {#text} at (0,0) size 46x28 366 chunk 1 (middle anchor) text run 1 at (-7.50,-10.00) startOffset 0 endOffset 1 width 15.00: "1" 367 chunk 1 (middle anchor) text run 1 at (-7.50,5.00) startOffset 0 endOffset 3 width 45.00: "234" 368 368 RenderSVGContainer {g} at (420,425) size 77x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,240.00)}] 369 369 RenderSVGContainer {g} at (426,425) size 14x32 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,-10.00)}] … … 385 385 RenderSVGText {text} at (2,-20) size 46x18 contains 1 chunk(s) 386 386 RenderSVGInlineText {#text} at (0,0) size 46x18 387 chunk 1 (middle anchor) text run 1 at (2. 35,-10.00) startOffset 0 endOffset 1 width 15.30: "1"388 chunk 1 (middle anchor) text run 1 at (12. 35,-5.00) startOffset 0 endOffset 1 width 15.30: "2"389 chunk 1 (middle anchor) text run 1 at (22. 35,-5.00) startOffset 0 endOffset 1 width 15.30: "3"390 chunk 1 (middle anchor) text run 1 at (32. 35,-5.00) startOffset 0 endOffset 1 width 15.30: "4"387 chunk 1 (middle anchor) text run 1 at (2.50,-10.00) startOffset 0 endOffset 1 width 15.00: "1" 388 chunk 1 (middle anchor) text run 1 at (12.50,-5.00) startOffset 0 endOffset 1 width 15.00: "2" 389 chunk 1 (middle anchor) text run 1 at (22.50,-5.00) startOffset 0 endOffset 1 width 15.00: "3" 390 chunk 1 (middle anchor) text run 1 at (32.50,-5.00) startOffset 0 endOffset 1 width 15.00: "4" 391 391 RenderSVGContainer {g} at (420,475) size 135x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,270.00)}] 392 392 RenderSVGContainer {g} at (426,475) size 14x32 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,-10.00)}] … … 400 400 RenderSVGText {text} at (2,-20) size 81x18 contains 1 chunk(s) 401 401 RenderSVGInlineText {#text} at (0,0) size 81x18 402 chunk 1 (middle anchor) text run 1 at (2. 35,-10.00) startOffset 0 endOffset 1 width 15.30: "1"403 chunk 1 (middle anchor) text run 1 at (37. 05,-5.00) startOffset 0 endOffset 3 width 45.90: "234"404 RenderSVGContainer {g} at (48 0,13) size 210x537 [transform={m=((1.00,0.00)(0.00,1.00)) t=(350.00,40.00)}]402 chunk 1 (middle anchor) text run 1 at (2.50,-10.00) startOffset 0 endOffset 1 width 15.00: "1" 403 chunk 1 (middle anchor) text run 1 at (37.50,-5.00) startOffset 0 endOffset 3 width 45.00: "234" 404 RenderSVGContainer {g} at (483,13) size 207x537 [transform={m=((1.00,0.00)(0.00,1.00)) t=(350.00,40.00)}] 405 405 RenderSVGText {text} at (-38,-32) size 76x20 contains 1 chunk(s) 406 406 RenderSVGInlineText {#text} at (0,0) size 76x20 … … 410 410 chunk 1 (middle anchor) text run 1 at (-12.00,-3.00) startOffset 0 endOffset 3 width 24.00: "end" 411 411 RenderSVGPath {line} at (581,83) size 4x467 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#000000]}] [x1=0.00] [y1=10.00] [x2=0.00] [y2=290.00] 412 RenderSVGContainer {use} at (48 0,91) size 210x424413 RenderSVGContainer {g} at (48 0,91) size 210x424414 RenderSVGContainer {g} at (48 0,91) size 210x424412 RenderSVGContainer {use} at (483,91) size 207x424 413 RenderSVGContainer {g} at (483,91) size 207x424 414 RenderSVGContainer {g} at (483,91) size 207x424 415 415 RenderSVGContainer {g} at (576,91) size 14x33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,30.00)}] 416 416 RenderSVGContainer {g} at (576,91) size 14x33 417 417 RenderSVGPath {line} at (581,91) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00] 418 418 RenderSVGPath {rect} at (576,110) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00] 419 RenderSVGText {text} at (-6 2,20) size 62x13 contains 1 chunk(s)420 RenderSVGInlineText {#text} at (0,0) size 6 2x13421 chunk 1 (end anchor) text run 1 at (-6 1.20,30.00) startOffset 0 endOffset 4 width 61.20: "1234"419 RenderSVGText {text} at (-60,20) size 60x13 contains 1 chunk(s) 420 RenderSVGInlineText {#text} at (0,0) size 60x13 421 chunk 1 (end anchor) text run 1 at (-60.00,30.00) startOffset 0 endOffset 4 width 60.00: "1234" 422 422 RenderSVGContainer {g} at (593,141) size 14x33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,60.00)}] 423 423 RenderSVGContainer {g} at (593,141) size 14x33 … … 436 436 RenderSVGPath {line} at (648,141) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00] 437 437 RenderSVGPath {rect} at (643,160) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00] 438 RenderSVGText {text} at (- 6,50) size 46x13 contains 1 chunk(s)439 RenderSVGInlineText {#text} at (0,0) size 4 6x13440 chunk 1 (end anchor) text run 1 at (-5. 30,60.00) startOffset 0 endOffset 1 width 15.30: "1"441 chunk 1 (end anchor) text run 1 at ( 4.70,60.00) startOffset 0 endOffset 1 width 15.30: "2"442 chunk 1 (end anchor) text run 1 at (1 4.70,60.00) startOffset 0 endOffset 1 width 15.30: "3"443 chunk 1 (end anchor) text run 1 at (2 4.70,60.00) startOffset 0 endOffset 1 width 15.30: "4"438 RenderSVGText {text} at (-5,50) size 45x13 contains 1 chunk(s) 439 RenderSVGInlineText {#text} at (0,0) size 45x13 440 chunk 1 (end anchor) text run 1 at (-5.00,60.00) startOffset 0 endOffset 1 width 15.00: "1" 441 chunk 1 (end anchor) text run 1 at (5.00,60.00) startOffset 0 endOffset 1 width 15.00: "2" 442 chunk 1 (end anchor) text run 1 at (15.00,60.00) startOffset 0 endOffset 1 width 15.00: "3" 443 chunk 1 (end anchor) text run 1 at (25.00,60.00) startOffset 0 endOffset 1 width 15.00: "4" 444 444 RenderSVGContainer {g} at (593,191) size 14x33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,90.00)}] 445 445 RenderSVGContainer {g} at (593,191) size 14x33 … … 450 450 RenderSVGPath {line} at (681,191) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00] 451 451 RenderSVGPath {rect} at (676,210) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00] 452 RenderSVGText {text} at (- 6,80) size 66x13 contains 1 chunk(s)453 RenderSVGInlineText {#text} at (0,0) size 6 6x13454 chunk 1 (end anchor) text run 1 at (-5. 30,90.00) startOffset 0 endOffset 1 width 15.30: "1"455 chunk 1 (end anchor) text run 1 at (1 4.10,90.00) startOffset 0 endOffset 3 width 45.90: "234"456 RenderSVGContainer {g} at (55 6,225) size 109x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,120.00)}]452 RenderSVGText {text} at (-5,80) size 65x13 contains 1 chunk(s) 453 RenderSVGInlineText {#text} at (0,0) size 65x13 454 chunk 1 (end anchor) text run 1 at (-5.00,90.00) startOffset 0 endOffset 1 width 15.00: "1" 455 chunk 1 (end anchor) text run 1 at (15.00,90.00) startOffset 0 endOffset 3 width 45.00: "234" 456 RenderSVGContainer {g} at (558,225) size 107x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,120.00)}] 457 457 RenderSVGContainer {g} at (576,225) size 14x32 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,-10.00)}] 458 458 RenderSVGContainer {g} at (576,225) size 14x32 … … 471 471 RenderSVGPath {line} at (656,258) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00] 472 472 RenderSVGPath {rect} at (651,276) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00] 473 RenderSVGText {text} at (-1 6,-20) size 62x33 contains 1 chunk(s)474 RenderSVGInlineText {#text} at (0,0) size 6 2x33475 chunk 1 (end anchor) text run 1 at (-15. 30,-10.00) startOffset 0 endOffset 1 width 15.30: "1"476 chunk 1 (end anchor) text run 1 at (0.00,-5.00) startOffset 0 endOffset 1 width 15. 30: "2"477 chunk 1 (end anchor) text run 1 at (15. 30,5.00) startOffset 0 endOffset 1 width 15.30: "3"478 chunk 1 (end anchor) text run 1 at (30. 60,10.00) startOffset 0 endOffset 1 width 15.30: "4"479 RenderSVGContainer {g} at (57 3,275) size 84x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,150.00)}]473 RenderSVGText {text} at (-15,-20) size 60x33 contains 1 chunk(s) 474 RenderSVGInlineText {#text} at (0,0) size 60x33 475 chunk 1 (end anchor) text run 1 at (-15.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1" 476 chunk 1 (end anchor) text run 1 at (0.00,-5.00) startOffset 0 endOffset 1 width 15.00: "2" 477 chunk 1 (end anchor) text run 1 at (15.00,5.00) startOffset 0 endOffset 1 width 15.00: "3" 478 chunk 1 (end anchor) text run 1 at (30.00,10.00) startOffset 0 endOffset 1 width 15.00: "4" 479 RenderSVGContainer {g} at (575,275) size 82x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,150.00)}] 480 480 RenderSVGContainer {g} at (593,275) size 14x32 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,-10.00)}] 481 481 RenderSVGContainer {g} at (593,275) size 14x32 … … 494 494 RenderSVGPath {line} at (648,308) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00] 495 495 RenderSVGPath {rect} at (643,326) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00] 496 RenderSVGText {text} at (- 6,-20) size 46x33 contains 1 chunk(s)497 RenderSVGInlineText {#text} at (0,0) size 4 6x33498 chunk 1 (end anchor) text run 1 at (-5. 30,-10.00) startOffset 0 endOffset 1 width 15.30: "1"499 chunk 1 (end anchor) text run 1 at ( 4.70,-5.00) startOffset 0 endOffset 1 width 15.30: "2"500 chunk 1 (end anchor) text run 1 at (1 4.70,5.00) startOffset 0 endOffset 1 width 15.30: "3"501 chunk 1 (end anchor) text run 1 at (2 4.70,10.00) startOffset 0 endOffset 1 width 15.30: "4"502 RenderSVGContainer {g} at (57 3,325) size 101x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,180.00)}]496 RenderSVGText {text} at (-5,-20) size 45x33 contains 1 chunk(s) 497 RenderSVGInlineText {#text} at (0,0) size 45x33 498 chunk 1 (end anchor) text run 1 at (-5.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1" 499 chunk 1 (end anchor) text run 1 at (5.00,-5.00) startOffset 0 endOffset 1 width 15.00: "2" 500 chunk 1 (end anchor) text run 1 at (15.00,5.00) startOffset 0 endOffset 1 width 15.00: "3" 501 chunk 1 (end anchor) text run 1 at (25.00,10.00) startOffset 0 endOffset 1 width 15.00: "4" 502 RenderSVGContainer {g} at (575,325) size 99x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,180.00)}] 503 503 RenderSVGContainer {g} at (593,325) size 14x32 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,-10.00)}] 504 504 RenderSVGContainer {g} at (593,325) size 14x32 … … 517 517 RenderSVGPath {line} at (665,358) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00] 518 518 RenderSVGPath {rect} at (660,376) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00] 519 RenderSVGText {text} at (- 6,-20) size 57x33 contains 1 chunk(s)520 RenderSVGInlineText {#text} at (0,0) size 5 7x33521 chunk 1 (end anchor) text run 1 at (-5. 30,-10.00) startOffset 0 endOffset 1 width 15.30: "1"522 chunk 1 (end anchor) text run 1 at ( 4.70,-5.00) startOffset 0 endOffset 1 width 15.30: "2"523 chunk 1 (end anchor) text run 1 at (20.00,5.00) startOffset 0 endOffset 1 width 15. 30: "3"524 chunk 1 (end anchor) text run 1 at (35. 30,10.00) startOffset 0 endOffset 1 width 15.30: "4"525 RenderSVGContainer {g} at (53 1,375) size 84x57 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,210.00)}]519 RenderSVGText {text} at (-5,-20) size 55x33 contains 1 chunk(s) 520 RenderSVGInlineText {#text} at (0,0) size 55x33 521 chunk 1 (end anchor) text run 1 at (-5.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1" 522 chunk 1 (end anchor) text run 1 at (5.00,-5.00) startOffset 0 endOffset 1 width 15.00: "2" 523 chunk 1 (end anchor) text run 1 at (20.00,5.00) startOffset 0 endOffset 1 width 15.00: "3" 524 chunk 1 (end anchor) text run 1 at (35.00,10.00) startOffset 0 endOffset 1 width 15.00: "4" 525 RenderSVGContainer {g} at (533,375) size 82x57 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,210.00)}] 526 526 RenderSVGContainer {g} at (576,375) size 14x32 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,-10.00)}] 527 527 RenderSVGContainer {g} at (576,375) size 14x32 … … 532 532 RenderSVGPath {line} at (606,400) size 4x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00] 533 533 RenderSVGPath {rect} at (601,418) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00] 534 RenderSVGText {text} at (-3 1,-20) size 47x28 contains 1 chunk(s)535 RenderSVGInlineText {#text} at (15,0) size 4 7x28536 chunk 1 (end anchor) text run 1 at (-15. 30,-10.00) startOffset 0 endOffset 1 width 15.30: "1"537 chunk 1 (end anchor) text run 1 at (-30. 60,5.00) startOffset 0 endOffset 3 width 45.90: "234"538 RenderSVGContainer {g} at (57 3,425) size 84x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,240.00)}]534 RenderSVGText {text} at (-30,-20) size 45x28 contains 1 chunk(s) 535 RenderSVGInlineText {#text} at (15,0) size 45x28 536 chunk 1 (end anchor) text run 1 at (-15.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1" 537 chunk 1 (end anchor) text run 1 at (-30.00,5.00) startOffset 0 endOffset 3 width 45.00: "234" 538 RenderSVGContainer {g} at (575,425) size 82x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,240.00)}] 539 539 RenderSVGContainer {g} at (593,425) size 14x32 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,-10.00)}] 540 540 RenderSVGContainer {g} at (593,425) size 14x32 … … 553 553 RenderSVGPath {line} at (648,433) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00] 554 554 RenderSVGPath {rect} at (643,451) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00] 555 RenderSVGText {text} at (- 6,-20) size 46x18 contains 1 chunk(s)556 RenderSVGInlineText {#text} at (0,0) size 4 6x18557 chunk 1 (end anchor) text run 1 at (-5. 30,-10.00) startOffset 0 endOffset 1 width 15.30: "1"558 chunk 1 (end anchor) text run 1 at ( 4.70,-5.00) startOffset 0 endOffset 1 width 15.30: "2"559 chunk 1 (end anchor) text run 1 at (1 4.70,-5.00) startOffset 0 endOffset 1 width 15.30: "3"560 chunk 1 (end anchor) text run 1 at (2 4.70,-5.00) startOffset 0 endOffset 1 width 15.30: "4"561 RenderSVGContainer {g} at (57 3,475) size 117x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,270.00)}]555 RenderSVGText {text} at (-5,-20) size 45x18 contains 1 chunk(s) 556 RenderSVGInlineText {#text} at (0,0) size 45x18 557 chunk 1 (end anchor) text run 1 at (-5.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1" 558 chunk 1 (end anchor) text run 1 at (5.00,-5.00) startOffset 0 endOffset 1 width 15.00: "2" 559 chunk 1 (end anchor) text run 1 at (15.00,-5.00) startOffset 0 endOffset 1 width 15.00: "3" 560 chunk 1 (end anchor) text run 1 at (25.00,-5.00) startOffset 0 endOffset 1 width 15.00: "4" 561 RenderSVGContainer {g} at (575,475) size 115x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,270.00)}] 562 562 RenderSVGContainer {g} at (593,475) size 14x32 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,-10.00)}] 563 563 RenderSVGContainer {g} at (593,475) size 14x32 … … 568 568 RenderSVGPath {line} at (681,483) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00] 569 569 RenderSVGPath {rect} at (676,501) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00] 570 RenderSVGText {text} at (- 6,-20) size 66x18 contains 1 chunk(s)571 RenderSVGInlineText {#text} at (0,0) size 6 6x18572 chunk 1 (end anchor) text run 1 at (-5. 30,-10.00) startOffset 0 endOffset 1 width 15.30: "1"573 chunk 1 (end anchor) text run 1 at (1 4.10,-5.00) startOffset 0 endOffset 3 width 45.90: "234"570 RenderSVGText {text} at (-5,-20) size 65x18 contains 1 chunk(s) 571 RenderSVGInlineText {#text} at (0,0) size 65x18 572 chunk 1 (end anchor) text run 1 at (-5.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1" 573 chunk 1 (end anchor) text run 1 at (15.00,-5.00) startOffset 0 endOffset 3 width 45.00: "234" 574 574 RenderSVGText {text} at (10,313) size 269x48 contains 1 chunk(s) 575 575 RenderSVGInlineText {#text} at (0,0) size 269x48 -
trunk/LayoutTests/platform/mac/svg/text/text-text-06-t-expected.txt
r89233 r89311 51 51 RenderSVGPath {line} at (415,91) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00] 52 52 RenderSVGPath {rect} at (410,110) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00] 53 RenderSVGText {text} at (10,-10) size 13 6x13 contains 1 chunk(s)54 RenderSVGInlineText {#text} at (0,0) size 13 6x1355 chunk 1 text run 1 at (10.00,0.00) startOffset 0 endOffset 2 width 15. 30: "fi"56 chunk 1 text run 1 at (40.00,0.00) startOffset 0 endOffset 1 width 15. 30: "1"57 chunk 1 text run 1 at (70.00,0.00) startOffset 0 endOffset 1 width 15. 30: "2"58 chunk 1 text run 1 at (100.00,0.00) startOffset 0 endOffset 1 width 15. 30: "3"59 chunk 1 text run 1 at (130.00,0.00) startOffset 0 endOffset 1 width 15. 30: "4"60 RenderSVGContainer {g} at (193,141) size 13 6x133 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,80.00)}]53 RenderSVGText {text} at (10,-10) size 135x13 contains 1 chunk(s) 54 RenderSVGInlineText {#text} at (0,0) size 135x13 55 chunk 1 text run 1 at (10.00,0.00) startOffset 0 endOffset 2 width 15.00: "fi" 56 chunk 1 text run 1 at (40.00,0.00) startOffset 0 endOffset 1 width 15.00: "1" 57 chunk 1 text run 1 at (70.00,0.00) startOffset 0 endOffset 1 width 15.00: "2" 58 chunk 1 text run 1 at (100.00,0.00) startOffset 0 endOffset 1 width 15.00: "3" 59 chunk 1 text run 1 at (130.00,0.00) startOffset 0 endOffset 1 width 15.00: "4" 60 RenderSVGContainer {g} at (193,141) size 132x133 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,80.00)}] 61 61 RenderSVGContainer {use} at (193,141) size 14x33 62 62 RenderSVGContainer {g} at (193,141) size 14x33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,-10.00)}] … … 89 89 RenderSVGPath {line} at (298,208) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00] 90 90 RenderSVGPath {rect} at (293,226) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00] 91 RenderSVGText {text} at (0,-20) size 7 7x53 contains 1 chunk(s)92 RenderSVGInlineText {#text} at (0,0) size 7 7x5393 chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 2 width 15. 30: "fi"94 chunk 1 text run 1 at (15. 30,0.00) startOffset 0 endOffset 1 width 15.30: "1"95 chunk 1 text run 1 at (30. 60,10.00) startOffset 0 endOffset 1 width 15.30: "2"96 chunk 1 text run 1 at (45. 90,20.00) startOffset 0 endOffset 1 width 15.30: "3"97 chunk 1 text run 1 at (6 1.20,30.00) startOffset 0 endOffset 1 width 15.30: "4"91 RenderSVGText {text} at (0,-20) size 75x53 contains 1 chunk(s) 92 RenderSVGInlineText {#text} at (0,0) size 75x53 93 chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 2 width 15.00: "fi" 94 chunk 1 text run 1 at (15.00,0.00) startOffset 0 endOffset 1 width 15.00: "1" 95 chunk 1 text run 1 at (30.00,10.00) startOffset 0 endOffset 1 width 15.00: "2" 96 chunk 1 text run 1 at (45.00,20.00) startOffset 0 endOffset 1 width 15.00: "3" 97 chunk 1 text run 1 at (60.00,30.00) startOffset 0 endOffset 1 width 15.00: "4" 98 98 RenderSVGContainer {g} at (210,308) size 297x132 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,180.00)}] 99 99 RenderSVGContainer {use} at (210,308) size 14x32 … … 127 127 RenderSVGPath {line} at (415,375) size 4x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00] 128 128 RenderSVGPath {rect} at (410,393) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00] 129 RenderSVGText {text} at (10,-20) size 13 6x53 contains 1 chunk(s)130 RenderSVGInlineText {#text} at (0,0) size 13 6x53131 chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 2 width 15. 30: "fi"132 chunk 1 text run 1 at (40.00,0.00) startOffset 0 endOffset 1 width 15. 30: "1"133 chunk 1 text run 1 at (70.00,10.00) startOffset 0 endOffset 1 width 15. 30: "2"134 chunk 1 text run 1 at (100.00,20.00) startOffset 0 endOffset 1 width 15. 30: "3"135 chunk 1 text run 1 at (130.00,30.00) startOffset 0 endOffset 1 width 15. 30: "4"129 RenderSVGText {text} at (10,-20) size 135x53 contains 1 chunk(s) 130 RenderSVGInlineText {#text} at (0,0) size 135x53 131 chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 2 width 15.00: "fi" 132 chunk 1 text run 1 at (40.00,0.00) startOffset 0 endOffset 1 width 15.00: "1" 133 chunk 1 text run 1 at (70.00,10.00) startOffset 0 endOffset 1 width 15.00: "2" 134 chunk 1 text run 1 at (100.00,20.00) startOffset 0 endOffset 1 width 15.00: "3" 135 chunk 1 text run 1 at (130.00,30.00) startOffset 0 endOffset 1 width 15.00: "4" 136 136 RenderSVGText {text} at (10,303) size 269x48 contains 1 chunk(s) 137 137 RenderSVGInlineText {#text} at (0,0) size 269x48 -
trunk/LayoutTests/platform/mac/svg/transforms/text-with-mask-with-svg-transform-expected.txt
r89233 r89311 39 39 RenderSVGPath {rect} at (11,288) size 158x104 [fill={[type=SOLID] [color=#FFFFFF]}] [x=60.00] [y=250.00] [width=200.00] [height=25.00] 40 40 RenderSVGPath {rect} at (0,306) size 157x103 [fill={[type=SOLID] [color=#FFFFFF] [opacity=0.70]}] [x=60.00] [y=275.00] [width=200.00] [height=25.00] 41 RenderSVGText {text} at (60,202) size 12 7x112 contains 1 chunk(s)41 RenderSVGText {text} at (60,202) size 126x112 contains 1 chunk(s) 42 42 [masker="mask3"] RenderSVGResourceMasker {mask} at (60,200) size 200x100 43 RenderSVGInlineText {#text} at (0,0) size 12 7x11243 RenderSVGInlineText {#text} at (0,0) size 126x112 44 44 [masker="mask3"] RenderSVGResourceMasker {mask} at (60,200) size 200x100 45 chunk 1 text run 1 at (60.00,280.00) startOffset 0 endOffset 2 width 8 1.25: "SV"46 chunk 1 text run 2 at (145. 65,280.00) startOffset 2 endOffset 3 width 40.52: "G"45 chunk 1 text run 1 at (60.00,280.00) startOffset 0 endOffset 2 width 80.96: "SV" 46 chunk 1 text run 2 at (145.36,280.00) startOffset 2 endOffset 3 width 40.37: "G" 47 47 RenderSVGText {text} at (200,214) size 204x14 contains 1 chunk(s) 48 48 RenderSVGInlineText {#text} at (0,0) size 204x14 -
trunk/LayoutTests/platform/mac/svg/wicd/test-rightsizing-b-expected.txt
r89233 r89311 23 23 RenderSVGText {text} at (26,59) size 148x83 contains 1 chunk(s) 24 24 RenderSVGInlineText {#text} at (0,0) size 148x83 25 chunk 1 (middle anchor) text run 1 at (26. 65,125.00) startOffset 0 endOffset 3 width 146.70: "SVG"25 chunk 1 (middle anchor) text run 1 at (26.72,125.00) startOffset 0 endOffset 3 width 146.56: "SVG" 26 26 RenderText {#text} at (294,280) size 4x17 27 27 text run at (294,280) width 4: " " … … 35 35 RenderSVGPath {circle} at (0,0) size 147x147 [fill={[type=SOLID] [color=#0000FF]}] [cx=100.00] [cy=100.00] [r=100.00] 36 36 RenderSVGContainer {g} at (19,44) size 109x61 37 RenderSVGText {text} at (2 7,60) size 146x82 contains 1 chunk(s)38 RenderSVGInlineText {#text} at (0,0) size 14 6x8239 chunk 1 (middle anchor) text run 1 at (2 7.36,125.00) startOffset 0 endOffset 3 width 145.28: "SVG"37 RenderSVGText {text} at (26,60) size 148x82 contains 1 chunk(s) 38 RenderSVGInlineText {#text} at (0,0) size 148x82 39 chunk 1 (middle anchor) text run 1 at (26.72,125.00) startOffset 0 endOffset 3 width 146.56: "SVG" 40 40 RenderText {#text} at (445,280) size 4x17 41 41 text run at (445,280) width 4: " " … … 49 49 RenderSVGPath {circle} at (0,0) size 73x73 [fill={[type=SOLID] [color=#0000FF]}] [cx=100.00] [cy=100.00] [r=100.00] 50 50 RenderSVGContainer {g} at (9,21) size 55x31 51 RenderSVGText {text} at (2 5,58) size 150x84 contains 1 chunk(s)52 RenderSVGInlineText {#text} at (0,0) size 1 50x8453 chunk 1 (middle anchor) text run 1 at (2 5.43,125.00) startOffset 0 endOffset 3 width 149.14: "SVG"51 RenderSVGText {text} at (26,58) size 148x84 contains 1 chunk(s) 52 RenderSVGInlineText {#text} at (0,0) size 148x84 53 chunk 1 (middle anchor) text run 1 at (26.72,125.00) startOffset 0 endOffset 3 width 146.56: "SVG" 54 54 RenderText {#text} at (522,280) size 4x17 55 55 text run at (522,280) width 4: " " … … 63 63 RenderSVGPath {circle} at (0,0) size 36x36 [fill={[type=SOLID] [color=#0000FF]}] [cx=100.00] [cy=100.00] [r=100.00] 64 64 RenderSVGContainer {g} at (4,10) size 28x16 65 RenderSVGText {text} at (2 4,57) size 152x86 contains 1 chunk(s)66 RenderSVGInlineText {#text} at (0,0) size 1 52x8667 chunk 1 (middle anchor) text run 1 at (2 4.39,125.00) startOffset 0 endOffset 3 width 151.22: "SVG"65 RenderSVGText {text} at (26,57) size 148x86 contains 1 chunk(s) 66 RenderSVGInlineText {#text} at (0,0) size 148x86 67 chunk 1 (middle anchor) text run 1 at (26.72,125.00) startOffset 0 endOffset 3 width 146.56: "SVG" 68 68 RenderText {#text} at (0,0) size 0x0 69 69 RenderBlock {p} at (0,366) size 678x64 -
trunk/LayoutTests/svg/custom/resources/ABCFont.svg
r89233 r89311 30 30 <glyph glyph-name="c" unicode="c" horiz-adv-x="1147" 31 31 d="M1053 319q-39 -170 -150 -259t-287 -89q-232 0 -373 153.5t-141 407.5q0 255 141 407.5t373 152.5q101 0 201 -23.5t201 -71.5v-272h-107q-21 140 -91.5 204t-201.5 64q-149 0 -225 -115.5t-76 -345.5t75.5 -346t225.5 -116q119 0 190 62t97 187h148z" /> 32 <glyph glyph-name="ellipsis" unicode="…" horiz-adv-x="1638" d="M133 0v268h279v-268h-279zM680 0v268h278v-268h-278zM1225 0v268h278v-268h-278z" />33 32 </font> 34 33 </defs> -
trunk/Source/JavaScriptCore/ChangeLog
r89285 r89311 1 2011-06-20 Kenneth Russell <kbr@google.com> 2 3 Unreviewed. 4 5 Rolled out r89233 and r89235 because of crashes in http/tests/misc/acid3.html on Snow Leopard and other platforms 6 https://bugs.webkit.org/show_bug.cgi?id=63022 7 8 * wtf/Platform.h: 9 1 10 2011-06-18 Anders Carlsson <andersca@apple.com> 2 11 -
trunk/Source/JavaScriptCore/wtf/Platform.h
r89233 r89311 1 1 /* 2 * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.2 * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. 3 3 * Copyright (C) 2007-2009 Torch Mobile, Inc. 4 4 * Copyright (C) Research In Motion Limited 2010. All rights reserved. -
trunk/Source/WebCore/ChangeLog
r89305 r89311 1 2011-06-20 Kenneth Russell <kbr@google.com> 2 3 Unreviewed. 4 5 Rolled out r89233 and r89235 because of crashes in http/tests/misc/acid3.html on Snow Leopard and other platforms 6 https://bugs.webkit.org/show_bug.cgi?id=63022 7 8 * features.pri: 9 * page/DOMWindow.idl: 10 * platform/graphics/Font.cpp: 11 (WebCore::Font::drawText): 12 (WebCore::Font::drawEmphasisMarks): 13 (WebCore::Font::width): 14 (WebCore::Font::selectionRectForText): 15 (WebCore::Font::offsetForPosition): 16 (WebCore::Font::codePath): 17 * platform/graphics/Font.h: 18 * platform/graphics/FontFallbackList.h: 19 * platform/graphics/FontFastPath.cpp: 20 (WebCore::Font::glyphDataForCharacter): 21 (WebCore::Font::getEmphasisMarkGlyphData): 22 (WebCore::Font::drawGlyphBuffer): 23 * platform/graphics/FontMetrics.h: 24 * platform/graphics/GlyphPageTreeNode.cpp: 25 (WebCore::fill): 26 * platform/graphics/SVGGlyph.h: 27 (WebCore::SVGGlyph::SVGGlyph): 28 (WebCore::SVGGlyph::operator==): 29 * platform/graphics/SimpleFontData.cpp: 30 (WebCore::SimpleFontData::SimpleFontData): 31 * platform/graphics/SimpleFontData.h: 32 (WebCore::SimpleFontData::widthForGlyph): 33 * platform/graphics/TextRun.h: 34 * platform/graphics/WidthIterator.cpp: 35 (WebCore::WidthIterator::advance): 36 * platform/graphics/WidthIterator.h: 37 * platform/graphics/chromium/SimpleFontDataChromiumWin.cpp: 38 (WebCore::scaleEmToUnits): 39 * platform/graphics/mac/SimpleFontDataMac.mm: 40 (WebCore::scaleEmToUnits): 41 * platform/graphics/win/SimpleFontDataCGWin.cpp: 42 (WebCore::scaleEmToUnits): 43 * rendering/svg/SVGTextMetrics.cpp: 44 (WebCore::SVGTextMetrics::SVGTextMetrics): 45 (WebCore::constructTextRun): 46 (WebCore::SVGTextMetrics::measureCharacterRange): 47 * rendering/svg/SVGTextMetrics.h: 48 * rendering/svg/SVGTextRunRenderingContext.cpp: 49 (WebCore::convertEmUnitToPixel): 50 (WebCore::isVerticalWritingMode): 51 (WebCore::firstParentRendererForNonTextNode): 52 (WebCore::referencingRenderObjectFromRun): 53 (WebCore::SVGTextRunWalker::SVGTextRunWalker): 54 (WebCore::SVGTextRunWalker::walk): 55 (WebCore::floatWidthUsingSVGFontCallback): 56 (WebCore::floatWidthMissingGlyphCallback): 57 (WebCore::floatWidthOfSubStringUsingSVGFont): 58 (WebCore::SVGTextRunRenderingContext::floatWidthUsingSVGFont): 59 (WebCore::drawTextUsingSVGFontCallback): 60 (WebCore::drawTextMissingGlyphCallback): 61 (WebCore::SVGTextRunRenderingContext::drawTextUsingSVGFont): 62 (WebCore::SVGTextRunRenderingContext::selectionRectForTextUsingSVGFont): 63 (WebCore::SVGTextRunRenderingContext::offsetForPositionForTextUsingSVGFont): 64 * rendering/svg/SVGTextRunRenderingContext.h: 65 * svg/SVGAltGlyphElement.cpp: 66 (WebCore::SVGAltGlyphElement::glyphElement): 67 * svg/SVGAltGlyphElement.h: 68 * svg/SVGFontData.cpp: 69 (WebCore::SVGFontData::initializeFontData): 70 * svg/SVGFontData.h: 71 * svg/SVGFontElement.cpp: 72 (WebCore::SVGFontElement::registerLigaturesInGlyphCache): 73 (WebCore::SVGFontElement::ensureGlyphCache): 74 * svg/SVGGlyphMap.h: 75 (WebCore::SVGGlyphMap::addGlyphByUnicodeString): 76 * svg/svgtags.in: 77 1 78 2011-06-20 Scott Byer <scottbyer@chromium.org> 2 79 -
trunk/Source/WebCore/features.pri
r89233 r89311 36 36 DEFINES += WTF_USE_QT4_UNICODE=1 37 37 DEFINES -= WTF_USE_ICU_UNICODE 38 }39 40 isEmpty(HAVE_QRAWFONT) {41 # We have to disable SVG Fonts, which rely on the fast path.42 DEFINES -= ENABLE_SVG_FONTS=143 DEFINES += ENABLE_SVG_FONTS=044 38 } 45 39 -
trunk/Source/WebCore/page/DOMWindow.idl
r89233 r89311 21 21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 24 */ 25 25 -
trunk/Source/WebCore/platform/graphics/Font.cpp
r89233 r89311 136 136 to = (to == -1 ? run.length() : to); 137 137 138 #if ENABLE(SVG_FONTS) 139 if (TextRun::RenderingContext* renderingContext = run.renderingContext()) { 140 renderingContext->drawTextUsingSVGFont(*this, context, run, point, from, to); 141 return; 142 } 143 #endif 144 138 145 CodePath codePathToUse = codePath(run); 139 146 … … 156 163 if (to < 0) 157 164 to = run.length(); 165 166 #if ENABLE(SVG_FONTS) 167 // FIXME: Implement for SVG fonts. 168 if (primaryFont()->isSVGFont()) 169 return; 170 #endif 158 171 159 172 if (codePath(run) != Complex) … … 165 178 float Font::width(const TextRun& run, HashSet<const SimpleFontData*>* fallbackFonts, GlyphOverflow* glyphOverflow) const 166 179 { 180 #if ENABLE(SVG_FONTS) 181 if (TextRun::RenderingContext* renderingContext = run.renderingContext()) 182 return renderingContext->floatWidthUsingSVGFont(*this, run); 183 #endif 184 167 185 CodePath codePathToUse = codePath(run); 168 186 if (codePathToUse != Complex) { … … 176 194 } 177 195 178 float Font::width(const TextRun& run, int & charsConsumed, String& glyphName) const196 float Font::width(const TextRun& run, int extraCharsAvailable, int& charsConsumed, String& glyphName) const 179 197 { 180 198 #if ENABLE(SVG_FONTS) 181 199 if (TextRun::RenderingContext* renderingContext = run.renderingContext()) 182 return renderingContext->floatWidthUsingSVGFont(*this, run, charsConsumed, glyphName); 200 return renderingContext->floatWidthUsingSVGFont(*this, run, extraCharsAvailable, charsConsumed, glyphName); 201 #else 202 UNUSED_PARAM(extraCharsAvailable); 183 203 #endif 184 204 … … 194 214 FloatRect Font::selectionRectForText(const TextRun& run, const FloatPoint& point, int h, int from, int to) const 195 215 { 216 #if ENABLE(SVG_FONTS) 217 if (TextRun::RenderingContext* renderingContext = run.renderingContext()) 218 return renderingContext->selectionRectForTextUsingSVGFont(*this, run, point, h, from, to); 219 #endif 220 196 221 to = (to == -1 ? run.length() : to); 197 222 … … 204 229 int Font::offsetForPosition(const TextRun& run, float x, bool includePartialGlyphs) const 205 230 { 231 #if ENABLE(SVG_FONTS) 232 if (TextRun::RenderingContext* renderingContext = run.renderingContext()) 233 return renderingContext->offsetForPositionForTextUsingSVGFont(*this, run, x, includePartialGlyphs); 234 #endif 235 206 236 if (codePath(run) != Complex) 207 237 return offsetForPositionForSimpleText(run, x, includePartialGlyphs); … … 248 278 if (s_codePath != Auto) 249 279 return s_codePath; 250 251 #if ENABLE(SVG_FONTS)252 if (run.renderingContext())253 return Simple;254 #endif255 280 256 281 #if PLATFORM(QT) && !HAVE(QRAWFONT) -
trunk/Source/WebCore/platform/graphics/Font.h
r89233 r89311 98 98 99 99 float width(const TextRun&, HashSet<const SimpleFontData*>* fallbackFonts = 0, GlyphOverflow* = 0) const; 100 float width(const TextRun&, int & charsConsumed, String& glyphName) const;100 float width(const TextRun&, int extraCharsAvailable, int& charsConsumed, String& glyphName) const; 101 101 102 102 int offsetForPosition(const TextRun&, float position, bool includePartialGlyphs) const; … … 140 140 const FontData* fontDataAt(unsigned) const; 141 141 GlyphData glyphDataForCharacter(UChar32, bool mirror, FontDataVariant = AutoVariant) const; 142 std::pair<GlyphData, GlyphPage*> glyphDataAndPageForCharacter(UChar32, bool mirror, FontDataVariant = AutoVariant) const;143 142 bool primaryFontHasGlyphForCharacter(UChar32) const; 144 143 … … 187 186 188 187 friend struct WidthIterator; 189 friend class SVGTextRunRenderingContext;190 188 191 189 public: … … 215 213 216 214 bool needsTranscoding() const { return m_needsTranscoding; } 217 FontFallbackList* fontList() const { return m_fontList.get(); }218 215 219 216 private: -
trunk/Source/WebCore/platform/graphics/FontFallbackList.h
r89235 r89311 53 53 unsigned generation() const { return m_generation; } 54 54 55 typedef HashMap<int, GlyphPageTreeNode*> GlyphPages;56 GlyphPageTreeNode* glyphPageZero() const { return m_pageZero; }57 const GlyphPages& glyphPages() const { return m_pages; }58 59 55 private: 60 friend class SVGTextRunRenderingContext;61 void setGlyphPageZero(GlyphPageTreeNode* pageZero) { m_pageZero = pageZero; }62 void setGlyphPages(const GlyphPages& pages) { m_pages = pages; }63 64 56 FontFallbackList(); 65 57 … … 80 72 81 73 mutable Vector<pair<const FontData*, bool>, 1> m_fontList; 82 mutable GlyphPagesm_pages;74 mutable HashMap<int, GlyphPageTreeNode*> m_pages; 83 75 mutable GlyphPageTreeNode* m_pageZero; 84 76 mutable const SimpleFontData* m_cachedPrimarySimpleFontData; -
trunk/Source/WebCore/platform/graphics/FontFastPath.cpp
r89233 r89311 44 44 GlyphData Font::glyphDataForCharacter(UChar32 c, bool mirror, FontDataVariant variant) const 45 45 { 46 return glyphDataAndPageForCharacter(c, mirror, variant).first;47 }48 49 std::pair<GlyphData, GlyphPage*> Font::glyphDataAndPageForCharacter(UChar32 c, bool mirror, FontDataVariant variant) const50 {51 46 ASSERT(isMainThread()); 52 47 53 48 if (variant == AutoVariant) { 54 if (m_fontDescription.smallCaps() && !primaryFont()->isSVGFont()) {49 if (m_fontDescription.smallCaps()) { 55 50 UChar32 upperC = toUpper(c); 56 51 if (upperC != c) { … … 85 80 GlyphData data = page->glyphDataForCharacter(c); 86 81 if (data.fontData && (data.fontData->platformData().orientation() == Horizontal || data.fontData->isTextOrientationFallback())) 87 return make_pair(data, page);82 return data; 88 83 89 84 if (data.fontData) { … … 99 94 const SimpleFontData* verticalRightFontData = data.fontData->verticalRightOrientationFontData(); 100 95 GlyphPageTreeNode* verticalRightNode = GlyphPageTreeNode::getRootChild(verticalRightFontData, pageNumber); 101 GlyphPage* verticalRightPage = verticalRightNode->page();96 const GlyphPage* verticalRightPage = verticalRightNode->page(); 102 97 if (verticalRightPage) { 103 98 GlyphData verticalRightData = verticalRightPage->glyphDataForCharacter(c); … … 105 100 // into it. 106 101 if (data.glyph != verticalRightData.glyph) 107 return make_pair(data, page);102 return data; 108 103 // The glyphs are identical, meaning that we should just use the horizontal glyph. 109 104 if (verticalRightData.fontData) 110 return make_pair(verticalRightData, verticalRightPage);105 return verticalRightData; 111 106 } 112 107 } else if (m_fontDescription.textOrientation() == TextOrientationUpright) { 113 108 const SimpleFontData* uprightFontData = data.fontData->uprightOrientationFontData(); 114 109 GlyphPageTreeNode* uprightNode = GlyphPageTreeNode::getRootChild(uprightFontData, pageNumber); 115 GlyphPage* uprightPage = uprightNode->page();110 const GlyphPage* uprightPage = uprightNode->page(); 116 111 if (uprightPage) { 117 112 GlyphData uprightData = uprightPage->glyphDataForCharacter(c); 118 113 // If the glyphs are the same, then we know we can just use the horizontal glyph rotated vertically to be upright. 119 114 if (data.glyph == uprightData.glyph) 120 return make_pair(data, page);115 return data; 121 116 // The glyphs are distinct, meaning that the font has a vertical-right glyph baked into it. We can't use that 122 117 // glyph, so we fall back to the upright data and use the horizontal glyph. 123 118 if (uprightData.fontData) 124 return make_pair(uprightData, uprightPage);119 return uprightData; 125 120 } 126 121 } … … 129 124 ASSERT_NOT_REACHED(); 130 125 } 131 return make_pair(data, page);126 return data; 132 127 } 133 128 … … 154 149 const SimpleFontData* variantFontData = data.fontData->variantFontData(m_fontDescription, variant); 155 150 if (!variantFontData) 156 return make_pair(data, page);151 return data; 157 152 158 153 GlyphPageTreeNode* variantNode = GlyphPageTreeNode::getRootChild(variantFontData, pageNumber); 159 GlyphPage* variantPage = variantNode->page();154 const GlyphPage* variantPage = variantNode->page(); 160 155 if (variantPage) { 161 156 GlyphData data = variantPage->glyphDataForCharacter(c); 162 157 if (data.fontData) 163 return make_pair(data, variantPage);158 return data; 164 159 } 165 160 166 161 // Do not attempt system fallback off the variantFontData. This is the very unlikely case that 167 162 // a font has the lowercase character but the small caps font does not have its uppercase version. 168 return make_pair(variantFontData->missingGlyphData(), page);163 return variantFontData->missingGlyphData(); 169 164 } 170 165 … … 218 213 page->setGlyphDataForCharacter(c, c, characterFontData); 219 214 characterFontData->setMaxGlyphPageTreeLevel(max(characterFontData->maxGlyphPageTreeLevel(), node->level())); 220 return make_pair(page->glyphDataForCharacter(c), page);215 return page->glyphDataForCharacter(c); 221 216 #else 222 217 page->setGlyphDataForCharacter(c, data.glyph, data.fontData); … … 224 219 #endif 225 220 } 226 return make_pair(data, page);221 return data; 227 222 } 228 223 … … 235 230 page->setGlyphDataForCharacter(c, c, data.fontData); 236 231 data.fontData->setMaxGlyphPageTreeLevel(max(data.fontData->maxGlyphPageTreeLevel(), node->level())); 237 return make_pair(page->glyphDataForCharacter(c), page);232 return page->glyphDataForCharacter(c); 238 233 #else 239 234 page->setGlyphDataForCharacter(c, data.glyph, data.fontData); … … 241 236 #endif 242 237 } 243 return make_pair(data, page);238 return data; 244 239 } 245 240 … … 260 255 if (mark.isEmpty()) 261 256 return false; 257 258 #if ENABLE(SVG_FONTS) 259 // FIXME: Implement for SVG fonts. 260 if (primaryFont()->isSVGFont()) 261 return false; 262 #endif 262 263 263 264 UChar32 character = mark[0]; … … 376 377 } 377 378 378 void Font::drawGlyphBuffer(GraphicsContext* context, const TextRun& run, const GlyphBuffer& glyphBuffer, const FloatPoint& point) const379 void Font::drawGlyphBuffer(GraphicsContext* context, const TextRun&, const GlyphBuffer& glyphBuffer, const FloatPoint& point) const 379 380 { 380 381 // Draw each contiguous run of glyphs that use the same font data. … … 385 386 int lastFrom = 0; 386 387 int nextGlyph = 0; 387 #if ENABLE(SVG_FONTS)388 TextRun::RenderingContext* renderingContext = run.renderingContext();389 #endif390 388 while (nextGlyph < glyphBuffer.size()) { 391 389 const SimpleFontData* nextFontData = glyphBuffer.fontDataAt(nextGlyph); 392 390 FloatSize nextOffset = glyphBuffer.offsetAt(nextGlyph); 393 394 391 if (nextFontData != fontData || nextOffset != offset) { 395 #if ENABLE(SVG_FONTS) 396 if (renderingContext && fontData->isSVGFont()) 397 renderingContext->drawSVGGlyphs(context, run, fontData, glyphBuffer, lastFrom, nextGlyph - lastFrom, startPoint); 398 else 399 #endif 400 drawGlyphs(context, fontData, glyphBuffer, lastFrom, nextGlyph - lastFrom, startPoint); 392 drawGlyphs(context, fontData, glyphBuffer, lastFrom, nextGlyph - lastFrom, startPoint); 401 393 402 394 lastFrom = nextGlyph; … … 409 401 } 410 402 411 #if ENABLE(SVG_FONTS) 412 if (renderingContext && fontData->isSVGFont()) 413 renderingContext->drawSVGGlyphs(context, run, fontData, glyphBuffer, lastFrom, nextGlyph - lastFrom, startPoint); 414 else 415 #endif 416 drawGlyphs(context, fontData, glyphBuffer, lastFrom, nextGlyph - lastFrom, startPoint); 403 drawGlyphs(context, fontData, glyphBuffer, lastFrom, nextGlyph - lastFrom, startPoint); 417 404 } 418 405 -
trunk/Source/WebCore/platform/graphics/FontMetrics.h
r89233 r89311 123 123 }; 124 124 125 static inline float scaleEmToUnits(float x, unsigned unitsPerEm)126 {127 return unitsPerEm ? x / unitsPerEm : x;128 }129 130 125 } // namespace WebCore 131 126 -
trunk/Source/WebCore/platform/graphics/GlyphPageTreeNode.cpp
r89233 r89311 127 127 static bool fill(GlyphPage* pageToFill, unsigned offset, unsigned length, UChar* buffer, unsigned bufferLength, const SimpleFontData* fontData) 128 128 { 129 #if ENABLE(SVG_FONTS) 130 if (SimpleFontData::AdditionalFontData* additionalFontData = fontData->fontData()) 131 return additionalFontData->fillSVGGlyphPage(pageToFill, offset, length, buffer, bufferLength, fontData); 132 #endif 133 return pageToFill->fill(offset, length, buffer, bufferLength, fontData); 129 if (!fontData->isSVGFont()) 130 return pageToFill->fill(offset, length, buffer, bufferLength, fontData); 131 132 // SVG Fonts do not use the glyph page cache. Zero fill the glyph 133 // positions and return false to indicate the glyphs were not found. 134 for (unsigned i = 0; i < length; ++i) 135 pageToFill->setGlyphDataForIndex(offset + i, 0, 0); 136 return false; 134 137 } 135 138 -
trunk/Source/WebCore/platform/graphics/SVGGlyph.h
r89233 r89311 52 52 53 53 SVGGlyph() 54 : is PartOfLigature(false)54 : isValid(false) 55 55 , orientation(Both) 56 56 , arabicForm(None) … … 74 74 bool operator==(const SVGGlyph& other) const 75 75 { 76 return is PartOfLigature == other.isPartOfLigature76 return isValid == other.isValid 77 77 && orientation == other.orientation 78 78 && arabicForm == other.arabicForm … … 87 87 } 88 88 89 bool is PartOfLigature: 1;89 bool isValid : 1; 90 90 91 91 unsigned orientation : 2; // Orientation -
trunk/Source/WebCore/platform/graphics/SimpleFontData.cpp
r89233 r89311 57 57 } 58 58 59 SimpleFontData::SimpleFontData(PassOwnPtr<AdditionalFontData> fontData, float fontSize, bool syntheticBold, bool syntheticItalic)60 : m_platformData(FontPlatformData( fontSize, syntheticBold, syntheticItalic))59 SimpleFontData::SimpleFontData(PassOwnPtr<AdditionalFontData> fontData, int size, bool syntheticBold, bool syntheticItalic) 60 : m_platformData(FontPlatformData(size, syntheticBold, syntheticItalic)) 61 61 , m_fontData(fontData) 62 62 , m_treatAsFixedPitch(false) … … 67 67 , m_hasVerticalGlyphs(false) 68 68 { 69 m_fontData->initializeFontData(this, fontSize);69 m_fontData->initializeFontData(this, size); 70 70 } 71 71 -
trunk/Source/WebCore/platform/graphics/SimpleFontData.h
r89233 r89311 65 65 class FontDescription; 66 66 class SharedBuffer; 67 struct WidthIterator;68 67 69 68 enum FontDataVariant { AutoVariant, NormalVariant, SmallCapsVariant, EmphasisMarkVariant, BrokenIdeographVariant }; … … 76 75 public: 77 76 virtual ~AdditionalFontData() { } 78 79 virtual void initializeFontData(SimpleFontData*, float fontSize) = 0; 80 virtual float widthForSVGGlyph(Glyph, float fontSize) const = 0; 81 virtual bool fillSVGGlyphPage(GlyphPage*, unsigned offset, unsigned length, UChar* buffer, unsigned bufferLength, const SimpleFontData*) const = 0; 82 virtual bool applySVGGlyphSelection(WidthIterator&, GlyphData&, bool mirror, int currentCharacter, unsigned& advanceLength) const = 0; 77 78 virtual void initializeFontData(SimpleFontData*, int) = 0; 83 79 }; 84 80 … … 87 83 88 84 // Used to create SVG Fonts. 89 SimpleFontData(PassOwnPtr<AdditionalFontData>, float fontSize, bool syntheticBold, bool syntheticItalic);85 SimpleFontData(PassOwnPtr<AdditionalFontData>, int size, bool syntheticBold, bool syntheticItalic); 90 86 91 87 virtual ~SimpleFontData(); … … 326 322 return width; 327 323 328 if (m_fontData) 329 width = m_fontData->widthForSVGGlyph(glyph, m_platformData.size()); 330 else 331 width = platformWidthForGlyph(glyph); 332 324 width = platformWidthForGlyph(glyph); 333 325 m_glyphToWidthMap.setMetricsForGlyph(glyph, width); 334 326 return width; -
trunk/Source/WebCore/platform/graphics/TextRun.h
r89233 r89311 35 35 class Font; 36 36 class GraphicsContext; 37 class GlyphBuffer;38 class SimpleFontData;39 struct GlyphData;40 struct WidthIterator;41 37 42 38 class TextRun { … … 122 118 123 119 #if ENABLE(SVG_FONTS) 124 virtual GlyphData glyphDataForCharacter(const Font&, const TextRun&, WidthIterator&, UChar32 character, bool mirror, int currentCharacter, unsigned& advanceLength) = 0; 125 virtual void drawSVGGlyphs(GraphicsContext*, const TextRun&, const SimpleFontData*, const GlyphBuffer&, int from, int to, const FloatPoint&) const = 0; 126 virtual float floatWidthUsingSVGFont(const Font&, const TextRun&, int& charsConsumed, String& glyphName) const = 0; 120 // FIXME: Note that the SVG Font integration APIs will be more abstract and simpler once the SVG Fonts rewrite patch lands (59085). 121 virtual void drawTextUsingSVGFont(const Font&, GraphicsContext*, const TextRun&, const FloatPoint&, int from, int to) const = 0; 122 virtual float floatWidthUsingSVGFont(const Font&, const TextRun&) const = 0; 123 virtual float floatWidthUsingSVGFont(const Font&, const TextRun&, int extraCharsAvailable, int& charsConsumed, String& glyphName) const = 0; 124 virtual FloatRect selectionRectForTextUsingSVGFont(const Font&, const TextRun&, const FloatPoint&, int h, int from, int to) const = 0; 125 virtual int offsetForPositionForTextUsingSVGFont(const Font&, const TextRun&, float position, bool includePartialGlyphs) const = 0; 127 126 #endif 128 127 }; -
trunk/Source/WebCore/platform/graphics/WidthIterator.cpp
r89233 r89311 75 75 } 76 76 77 GlyphData WidthIterator::glyphDataForCharacter(UChar32 character, bool mirror, int currentCharacter, unsigned& advanceLength) 78 { 79 ASSERT(m_font); 80 81 #if ENABLE(SVG_FONTS) 82 if (TextRun::RenderingContext* renderingContext = m_run.renderingContext()) 83 return renderingContext->glyphDataForCharacter(*m_font, m_run, *this, character, mirror, currentCharacter, advanceLength); 84 #else 85 UNUSED_PARAM(currentCharacter); 86 UNUSED_PARAM(advanceLength); 87 #endif 88 89 return m_font->glyphDataForCharacter(character, mirror); 90 } 91 92 unsigned WidthIterator::advance(int offset, GlyphBuffer* glyphBuffer) 77 void WidthIterator::advance(int offset, GlyphBuffer* glyphBuffer) 93 78 { 94 79 if (offset > m_end) … … 97 82 int currentCharacter = m_currentCharacter; 98 83 if (currentCharacter >= offset) 99 return 0;84 return; 100 85 101 86 const UChar* cp = m_run.data(currentCharacter); … … 139 124 } 140 125 141 unsigned advanceLength = clusterLength; 142 const GlyphData& glyphData = glyphDataForCharacter(c, rtl, currentCharacter, advanceLength); 126 const GlyphData& glyphData = m_font->glyphDataForCharacter(c, rtl); 143 127 Glyph glyph = glyphData.glyph; 144 128 const SimpleFontData* fontData = glyphData.fontData; … … 223 207 224 208 // Advance past the character we just dealt with. 225 cp += advanceLength;226 currentCharacter += advanceLength;209 cp += clusterLength; 210 currentCharacter += clusterLength; 227 211 228 212 m_runWidthSoFar += width; … … 238 222 } 239 223 240 unsigned consumedCharacters = currentCharacter - m_currentCharacter;241 224 m_currentCharacter = currentCharacter; 242 return consumedCharacters;243 225 } 244 226 -
trunk/Source/WebCore/platform/graphics/WidthIterator.h
r89233 r89311 23 23 #define WidthIterator_h 24 24 25 #include "SVGGlyph.h"26 25 #include <wtf/HashSet.h> 27 #include <wtf/Vector.h>28 26 #include <wtf/unicode/Unicode.h> 29 27 … … 34 32 class SimpleFontData; 35 33 class TextRun; 36 struct GlyphData;37 34 38 35 struct WidthIterator { 39 36 WidthIterator(const Font*, const TextRun&, HashSet<const SimpleFontData*>* fallbackFonts = 0, bool accountForGlyphBounds = false, bool forTextEmphasis = false); 40 37 41 unsigned advance(int to, GlyphBuffer* = 0);38 void advance(int to, GlyphBuffer* = 0); 42 39 bool advanceOneCharacter(float& width, GlyphBuffer* = 0); 43 40 … … 46 43 float firstGlyphOverflow() const { ASSERT(m_accountForGlyphBounds); return m_firstGlyphOverflow; } 47 44 float lastGlyphOverflow() const { ASSERT(m_accountForGlyphBounds); return m_lastGlyphOverflow; } 48 49 const TextRun& run() const { return m_run; }50 float runWidthSoFar() const { return m_runWidthSoFar; }51 52 #if ENABLE(SVG_FONTS)53 String lastGlyphName() const { return m_lastGlyphName; }54 void setLastGlyphName(const String& name) { m_lastGlyphName = name; }55 Vector<SVGGlyph::ArabicForm>& arabicForms() { return m_arabicForms; }56 #endif57 45 58 46 const Font* m_font; … … 67 55 bool m_isAfterExpansion; 68 56 69 #if ENABLE(SVG_FONTS)70 String m_lastGlyphName;71 Vector<SVGGlyph::ArabicForm> m_arabicForms;72 #endif73 74 57 private: 75 GlyphData glyphDataForCharacter(UChar32, bool mirror, int currentCharacter, unsigned& advanceLength);76 58 UChar32 normalizeVoicingMarks(int currentCharacter); 77 59 -
trunk/Source/WebCore/platform/graphics/chromium/SimpleFontDataChromiumWin.cpp
r89233 r89311 47 47 namespace WebCore { 48 48 49 static inline float scaleEmToUnits(float x, int unitsPerEm) 50 { 51 return unitsPerEm ? x / static_cast<float>(unitsPerEm) : x; 52 } 53 49 54 void SimpleFontData::platformInit() 50 55 { -
trunk/Source/WebCore/platform/graphics/mac/SimpleFontDataMac.mm
r89233 r89311 57 57 58 58 const float smallCapsFontSizeMultiplier = 0.7f; 59 static inline float scaleEmToUnits(float x, unsigned unitsPerEm) { return x / unitsPerEm; } 59 60 60 61 static bool fontHasVerticalGlyphs(CTFontRef ctFont) -
trunk/Source/WebCore/platform/graphics/win/SimpleFontDataCGWin.cpp
r89233 r89311 47 47 48 48 using std::max; 49 50 static inline float scaleEmToUnits(float x, unsigned unitsPerEm) { return unitsPerEm ? x / static_cast<float>(unitsPerEm) : x; } 49 51 50 52 void SimpleFontData::platformInit() -
trunk/Source/WebCore/rendering/svg/SVGTextMetrics.cpp
r89233 r89311 35 35 } 36 36 37 SVGTextMetrics::SVGTextMetrics(RenderSVGInlineText* textRenderer, const TextRun& run )37 SVGTextMetrics::SVGTextMetrics(RenderSVGInlineText* textRenderer, const TextRun& run, unsigned position, unsigned textLength) 38 38 { 39 39 ASSERT(textRenderer); … … 43 43 44 44 const Font& scaledFont = textRenderer->scaledFont(); 45 46 int extraCharsAvailable = textLength - (position + run.length()); 45 47 int length = 0; 46 48 47 49 // Calculate width/height using the scaled font, divide this result by the scalingFactor afterwards. 48 m_width = scaledFont.width(run, length, m_glyph.name) / scalingFactor;50 m_width = scaledFont.width(run, extraCharsAvailable, length, m_glyph.name) / scalingFactor; 49 51 m_height = scaledFont.fontMetrics().floatHeight() / scalingFactor; 50 52 … … 90 92 // We handle letter & word spacing ourselves. 91 93 run.disableSpacing(); 92 93 // Propagate the maximum length of the characters buffer to the TextRun, even when we're only processing a substring.94 run.setCharactersLength(text->textLength() - position);95 ASSERT(run.charactersLength() >= run.length());96 94 return run; 97 95 } … … 100 98 { 101 99 ASSERT(text); 102 return SVGTextMetrics(text, constructTextRun(text, text->characters(), position, length) );100 return SVGTextMetrics(text, constructTextRun(text, text->characters(), position, length), position, text->textLength()); 103 101 } 104 102 -
trunk/Source/WebCore/rendering/svg/SVGTextMetrics.h
r89233 r89311 67 67 private: 68 68 SVGTextMetrics(); 69 SVGTextMetrics(RenderSVGInlineText*, const TextRun& );69 SVGTextMetrics(RenderSVGInlineText*, const TextRun&, unsigned position, unsigned textLength); 70 70 71 71 float m_width; -
trunk/Source/WebCore/rendering/svg/SVGTextRunRenderingContext.cpp
r89233 r89311 22 22 23 23 #if ENABLE(SVG_FONTS) 24 #include "SVGTextRunRenderingContext.h"25 26 24 #include "Font.h" 27 #include "GlyphBuffer.h" 25 26 #include "CSSFontSelector.h" 28 27 #include "GraphicsContext.h" 29 28 #include "RenderObject.h" 30 29 #include "RenderSVGInlineText.h" 31 30 #include "RenderSVGResourceSolidColor.h" 31 #include "SVGAltGlyphElement.h" 32 32 #include "SVGFontData.h" 33 33 #include "SVGFontElement.h" 34 34 #include "SVGFontFaceElement.h" 35 35 #include "SVGGlyphElement.h" 36 #include "SVGGlyphMap.h" 37 #include "SVGMissingGlyphElement.h" 36 38 #include "SVGNames.h" 37 #include "WidthIterator.h" 39 #include "SVGTextRunRenderingContext.h" 40 #include "SimpleFontData.h" 41 #include "XMLNames.h" 42 43 using namespace WTF::Unicode; 38 44 39 45 namespace WebCore { 46 47 static inline float convertEmUnitToPixel(float fontSize, float unitsPerEm, float value) 48 { 49 if (!unitsPerEm) 50 return 0.0f; 51 52 return value * fontSize / unitsPerEm; 53 } 54 55 static inline bool isVerticalWritingMode(const SVGRenderStyle* style) 56 { 57 return style->writingMode() == WM_TBRL || style->writingMode() == WM_TB; 58 } 40 59 41 60 static inline const SVGFontData* svgFontAndFontFaceElementForFontData(const SimpleFontData* fontData, SVGFontFaceElement*& fontFace, SVGFontElement*& font) … … 57 76 { 58 77 ASSERT(renderer); 59 return renderer->isText() ? renderer->parent() : renderer; 60 } 61 62 static inline RenderObject* renderObjectFromRun(const TextRun& run) 78 RenderObject* newRenderer = renderer->isText() ? renderer->parent() : renderer; 79 return newRenderer; 80 } 81 82 static inline RenderObject* referencingRenderObjectFromRun(const TextRun& run) 63 83 { 64 84 if (TextRun::RenderingContext* renderingContext = run.renderingContext()) … … 74 94 } 75 95 76 float SVGTextRunRenderingContext::floatWidthUsingSVGFont(const Font& font, const TextRun& run, int& charsConsumed, String& glyphName) const 77 { 78 WidthIterator it(&font, run); 79 charsConsumed += it.advance(run.length()); 80 glyphName = it.lastGlyphName(); 81 return it.runWidthSoFar(); 82 } 83 84 void SVGTextRunRenderingContext::drawSVGGlyphs(GraphicsContext* context, const TextRun& run, const SimpleFontData* fontData, const GlyphBuffer& glyphBuffer, int from, int numGlyphs, const FloatPoint& point) const 85 { 96 // Helper class to walk a text run. Lookup a SVGGlyph for each character 97 // - also respecting possibly defined ligatures - and invoke a callback for each found glyph. 98 template<typename SVGTextRunData> 99 struct SVGTextRunWalker { 100 typedef bool (*SVGTextRunWalkerCallback)(const SVGGlyph&, SVGTextRunData&); 101 typedef void (*SVGTextRunWalkerMissingGlyphCallback)(const TextRun&, SVGTextRunData&); 102 103 SVGTextRunWalker(const SVGFontData* fontData, SVGFontElement* fontElement, SVGTextRunData& data, 104 SVGTextRunWalkerCallback callback, SVGTextRunWalkerMissingGlyphCallback missingGlyphCallback) 105 : m_fontData(fontData) 106 , m_fontElement(fontElement) 107 , m_walkerData(data) 108 , m_walkerCallback(callback) 109 , m_walkerMissingGlyphCallback(missingGlyphCallback) 110 { 111 } 112 113 void walk(const TextRun& run, bool isVerticalText, const String& language, int from, int to) 114 { 115 if (from < 0 || to < 0 || from > to || from >= run.length() || to > run.length()) 116 return; 117 118 const String text = Font::normalizeSpaces(run.data(from), to - from); 119 Vector<SVGGlyph::ArabicForm> chars(charactersWithArabicForm(text, run.rtl())); 120 121 SVGGlyph identifier; 122 bool foundGlyph = false; 123 int characterLookupRange; 124 int endOfScanRange = to + m_walkerData.extraCharsAvailable; 125 126 RenderObject* renderObject = referencingRenderObjectFromRun(run); 127 RenderObject* parentRenderObject = firstParentRendererForNonTextNode(renderObject); 128 129 bool haveAltGlyph = false; 130 SVGGlyph altGlyphIdentifier; 131 Node* node = parentRenderObject->node(); 132 if (node && node->hasTagName(SVGNames::altGlyphTag)) { 133 if (SVGGlyphElement* glyphElement = static_cast<SVGAltGlyphElement*>(node)->glyphElement()) { 134 haveAltGlyph = true; 135 altGlyphIdentifier = glyphElement->buildGlyphIdentifier(); 136 altGlyphIdentifier.isValid = true; 137 altGlyphIdentifier.unicodeStringLength = to - from; 138 } 139 } 140 141 for (int i = from; i < to; ++i) { 142 // If characterLookupRange is > 0, then the font defined ligatures (length of unicode property value > 1). 143 // We have to check wheter the current character & the next character define a ligature. This needs to be 144 // extended to the n-th next character (where n is 'characterLookupRange'), to check for any possible ligature. 145 characterLookupRange = endOfScanRange - i; 146 147 String lookupString = Font::normalizeSpaces(run.data(i), characterLookupRange); 148 149 Vector<SVGGlyph> glyphs; 150 if (haveAltGlyph) 151 glyphs.append(altGlyphIdentifier); 152 else 153 m_fontElement->collectGlyphsForString(lookupString, glyphs); 154 155 Vector<SVGGlyph>::iterator it = glyphs.begin(); 156 Vector<SVGGlyph>::iterator end = glyphs.end(); 157 158 for (; it != end; ++it) { 159 identifier = *it; 160 if (identifier.isValid && isCompatibleGlyph(identifier, isVerticalText, language, chars, i, i + identifier.unicodeStringLength)) { 161 ASSERT(characterLookupRange > 0); 162 i += identifier.unicodeStringLength - 1; 163 m_walkerData.charsConsumed += identifier.unicodeStringLength; 164 m_walkerData.glyphName = identifier.glyphName; 165 166 foundGlyph = true; 167 SVGGlyphElement::inheritUnspecifiedAttributes(identifier, m_fontData); 168 break; 169 } 170 } 171 172 if (!foundGlyph) { 173 ++m_walkerData.charsConsumed; 174 if (SVGMissingGlyphElement* element = m_fontElement->firstMissingGlyphElement()) { 175 // <missing-glyph> element support 176 identifier = SVGGlyphElement::buildGenericGlyphIdentifier(element); 177 SVGGlyphElement::inheritUnspecifiedAttributes(identifier, m_fontData); 178 identifier.isValid = true; 179 } else { 180 // Fallback to system font fallback 181 TextRun subRun(run); 182 subRun.setRenderingContext(0); 183 subRun.setText(subRun.data(i), 1); 184 185 (*m_walkerMissingGlyphCallback)(subRun, m_walkerData); 186 continue; 187 } 188 } 189 190 if (!(*m_walkerCallback)(identifier, m_walkerData)) 191 break; 192 193 foundGlyph = false; 194 } 195 } 196 197 private: 198 const SVGFontData* m_fontData; 199 SVGFontElement* m_fontElement; 200 SVGTextRunData& m_walkerData; 201 SVGTextRunWalkerCallback m_walkerCallback; 202 SVGTextRunWalkerMissingGlyphCallback m_walkerMissingGlyphCallback; 203 }; 204 205 // Callback & data structures to compute the width of text using SVG Fonts 206 struct SVGTextRunWalkerMeasuredLengthData { 207 int at; 208 int from; 209 int to; 210 int extraCharsAvailable; 211 int charsConsumed; 212 String glyphName; 213 214 float scale; 215 float length; 216 const Font* font; 217 }; 218 219 static bool floatWidthUsingSVGFontCallback(const SVGGlyph& identifier, SVGTextRunWalkerMeasuredLengthData& data) 220 { 221 if (data.at >= data.from && data.at < data.to) 222 data.length += identifier.horizontalAdvanceX * data.scale; 223 224 data.at++; 225 return data.at < data.to; 226 } 227 228 static void floatWidthMissingGlyphCallback(const TextRun& run, SVGTextRunWalkerMeasuredLengthData& data) 229 { 230 // Handle system font fallback 231 FontDescription fontDescription(data.font->fontDescription()); 232 fontDescription.setFamily(FontFamily()); 233 Font font(fontDescription, 0, 0); // spacing handled by SVG text code. 234 font.update(data.font->fontSelector()); 235 236 TextRun fallbackRun(run); 237 fallbackRun.setRenderingContext(0); 238 data.length += font.width(fallbackRun); 239 } 240 241 static float floatWidthOfSubStringUsingSVGFont(const Font& font, const TextRun& run, int extraCharsAvailable, int from, int to, int& charsConsumed, String& glyphName) 242 { 243 int newFrom = to > from ? from : to; 244 int newTo = to > from ? to : from; 245 246 from = newFrom; 247 to = newTo; 248 86 249 SVGFontElement* fontElement = 0; 87 250 SVGFontFaceElement* fontFaceElement = 0; 88 251 89 const SVGFontData* svgFontData = svgFontAndFontFaceElementForFontData(fontData, fontFaceElement, fontElement); 90 if (!fontElement || !fontFaceElement) 91 return; 92 93 // We can only paint SVGFonts if a context is available. 94 RenderSVGResource* activePaintingResource = activePaintingResourceFromRun(run); 95 RenderObject* renderObject = renderObjectFromRun(run); 96 RenderObject* parentRenderObject = firstParentRendererForNonTextNode(renderObject); 97 RenderStyle* parentRenderObjectStyle = 0; 98 99 ASSERT(renderObject); 100 if (!activePaintingResource) { 101 // TODO: We're only supporting simple filled HTML text so far. 102 RenderSVGResourceSolidColor* solidPaintingResource = RenderSVGResource::sharedSolidPaintingResource(); 103 solidPaintingResource->setColor(context->fillColor()); 104 activePaintingResource = solidPaintingResource; 252 if (const SVGFontData* fontData = svgFontAndFontFaceElementForFontData(font.primaryFont(), fontFaceElement, fontElement)) { 253 if (!fontElement) 254 return 0.0f; 255 256 SVGTextRunWalkerMeasuredLengthData data; 257 258 data.font = &font; 259 data.at = from; 260 data.from = from; 261 data.to = to; 262 data.extraCharsAvailable = extraCharsAvailable; 263 data.charsConsumed = 0; 264 data.scale = convertEmUnitToPixel(font.size(), fontFaceElement->unitsPerEm(), 1.0f); 265 data.length = 0.0f; 266 267 RenderObject* renderObject = referencingRenderObjectFromRun(run); 268 RenderObject* parentRenderObject = firstParentRendererForNonTextNode(renderObject); 269 270 String language; 271 if (SVGElement* element = static_cast<SVGElement*>(parentRenderObject->node())) 272 language = element->getAttribute(XMLNames::langAttr); 273 274 bool isVerticalText = isVerticalWritingMode(parentRenderObject->style()->svgStyle()); 275 276 SVGTextRunWalker<SVGTextRunWalkerMeasuredLengthData> runWalker(fontData, fontElement, data, floatWidthUsingSVGFontCallback, floatWidthMissingGlyphCallback); 277 runWalker.walk(run, isVerticalText, language, from, to); 278 charsConsumed = data.charsConsumed; 279 glyphName = data.glyphName; 280 return data.length; 105 281 } 106 107 bool isVerticalText = false; 108 if (parentRenderObject) { 109 parentRenderObjectStyle = parentRenderObject->style(); 110 ASSERT(parentRenderObjectStyle); 111 isVerticalText = parentRenderObjectStyle->svgStyle()->isVerticalWritingMode(); 112 } 113 114 float scale = scaleEmToUnits(fontData->platformData().size(), fontFaceElement->unitsPerEm()); 115 ASSERT(activePaintingResource); 116 117 FloatPoint glyphOrigin; 118 glyphOrigin.setX(svgFontData->horizontalOriginX() * scale); 119 glyphOrigin.setY(svgFontData->horizontalOriginY() * scale); 120 121 FloatPoint currentPoint = point; 122 RenderSVGResourceMode resourceMode = context->textDrawingMode() == TextModeStroke ? ApplyToStrokeMode : ApplyToFillMode; 123 for (int i = 0; i < numGlyphs; ++i) { 124 Glyph glyph = glyphBuffer.glyphAt(from + i); 125 if (!glyph) 126 continue; 127 128 float advance = glyphBuffer.advanceAt(from + i); 129 SVGGlyph svgGlyph = fontElement->svgGlyphForGlyph(glyph); 130 ASSERT(!svgGlyph.isPartOfLigature); 131 ASSERT(svgGlyph.tableEntry == glyph); 132 133 SVGGlyphElement::inheritUnspecifiedAttributes(svgGlyph, svgFontData); 134 135 // FIXME: Support arbitary SVG content as glyph (currently limited to <glyph d="..."> situations). 136 if (svgGlyph.pathData.isEmpty()) { 137 if (isVerticalText) 138 currentPoint.move(0, advance); 139 else 140 currentPoint.move(advance, 0); 141 continue; 142 } 143 144 context->save(); 145 146 if (isVerticalText) { 147 glyphOrigin.setX(svgGlyph.verticalOriginX * scale); 148 glyphOrigin.setY(svgGlyph.verticalOriginY * scale); 149 } 150 151 AffineTransform glyphPathTransform; 152 glyphPathTransform.translate(currentPoint.x() + glyphOrigin.x(), currentPoint.y() + glyphOrigin.y()); 153 glyphPathTransform.scale(scale, -scale); 154 155 Path glyphPath = svgGlyph.pathData; 156 glyphPath.transform(glyphPathTransform); 157 158 if (activePaintingResource->applyResource(parentRenderObject, parentRenderObjectStyle, context, resourceMode)) { 159 if (renderObject && renderObject->isSVGInlineText()) { 160 const RenderSVGInlineText* textRenderer = toRenderSVGInlineText(renderObject); 161 context->setStrokeThickness(context->strokeThickness() * textRenderer->scalingFactor()); 162 } 163 activePaintingResource->postApplyResource(parentRenderObject, context, resourceMode, &glyphPath); 164 } 165 166 context->restore(); 167 168 if (isVerticalText) 169 currentPoint.move(0, advance); 170 else 171 currentPoint.move(advance, 0); 172 } 173 } 174 175 GlyphData SVGTextRunRenderingContext::glyphDataForCharacter(const Font& font, const TextRun& run, WidthIterator& iterator, UChar32 character, bool mirror, int currentCharacter, unsigned& advanceLength) 176 { 177 const SimpleFontData* primaryFont = font.primaryFont(); 178 ASSERT(primaryFont); 179 180 pair<GlyphData, GlyphPage*> pair = font.glyphDataAndPageForCharacter(character, mirror); 181 GlyphData glyphData = pair.first; 182 if (!glyphData.fontData) 183 return glyphData; 184 185 GlyphData missingGlyphData = primaryFont->missingGlyphData(); 186 if (glyphData.glyph == missingGlyphData.glyph && glyphData.fontData == missingGlyphData.fontData) 187 return glyphData; 188 189 // Characters enclosed by an <altGlyph> element, may not be registered in the GlyphPage. 190 if (!glyphData.fontData->isSVGFont()) { 191 if (TextRun::RenderingContext* renderingContext = run.renderingContext()) { 192 RenderObject* renderObject = static_cast<SVGTextRunRenderingContext*>(renderingContext)->renderer(); 193 RenderObject* parentRenderObject = renderObject->isText() ? renderObject->parent() : renderObject; 194 ASSERT(parentRenderObject); 195 if (Element* parentRenderObjectElement = toElement(parentRenderObject->node())) { 196 if (parentRenderObjectElement->hasTagName(SVGNames::altGlyphTag)) 197 glyphData.fontData = primaryFont; 282 283 return 0.0f; 284 } 285 286 float SVGTextRunRenderingContext::floatWidthUsingSVGFont(const Font& font, const TextRun& run) const 287 { 288 int charsConsumed; 289 String glyphName; 290 return floatWidthOfSubStringUsingSVGFont(font, run, 0, 0, run.length(), charsConsumed, glyphName); 291 } 292 293 float SVGTextRunRenderingContext::floatWidthUsingSVGFont(const Font& font, const TextRun& run, int extraCharsAvailable, int& charsConsumed, String& glyphName) const 294 { 295 return floatWidthOfSubStringUsingSVGFont(font, run, extraCharsAvailable, 0, run.length(), charsConsumed, glyphName); 296 } 297 298 // Callback & data structures to draw text using SVG Fonts 299 struct SVGTextRunWalkerDrawTextData { 300 int extraCharsAvailable; 301 int charsConsumed; 302 String glyphName; 303 Vector<SVGGlyph> glyphIdentifiers; 304 Vector<UChar> fallbackCharacters; 305 }; 306 307 static bool drawTextUsingSVGFontCallback(const SVGGlyph& identifier, SVGTextRunWalkerDrawTextData& data) 308 { 309 data.glyphIdentifiers.append(identifier); 310 return true; 311 } 312 313 static void drawTextMissingGlyphCallback(const TextRun& run, SVGTextRunWalkerDrawTextData& data) 314 { 315 ASSERT(run.length() == 1); 316 data.glyphIdentifiers.append(SVGGlyph()); 317 data.fallbackCharacters.append(run[0]); 318 } 319 320 void SVGTextRunRenderingContext::drawTextUsingSVGFont(const Font& font, GraphicsContext* context, const TextRun& run, const FloatPoint& point, int from, int to) const 321 { 322 SVGFontElement* fontElement = 0; 323 SVGFontFaceElement* fontFaceElement = 0; 324 325 if (const SVGFontData* fontData = svgFontAndFontFaceElementForFontData(font.primaryFont(), fontFaceElement, fontElement)) { 326 if (!fontElement) 327 return; 328 329 SVGTextRunWalkerDrawTextData data; 330 FloatPoint currentPoint = point; 331 float scale = convertEmUnitToPixel(font.size(), fontFaceElement->unitsPerEm(), 1.0f); 332 333 // We can only paint SVGFonts if a context is available. 334 RenderObject* renderObject = referencingRenderObjectFromRun(run); 335 RenderObject* parentRenderObject = firstParentRendererForNonTextNode(renderObject); 336 337 // If activePaintingResource is not set, we're dealing for HTML text rendered using SVG Fonts. 338 RenderSVGResource* activePaintingResource = activePaintingResourceFromRun(run); 339 if (!activePaintingResource) { 340 // TODO: We're only supporting simple filled HTML text so far. 341 RenderSVGResourceSolidColor* solidPaintingResource = RenderSVGResource::sharedSolidPaintingResource(); 342 solidPaintingResource->setColor(context->fillColor()); 343 344 activePaintingResource = solidPaintingResource; 345 } 346 347 int charsConsumed; 348 String glyphName; 349 float xStartOffset = floatWidthOfSubStringUsingSVGFont(font, run, 0, run.rtl() ? to : 0, run.rtl() ? run.length() : from, charsConsumed, glyphName); 350 FloatPoint glyphOrigin; 351 352 String language; 353 if (SVGElement* element = static_cast<SVGElement*>(parentRenderObject->node())) 354 language = element->getAttribute(XMLNames::langAttr); 355 356 RenderStyle* parentRenderObjectStyle = parentRenderObject->style(); 357 bool isVerticalText = isVerticalWritingMode(parentRenderObjectStyle->svgStyle()); 358 if (!isVerticalText) { 359 glyphOrigin.setX(fontData->horizontalOriginX() * scale); 360 glyphOrigin.setY(fontData->horizontalOriginY() * scale); 361 } 362 363 data.extraCharsAvailable = 0; 364 data.charsConsumed = 0; 365 366 SVGTextRunWalker<SVGTextRunWalkerDrawTextData> runWalker(fontData, fontElement, data, drawTextUsingSVGFontCallback, drawTextMissingGlyphCallback); 367 runWalker.walk(run, isVerticalText, language, from, to); 368 369 RenderSVGResourceMode resourceMode = context->textDrawingMode() == TextModeStroke ? ApplyToStrokeMode : ApplyToFillMode; 370 371 unsigned numGlyphs = data.glyphIdentifiers.size(); 372 unsigned fallbackCharacterIndex = 0; 373 for (unsigned i = 0; i < numGlyphs; ++i) { 374 const SVGGlyph& identifier = data.glyphIdentifiers[run.rtl() ? numGlyphs - i - 1 : i]; 375 if (identifier.isValid) { 376 // FIXME: Support arbitary SVG content as glyph (currently limited to <glyph d="..."> situations). 377 if (!identifier.pathData.isEmpty()) { 378 GraphicsContextStateSaver stateSaver(*context); 379 380 if (isVerticalText) { 381 glyphOrigin.setX(identifier.verticalOriginX * scale); 382 glyphOrigin.setY(identifier.verticalOriginY * scale); 383 } 384 385 AffineTransform glyphPathTransform; 386 glyphPathTransform.translate(xStartOffset + currentPoint.x() + glyphOrigin.x(), currentPoint.y() + glyphOrigin.y()); 387 glyphPathTransform.scale(scale, -scale); 388 389 Path glyphPath = identifier.pathData; 390 glyphPath.transform(glyphPathTransform); 391 392 if (activePaintingResource->applyResource(parentRenderObject, parentRenderObjectStyle, context, resourceMode)) { 393 if (renderObject && renderObject->isSVGInlineText()) { 394 const RenderSVGInlineText* textRenderer = toRenderSVGInlineText(renderObject); 395 context->setStrokeThickness(context->strokeThickness() * textRenderer->scalingFactor()); 396 } 397 activePaintingResource->postApplyResource(parentRenderObject, context, resourceMode, &glyphPath); 398 } 399 } 400 401 if (isVerticalText) 402 currentPoint.move(0.0f, identifier.verticalAdvanceY * scale); 403 else 404 currentPoint.move(identifier.horizontalAdvanceX * scale, 0.0f); 405 } else { 406 // Handle system font fallback 407 FontDescription fontDescription(font.fontDescription()); 408 fontDescription.setFamily(FontFamily()); 409 Font font(fontDescription, 0, 0); // spacing handled by SVG text code. 410 font.update(font.fontSelector()); 411 412 TextRun fallbackCharacterRun(run); 413 fallbackCharacterRun.setRenderingContext(0); 414 fallbackCharacterRun.setText(&data.fallbackCharacters[run.rtl() ? data.fallbackCharacters.size() - fallbackCharacterIndex - 1 : fallbackCharacterIndex], 1); 415 font.drawText(context, fallbackCharacterRun, currentPoint); 416 417 if (isVerticalText) 418 currentPoint.move(0.0f, font.width(fallbackCharacterRun)); 419 else 420 currentPoint.move(font.width(fallbackCharacterRun), 0.0f); 421 422 fallbackCharacterIndex++; 198 423 } 199 424 } 200 425 } 201 202 if (!glyphData.fontData || !glyphData.fontData->isSVGFont()) 203 return glyphData; 204 205 const SimpleFontData* fontData = glyphData.fontData; 206 207 SVGFontElement* fontElement = 0; 208 SVGFontFaceElement* fontFaceElement = 0; 209 210 const SVGFontData* svgFontData = svgFontAndFontFaceElementForFontData(fontData, fontFaceElement, fontElement); 211 if (!fontElement || !fontFaceElement) 212 return glyphData; 213 214 // If we got here, we're dealing with a glyph defined in a SVG Font. 215 // The returned glyph by glyphDataAndPageForCharacter() is a glyph stored in the SVG Font glyph table. 216 // This doesn't necessarily mean the glyph is suitable for rendering/measuring in this context, its 217 // arabic-form/orientation/... may not match, we have to apply SVG Glyph selection to discover that. 218 if (svgFontData->applySVGGlyphSelection(iterator, glyphData, mirror, currentCharacter, advanceLength)) 219 return glyphData; 220 221 GlyphPage* page = pair.second; 222 ASSERT(page); 223 224 FontFallbackList* fontList = font.fontList(); 225 ASSERT(fontList); 226 227 // No suitable glyph found that is compatible with the requirments (same language, arabic-form, orientation etc.) 228 // Even though our GlyphPage contains an entry for eg. glyph "a", it's not compatible. So we have to temporarily 229 // remove the glyph data information from the GlyphPage, and retry the lookup, which handles font fallbacks correctly. 230 GlyphPageTreeNode* originalGlyphPageZero = fontList->glyphPageZero(); 231 const FontFallbackList::GlyphPages& originalGlyphPages = fontList->glyphPages(); 232 page->setGlyphDataForCharacter(character, glyphData.glyph, 0); 233 234 // Assure that the font fallback glyph selection worked, aka. the fallbackGlyphData font data is not the same as before. 235 GlyphData fallbackGlyphData = font.glyphDataForCharacter(character, mirror); 236 ASSERT(fallbackGlyphData.fontData != fontData); 237 238 // Restore original state of the SVG Font glyph table and the current font fallback list, 239 // to assure the next lookup of the same glyph won't immediately return the fallback glyph. 240 page->setGlyphDataForCharacter(character, glyphData.glyph, fontData); 241 fontList->setGlyphPageZero(originalGlyphPageZero); 242 fontList->setGlyphPages(originalGlyphPages); 243 return fallbackGlyphData; 426 } 427 428 FloatRect SVGTextRunRenderingContext::selectionRectForTextUsingSVGFont(const Font& font, const TextRun& run, const FloatPoint& point, int height, int from, int to) const 429 { 430 int charsConsumed; 431 String glyphName; 432 433 return FloatRect(point.x() + floatWidthOfSubStringUsingSVGFont(font, run, 0, run.rtl() ? to : 0, run.rtl() ? run.length() : from, charsConsumed, glyphName), 434 point.y(), floatWidthOfSubStringUsingSVGFont(font, run, 0, from, to, charsConsumed, glyphName), height); 435 } 436 437 int SVGTextRunRenderingContext::offsetForPositionForTextUsingSVGFont(const Font&, const TextRun&, float, bool) const 438 { 439 // TODO: Fix text selection when HTML text is drawn using a SVG Font 440 // We need to integrate the SVG text selection code in the offsetForPosition() framework. 441 // This will also fix a major issue, that SVG Text code can't select arabic strings properly. 442 return 0; 244 443 } 245 444 -
trunk/Source/WebCore/rendering/svg/SVGTextRunRenderingContext.h
r89233 r89311 22 22 #define SVGTextRunRenderingContext_h 23 23 24 #include "Font.h"25 24 #include "TextRun.h" 26 25 … … 43 42 void setActivePaintingResource(RenderSVGResource* object) { m_activePaintingResource = object; } 44 43 45 virtual GlyphData glyphDataForCharacter(const Font&, const TextRun&, WidthIterator&, UChar32 character, bool mirror, int currentCharacter, unsigned& advanceLength); 46 virtual void drawSVGGlyphs(GraphicsContext*, const TextRun&, const SimpleFontData*, const GlyphBuffer&, int from, int to, const FloatPoint&) const; 47 virtual float floatWidthUsingSVGFont(const Font&, const TextRun&, int& charsConsumed, String& glyphName) const; 44 virtual void drawTextUsingSVGFont(const Font&, GraphicsContext*, const TextRun&, const FloatPoint&, int from, int to) const; 45 virtual float floatWidthUsingSVGFont(const Font&, const TextRun&) const; 46 virtual float floatWidthUsingSVGFont(const Font&, const TextRun&, int extraCharsAvailable, int& charsConsumed, String& glyphName) const; 47 virtual FloatRect selectionRectForTextUsingSVGFont(const Font&, const TextRun&, const FloatPoint&, int h, int from, int to) const; 48 virtual int offsetForPositionForTextUsingSVGFont(const Font&, const TextRun&, float position, bool includePartialGlyphs) const; 48 49 #endif 49 50 … … 56 57 { 57 58 } 58 59 virtual ~SVGTextRunRenderingContext() { }60 59 61 60 RenderObject* m_renderer; -
trunk/Source/WebCore/svg/SVGAltGlyphElement.cpp
r89233 r89311 102 102 } 103 103 104 bool SVGAltGlyphElement::hasValidGlyphElement(String& glyphName) const104 SVGGlyphElement* SVGAltGlyphElement::glyphElement() const 105 105 { 106 // FIXME: No support for altGlyphDef/glyphRef. 107 // This is tracked by https://bugs.webkit.org/show_bug.cgi?id=60850. 108 glyphName = getTarget(fastGetAttribute(XLinkNames::hrefAttr)); 109 Element* element = treeScope()->getElementById(glyphName); 110 if (!element || !element->hasTagName(SVGNames::glyphTag)) 111 return false; 112 return true; 106 Element* elt = treeScope()->getElementById(getTarget(fastGetAttribute(XLinkNames::hrefAttr))); 107 if (!elt || !elt->hasTagName(SVGNames::glyphTag)) 108 return 0; 109 return static_cast<SVGGlyphElement*>(elt); 113 110 } 114 111 … … 116 113 117 114 #endif // ENABLE(SVG) 115 116 // vim:ts=4:noet -
trunk/Source/WebCore/svg/SVGAltGlyphElement.h
r89233 r89311 41 41 void setFormat(const AtomicString&, ExceptionCode&); 42 42 43 bool hasValidGlyphElement(String& glyphName) const;43 SVGGlyphElement* glyphElement() const; 44 44 45 45 private: -
trunk/Source/WebCore/svg/SVGFontData.cpp
r89233 r89311 23 23 #include "SVGFontData.h" 24 24 25 #include "RenderObject.h"26 #include "SVGAltGlyphElement.h"27 25 #include "SVGFontElement.h" 28 26 #include "SVGGlyph.h" 29 #include "SVGNames.h"30 #include "SVGTextRunRenderingContext.h"31 #include "TextRun.h"32 #include "WidthIterator.h"33 #include "XMLNames.h"34 27 35 28 namespace WebCore { … … 47 40 } 48 41 49 void SVGFontData::initializeFontData(SimpleFontData* fontData, float fontSize)42 void SVGFontData::initializeFontData(SimpleFontData* fontData, int size) 50 43 { 51 44 ASSERT(fontData); 52 45 53 46 SVGFontFaceElement* svgFontFaceElement = this->svgFontFaceElement(); 54 ASSERT(svgFontFaceElement);47 unsigned unitsPerEm = svgFontFaceElement->unitsPerEm(); 55 48 56 SVGFontElement* svgFontElement = svgFontFaceElement->associatedFontElement(); 57 ASSERT(svgFontElement); 58 GlyphData missingGlyphData; 59 missingGlyphData.fontData = fontData; 60 missingGlyphData.glyph = svgFontElement->missingGlyph(); 61 fontData->setMissingGlyphData(missingGlyphData); 49 float scale = size; 50 if (unitsPerEm) 51 scale /= unitsPerEm; 62 52 63 fontData->setZeroWidthSpaceGlyph(0);64 fontData->determinePitch();65 66 GlyphPage* glyphPageZero = GlyphPageTreeNode::getRootChild(fontData, 0)->page();67 if (!glyphPageZero) {68 fontData->setSpaceGlyph(0);69 fontData->setSpaceWidth(0);70 return;71 }72 73 unsigned unitsPerEm = svgFontFaceElement->unitsPerEm();74 float scale = scaleEmToUnits(fontSize, unitsPerEm);75 53 float xHeight = svgFontFaceElement->xHeight() * scale; 76 54 float ascent = svgFontFaceElement->ascent() * scale; 77 55 float descent = svgFontFaceElement->descent() * scale; 78 float lineGap = 0.1f * fontSize;56 float lineGap = 0.1f * size; 79 57 58 SVGFontElement* associatedFontElement = svgFontFaceElement->associatedFontElement(); 80 59 if (!xHeight) { 81 60 // Fallback if x_heightAttr is not specified for the font element. 82 Glyph letterXGlyph = glyphPageZero->glyphDataForCharacter('x').glyph; 83 xHeight = letterXGlyph ? fontData->widthForGlyph(letterXGlyph) : 2 * ascent / 3; 61 Vector<SVGGlyph> letterXGlyphs; 62 associatedFontElement->collectGlyphsForString(String("x", 1), letterXGlyphs); 63 xHeight = letterXGlyphs.isEmpty() ? 2 * ascent / 3 : letterXGlyphs.first().horizontalAdvanceX * scale; 84 64 } 85 65 … … 92 72 fontMetrics.setXHeight(xHeight); 93 73 94 // Calculate space width. 95 Glyph spaceGlyph = glyphPageZero->glyphDataForCharacter(' ').glyph; 96 fontData->setSpaceGlyph(spaceGlyph); 97 fontData->setSpaceWidth(fontData->widthForGlyph(spaceGlyph)); 74 Vector<SVGGlyph> spaceGlyphs; 75 associatedFontElement->collectGlyphsForString(String(" ", 1), spaceGlyphs); 76 fontData->setSpaceWidth(spaceGlyphs.isEmpty() ? xHeight : spaceGlyphs.first().horizontalAdvanceX * scale); 98 77 99 // Estimate average character width.100 Glyph numeralZeroGlyph = glyphPageZero->glyphDataForCharacter('0').glyph;101 fontData->setAvgCharWidth(numeralZeroGlyph ? fontData->widthForGlyph(numeralZeroGlyph) : fontData->spaceWidth());78 Vector<SVGGlyph> numeralZeroGlyphs; 79 associatedFontElement->collectGlyphsForString(String("0", 1), numeralZeroGlyphs); 80 fontData->setAvgCharWidth(numeralZeroGlyphs.isEmpty() ? fontData->spaceWidth() : numeralZeroGlyphs.first().horizontalAdvanceX * scale); 102 81 103 // Estimate maximum character width. 104 Glyph letterWGlyph = glyphPageZero->glyphDataForCharacter('W').glyph; 105 fontData->setMaxCharWidth(letterWGlyph ? fontData->widthForGlyph(letterWGlyph) : ascent); 106 } 82 Vector<SVGGlyph> letterWGlyphs; 83 associatedFontElement->collectGlyphsForString(String("W", 1), letterWGlyphs); 84 fontData->setMaxCharWidth(letterWGlyphs.isEmpty() ? ascent : letterWGlyphs.first().horizontalAdvanceX * scale); 107 85 108 float SVGFontData::widthForSVGGlyph(Glyph glyph, float fontSize) const 109 { 110 SVGFontFaceElement* svgFontFaceElement = this->svgFontFaceElement();111 ASSERT(svgFontFaceElement);86 // FIXME: is there a way we can get the space glyph from the SVGGlyph above? 87 fontData->setSpaceGlyph(0); 88 fontData->setZeroWidthSpaceGlyph(0); 89 fontData->determinePitch(); 112 90 113 SVGFontElement* associatedFontElement = svgFontFaceElement->associatedFontElement(); 114 ASSERT(associatedFontElement); 115 116 SVGGlyph svgGlyph = associatedFontElement->svgGlyphForGlyph(glyph); 117 SVGGlyphElement::inheritUnspecifiedAttributes(svgGlyph, this); 118 return svgGlyph.horizontalAdvanceX * scaleEmToUnits(fontSize, svgFontFaceElement->unitsPerEm()); 119 } 120 121 bool SVGFontData::applySVGGlyphSelection(WidthIterator& iterator, GlyphData& glyphData, bool mirror, int currentCharacter, unsigned& advanceLength) const 122 { 123 const TextRun& run = iterator.run(); 124 Vector<SVGGlyph::ArabicForm>& arabicForms = iterator.arabicForms(); 125 ASSERT(int(run.charactersLength()) >= currentCharacter); 126 127 // Associate text with arabic forms, if needed. 128 String remainingTextInRun(run.data(currentCharacter), run.charactersLength() - currentCharacter); 129 remainingTextInRun = Font::normalizeSpaces(remainingTextInRun.characters(), remainingTextInRun.length()); 130 if (!currentCharacter && arabicForms.isEmpty()) 131 arabicForms = charactersWithArabicForm(remainingTextInRun, mirror); 132 133 SVGFontFaceElement* svgFontFaceElement = this->svgFontFaceElement(); 134 ASSERT(svgFontFaceElement); 135 136 SVGFontElement* associatedFontElement = svgFontFaceElement->associatedFontElement(); 137 ASSERT(associatedFontElement); 138 139 RenderObject* renderObject = 0; 140 if (TextRun::RenderingContext* renderingContext = run.renderingContext()) 141 renderObject = static_cast<SVGTextRunRenderingContext*>(renderingContext)->renderer(); 142 143 String language; 144 bool isVerticalText = false; 145 String altGlyphName; 146 147 if (renderObject) { 148 RenderObject* parentRenderObject = renderObject->isText() ? renderObject->parent() : renderObject; 149 ASSERT(parentRenderObject); 150 151 isVerticalText = parentRenderObject->style()->svgStyle()->isVerticalWritingMode(); 152 if (Element* parentRenderObjectElement = toElement(parentRenderObject->node())) { 153 language = parentRenderObjectElement->getAttribute(XMLNames::langAttr); 154 155 if (parentRenderObjectElement->hasTagName(SVGNames::altGlyphTag)) { 156 SVGAltGlyphElement* altGlyph = static_cast<SVGAltGlyphElement*>(parentRenderObjectElement); 157 if (!altGlyph->hasValidGlyphElement(altGlyphName)) 158 altGlyphName = emptyString(); 159 } 160 } 161 } 162 163 Vector<SVGGlyph> glyphs; 164 if (!altGlyphName.isEmpty()) { 165 associatedFontElement->collectGlyphsForGlyphName(altGlyphName, glyphs); 166 167 // Assign the unicodeStringLength now that its known. 168 size_t glyphsSize = glyphs.size(); 169 for (size_t i = 0; i < glyphsSize; ++i) 170 glyphs[i].unicodeStringLength = run.length(); 171 } else 172 associatedFontElement->collectGlyphsForString(remainingTextInRun, glyphs); 173 174 size_t glyphsSize = glyphs.size(); 175 for (size_t i = 0; i < glyphsSize; ++i) { 176 SVGGlyph& svgGlyph = glyphs[i]; 177 if (svgGlyph.isPartOfLigature) 178 continue; 179 if (!isCompatibleGlyph(svgGlyph, isVerticalText, language, arabicForms, currentCharacter, currentCharacter + svgGlyph.unicodeStringLength)) 180 continue; 181 iterator.setLastGlyphName(svgGlyph.glyphName); 182 glyphData.glyph = svgGlyph.tableEntry; 183 advanceLength = svgGlyph.unicodeStringLength; 184 return true; 185 } 186 187 iterator.setLastGlyphName(String()); 188 return false; 189 } 190 191 bool SVGFontData::fillSVGGlyphPage(GlyphPage* pageToFill, unsigned offset, unsigned length, UChar* buffer, unsigned bufferLength, const SimpleFontData* fontData) const 192 { 193 // bufferLength will be greater than the requested number of glyphs if the buffer contains surrogate pairs. 194 // We won't support this for now. 195 if (bufferLength > length) 196 return false; 197 198 ASSERT(fontData->isCustomFont()); 199 ASSERT(fontData->isSVGFont()); 200 201 SVGFontFaceElement* fontFaceElement = this->svgFontFaceElement(); 202 ASSERT(fontFaceElement); 203 204 SVGFontElement* fontElement = fontFaceElement->associatedFontElement(); 205 ASSERT(fontElement); 206 207 bool haveGlyphs = false; 208 Vector<SVGGlyph> glyphs; 209 for (unsigned i = 0; i < length; ++i) { 210 String lookupString(buffer + i, 1); 211 fontElement->collectGlyphsForString(lookupString, glyphs); 212 if (glyphs.isEmpty()) { 213 pageToFill->setGlyphDataForIndex(offset + i, 0, 0); 214 continue; 215 } 216 217 // Associate entry in glyph page with first valid SVGGlyph. 218 // If there are multiple valid ones, just take the first one. WidthIterator will take 219 // care of matching to the correct glyph, if multiple ones are available, as that's 220 // only possible within the context of a string (eg. arabic form matching). 221 haveGlyphs = true; 222 pageToFill->setGlyphDataForIndex(offset + i, glyphs.first().tableEntry, fontData); 223 glyphs.clear(); 224 } 225 226 return haveGlyphs; 91 GlyphData missingGlyphData; 92 missingGlyphData.fontData = fontData; 93 missingGlyphData.glyph = 0; 94 fontData->setMissingGlyphData(missingGlyphData); 227 95 } 228 96 -
trunk/Source/WebCore/svg/SVGFontData.h
r89233 r89311 36 36 virtual ~SVGFontData() { } 37 37 38 virtual void initializeFontData(SimpleFontData*, float fontSize); 39 virtual float widthForSVGGlyph(Glyph, float fontSize) const; 40 virtual bool fillSVGGlyphPage(GlyphPage*, unsigned offset, unsigned length, UChar* buffer, unsigned bufferLength, const SimpleFontData*) const; 41 virtual bool applySVGGlyphSelection(WidthIterator&, GlyphData&, bool mirror, int currentCharacter, unsigned& advanceLength) const; 38 virtual void initializeFontData(SimpleFontData*, int size); 42 39 43 40 SVGFontFaceElement* svgFontFaceElement() const { return m_svgFontFaceElement; } -
trunk/Source/WebCore/svg/SVGFontElement.cpp
r89233 r89311 112 112 // This glyph is never meant to be used for rendering, only as identifier as a part of a ligature. 113 113 SVGGlyph newGlyphPart; 114 /* FIXME: Enable this once with the next patch. 114 115 newGlyphPart.isPartOfLigature = true; 116 */ 115 117 m_glyphMap.addGlyphByUnicodeString(lookupString, newGlyphPart); 116 118 } … … 153 155 } 154 156 155 // Register each character of each ligature, if needed. 157 /* FIXME: Register each character of each ligature, if needed. 158 This is not needed yet, turn it on with the next patch. With the current SVG Fonts code it would break fonts-glyph-04-t.svg 156 159 if (!ligatures.isEmpty()) 157 160 registerLigaturesInGlyphCache(ligatures); 161 */ 158 162 159 163 // Register missing-glyph element, if present. -
trunk/Source/WebCore/svg/SVGGlyphMap.h
r89233 r89311 73 73 svgGlyph.priority = m_currentPriority++; 74 74 svgGlyph.unicodeStringLength = len; 75 svgGlyph.isValid = true; 75 76 appendToGlyphTable(svgGlyph); 76 77 } -
trunk/Source/WebCore/svg/svgtags.in
r89233 r89311 105 105 use 106 106 view 107 #if ENABLE_SVG_FONTS108 107 vkern interfaceName=SVGVKernElement 109 #endif
Note: See TracChangeset
for help on using the changeset viewer.