Reviewed by Eric. Older parts reviewed by Dan.
authorzimmermann@webkit.org <zimmermann@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 21 Jan 2008 22:56:53 +0000 (22:56 +0000)
committerzimmermann@webkit.org <zimmermann@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 21 Jan 2008 22:56:53 +0000 (22:56 +0000)
Fixes: http://bugs.webkit.org/show_bug.cgi?id=16880 (SVGCSSFontFace should die, instead integrate within the FontCache.)
Fixes: http://bugs.webkit.org/show_bug.cgi?id=16784 (In-document fonts work only as the first child to font-face-src)
Proper integration of SVG Fonts within the existing custom font concept, removing the need for a custom SVGCSSFontFace.
Integrate within the CSSFontFaceSource logic for caching support, as well as the framework for external SVG Fonts.

Proper handling of missing glyphs, using <missing-glyph> element. If that is not specified in a font, fallback to non-SVG font rendering.

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

94 files changed:
LayoutTests/ChangeLog
LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-24-t-expected.txt
LayoutTests/platform/mac/svg/W3C-SVG-1.1/fonts-elem-01-t-expected.txt
LayoutTests/platform/mac/svg/W3C-SVG-1.1/fonts-elem-02-t-expected.txt
LayoutTests/platform/mac/svg/W3C-SVG-1.1/fonts-elem-05-t-expected.txt
LayoutTests/platform/mac/svg/W3C-SVG-1.1/fonts-elem-06-t-expected.txt
LayoutTests/platform/mac/svg/W3C-SVG-1.1/fonts-glyph-02-t-expected.txt
LayoutTests/platform/mac/svg/W3C-SVG-1.1/fonts-glyph-03-t-expected.checksum
LayoutTests/platform/mac/svg/W3C-SVG-1.1/fonts-glyph-03-t-expected.png
LayoutTests/platform/mac/svg/W3C-SVG-1.1/fonts-glyph-03-t-expected.txt
LayoutTests/platform/mac/svg/W3C-SVG-1.1/fonts-glyph-04-t-expected.txt
LayoutTests/platform/mac/svg/W3C-SVG-1.1/fonts-kern-01-t-expected.txt
LayoutTests/platform/mac/svg/W3C-SVG-1.1/masking-mask-01-b-expected.txt
LayoutTests/platform/mac/svg/W3C-SVG-1.1/pservers-grad-08-b-expected.checksum
LayoutTests/platform/mac/svg/W3C-SVG-1.1/pservers-grad-08-b-expected.png
LayoutTests/platform/mac/svg/W3C-SVG-1.1/pservers-grad-08-b-expected.txt
LayoutTests/platform/mac/svg/W3C-SVG-1.1/render-elems-06-t-expected.txt
LayoutTests/platform/mac/svg/W3C-SVG-1.1/render-elems-07-t-expected.txt
LayoutTests/platform/mac/svg/W3C-SVG-1.1/render-elems-08-t-expected.txt
LayoutTests/platform/mac/svg/W3C-SVG-1.1/render-groups-01-b-expected.txt
LayoutTests/platform/mac/svg/W3C-SVG-1.1/render-groups-03-t-expected.txt
LayoutTests/platform/mac/svg/W3C-SVG-1.1/text-altglyph-01-b-expected.txt
LayoutTests/platform/mac/svg/W3C-SVG-1.1/text-text-04-t-expected.txt
LayoutTests/platform/mac/svg/W3C-SVG-1.1/text-text-05-t-expected.txt
LayoutTests/platform/mac/svg/W3C-SVG-1.1/text-text-06-t-expected.checksum
LayoutTests/platform/mac/svg/W3C-SVG-1.1/text-text-06-t-expected.png
LayoutTests/platform/mac/svg/W3C-SVG-1.1/text-text-06-t-expected.txt
LayoutTests/platform/mac/svg/batik/text/textEffect-expected.checksum
LayoutTests/platform/mac/svg/batik/text/textEffect-expected.png
LayoutTests/platform/mac/svg/batik/text/textEffect-expected.txt
LayoutTests/platform/mac/svg/batik/text/textEffect3-expected.checksum
LayoutTests/platform/mac/svg/batik/text/textEffect3-expected.png
LayoutTests/platform/mac/svg/batik/text/textEffect3-expected.txt
LayoutTests/platform/mac/svg/batik/text/textPosition2-expected.txt
LayoutTests/platform/mac/svg/custom/dominant-baseline-hanging-expected.checksum
LayoutTests/platform/mac/svg/custom/dominant-baseline-hanging-expected.png
LayoutTests/platform/mac/svg/custom/glyph-selection-lang-attribute-expected.checksum [new file with mode: 0644]
LayoutTests/platform/mac/svg/custom/glyph-selection-lang-attribute-expected.png [new file with mode: 0644]
LayoutTests/platform/mac/svg/custom/glyph-selection-lang-attribute-expected.txt [new file with mode: 0644]
LayoutTests/platform/mac/svg/custom/scrolling-embedded-svg-file-image-repaint-problem-expected.txt
LayoutTests/platform/mac/svg/custom/use-on-g-containing-foreignObject-and-image-expected.checksum
LayoutTests/platform/mac/svg/custom/use-on-g-containing-foreignObject-and-image-expected.png
LayoutTests/platform/mac/svg/hixie/mixed/008-expected.checksum
LayoutTests/platform/mac/svg/hixie/mixed/008-expected.png
LayoutTests/platform/mac/svg/hixie/mixed/009-expected.checksum
LayoutTests/platform/mac/svg/hixie/mixed/009-expected.png
LayoutTests/platform/mac/svg/hixie/viewbox/preserveAspectRatio/001-expected.checksum
LayoutTests/platform/mac/svg/hixie/viewbox/preserveAspectRatio/001-expected.png
LayoutTests/platform/mac/svg/text/text-altglyph-01-b-expected.checksum
LayoutTests/platform/mac/svg/text/text-altglyph-01-b-expected.png
LayoutTests/platform/mac/svg/text/text-altglyph-01-b-expected.txt
LayoutTests/platform/mac/svg/text/text-text-04-t-expected.checksum
LayoutTests/platform/mac/svg/text/text-text-04-t-expected.png
LayoutTests/platform/mac/svg/text/text-text-04-t-expected.txt
LayoutTests/platform/mac/svg/text/text-text-05-t-expected.checksum
LayoutTests/platform/mac/svg/text/text-text-05-t-expected.png
LayoutTests/platform/mac/svg/text/text-text-05-t-expected.txt
LayoutTests/platform/mac/svg/text/text-text-06-t-expected.checksum
LayoutTests/platform/mac/svg/text/text-text-06-t-expected.png
LayoutTests/platform/mac/svg/text/text-text-06-t-expected.txt
LayoutTests/svg/custom/glyph-selection-lang-attribute.svg [new file with mode: 0644]
WebCore/ChangeLog
WebCore/GNUmakefile.am
WebCore/WebCore.pro
WebCore/WebCore.vcproj/WebCore.vcproj
WebCore/WebCore.xcodeproj/project.pbxproj
WebCore/css/CSSFontFaceSource.cpp
WebCore/css/CSSFontFaceSource.h
WebCore/css/CSSFontFaceSrcValue.h
WebCore/css/CSSFontSelector.cpp
WebCore/css/SVGCSSFontFace.cpp [deleted file]
WebCore/css/SVGCSSFontFace.h [deleted file]
WebCore/platform/graphics/Font.cpp
WebCore/platform/graphics/Font.h
WebCore/platform/graphics/FontData.h
WebCore/platform/graphics/SegmentedFontData.cpp
WebCore/platform/graphics/SegmentedFontData.h
WebCore/platform/graphics/SimpleFontData.cpp
WebCore/platform/graphics/SimpleFontData.h
WebCore/platform/graphics/gtk/FontPlatformData.h
WebCore/platform/graphics/gtk/FontPlatformDataGtk.cpp
WebCore/platform/graphics/mac/FontPlatformData.h
WebCore/platform/graphics/win/FontPlatformData.h
WebCore/platform/graphics/win/FontPlatformDataWin.cpp
WebCore/rendering/RenderSVGText.cpp
WebCore/svg/SVGFont.cpp
WebCore/svg/SVGFontData.cpp [new file with mode: 0644]
WebCore/svg/SVGFontData.h [new file with mode: 0644]
WebCore/svg/SVGFontFaceElement.cpp
WebCore/svg/SVGFontFaceElement.h
WebCore/svg/SVGGlyphElement.cpp
WebCore/svg/SVGGlyphElement.h
WebCore/svg/SVGMissingGlyphElement.cpp
WebCore/svg/svgattrs.in

index b0943864ab7c4a8172d4d277858ca83d3415056b..5324a0a02d67621d8189317a319c236b6f2e2fa3 100644 (file)
@@ -1,3 +1,71 @@
+2008-01-21  Nikolas Zimmermann  <zimmermann@kde.org>
+
+        Reviewed by Eric.
+
+        Update layout test results after adding missing-glyph support.
+        Add new layout test svg/custom/glyph-selection-lang-attribute.svg.
+
+        * platform/mac/svg/W3C-SVG-1.1/animate-elem-24-t-expected.txt:
+        * platform/mac/svg/W3C-SVG-1.1/fonts-elem-01-t-expected.txt:
+        * platform/mac/svg/W3C-SVG-1.1/fonts-elem-02-t-expected.txt:
+        * platform/mac/svg/W3C-SVG-1.1/fonts-elem-05-t-expected.txt:
+        * platform/mac/svg/W3C-SVG-1.1/fonts-elem-06-t-expected.txt:
+        * platform/mac/svg/W3C-SVG-1.1/fonts-glyph-02-t-expected.txt:
+        * platform/mac/svg/W3C-SVG-1.1/fonts-glyph-03-t-expected.checksum:
+        * platform/mac/svg/W3C-SVG-1.1/fonts-glyph-03-t-expected.png:
+        * platform/mac/svg/W3C-SVG-1.1/fonts-glyph-03-t-expected.txt:
+        * platform/mac/svg/W3C-SVG-1.1/fonts-glyph-04-t-expected.txt:
+        * platform/mac/svg/W3C-SVG-1.1/fonts-kern-01-t-expected.txt:
+        * platform/mac/svg/W3C-SVG-1.1/masking-mask-01-b-expected.txt:
+        * platform/mac/svg/W3C-SVG-1.1/pservers-grad-08-b-expected.checksum:
+        * platform/mac/svg/W3C-SVG-1.1/pservers-grad-08-b-expected.png:
+        * platform/mac/svg/W3C-SVG-1.1/pservers-grad-08-b-expected.txt:
+        * platform/mac/svg/W3C-SVG-1.1/render-elems-06-t-expected.txt:
+        * platform/mac/svg/W3C-SVG-1.1/render-elems-07-t-expected.txt:
+        * platform/mac/svg/W3C-SVG-1.1/render-elems-08-t-expected.txt:
+        * platform/mac/svg/W3C-SVG-1.1/render-groups-01-b-expected.txt:
+        * platform/mac/svg/W3C-SVG-1.1/render-groups-03-t-expected.txt:
+        * platform/mac/svg/W3C-SVG-1.1/text-altglyph-01-b-expected.txt:
+        * platform/mac/svg/W3C-SVG-1.1/text-text-04-t-expected.txt:
+        * platform/mac/svg/W3C-SVG-1.1/text-text-05-t-expected.txt:
+        * platform/mac/svg/W3C-SVG-1.1/text-text-06-t-expected.checksum:
+        * platform/mac/svg/W3C-SVG-1.1/text-text-06-t-expected.png:
+        * platform/mac/svg/W3C-SVG-1.1/text-text-06-t-expected.txt:
+        * platform/mac/svg/batik/text/textEffect-expected.checksum:
+        * platform/mac/svg/batik/text/textEffect-expected.png:
+        * platform/mac/svg/batik/text/textEffect-expected.txt:
+        * platform/mac/svg/batik/text/textEffect3-expected.checksum:
+        * platform/mac/svg/batik/text/textEffect3-expected.png:
+        * platform/mac/svg/batik/text/textEffect3-expected.txt:
+        * platform/mac/svg/batik/text/textPosition2-expected.txt:
+        * platform/mac/svg/custom/dominant-baseline-hanging-expected.checksum:
+        * platform/mac/svg/custom/dominant-baseline-hanging-expected.png:
+        * platform/mac/svg/custom/glyph-selection-lang-attribute-expected.checksum: Added.
+        * platform/mac/svg/custom/glyph-selection-lang-attribute-expected.png: Added.
+        * platform/mac/svg/custom/glyph-selection-lang-attribute-expected.txt: Added.
+        * platform/mac/svg/custom/scrolling-embedded-svg-file-image-repaint-problem-expected.txt:
+        * platform/mac/svg/custom/use-on-g-containing-foreignObject-and-image-expected.checksum:
+        * platform/mac/svg/custom/use-on-g-containing-foreignObject-and-image-expected.png:
+        * platform/mac/svg/hixie/mixed/008-expected.checksum:
+        * platform/mac/svg/hixie/mixed/008-expected.png:
+        * platform/mac/svg/hixie/mixed/009-expected.checksum:
+        * platform/mac/svg/hixie/mixed/009-expected.png:
+        * platform/mac/svg/hixie/viewbox/preserveAspectRatio/001-expected.checksum:
+        * platform/mac/svg/hixie/viewbox/preserveAspectRatio/001-expected.png:
+        * platform/mac/svg/text/text-altglyph-01-b-expected.checksum:
+        * platform/mac/svg/text/text-altglyph-01-b-expected.png:
+        * platform/mac/svg/text/text-altglyph-01-b-expected.txt:
+        * platform/mac/svg/text/text-text-04-t-expected.checksum:
+        * platform/mac/svg/text/text-text-04-t-expected.png:
+        * platform/mac/svg/text/text-text-04-t-expected.txt:
+        * platform/mac/svg/text/text-text-05-t-expected.checksum:
+        * platform/mac/svg/text/text-text-05-t-expected.png:
+        * platform/mac/svg/text/text-text-05-t-expected.txt:
+        * platform/mac/svg/text/text-text-06-t-expected.checksum:
+        * platform/mac/svg/text/text-text-06-t-expected.png:
+        * platform/mac/svg/text/text-text-06-t-expected.txt:
+        * svg/custom/glyph-selection-lang-attribute.svg: Added.
+
 2008-01-21  Nikolas Zimmermann  <zimmermann@kde.org>
 
         Rubber stamped by Oliver.
index 9346cbb33d38b3da49218d35fa4f4adf796355d4..718c8dcedbd11cf98e656fd87f5173bdb47d51ce 100644 (file)
@@ -3,7 +3,7 @@ layer at (0,0) size 480x360
 layer at (0,0) size 480x360
   RenderSVGRoot {svg} at (0.50,0.50) size 479x359
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-    RenderSVGContainer {g} at (43,39.38) size 288x237.62
+    RenderSVGContainer {g} at (42,37.64) size 289x244.36
       RenderSVGContainer {g} at (70,92) size 149x133
         RenderSVGText {text} at (70,110) size 149x23 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-18) size 149x23
@@ -14,19 +14,19 @@ layer at (0,0) size 480x360
         RenderSVGText {text} at (100,220) size 80x23 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-18) size 80x23
             chunk 1 text run 1 at (100.00,220.00) startOffset 0 endOffset 10 width 80.00: "Text at 9s"
-      RenderSVGContainer {g} at (43,39.38) size 288x237.62
-        RenderSVGText {text} at (0,0) size 77x16 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,-14) size 77x16
+      RenderSVGContainer {g} at (42,37.64) size 289x244.36
+        RenderSVGText {text} at (0,0) size 77x20 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,-16) size 77x20
             chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 11 width 76.84: "It's alive!"
-        RenderSVGText {text} at (0,0) size 154x33 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,-28) size 154x33
+        RenderSVGText {text} at (0,0) size 154x40 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,-32) size 154x40
             chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 11 width 153.68: "It's alive!"
-        RenderSVGText {text} at (100,270) size 231x49 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,-42) size 231x49
+        RenderSVGText {text} at (100,270) size 231x60 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,-48) size 231x60
             chunk 1 text run 1 at (100.00,270.00) startOffset 0 endOffset 11 width 230.52: "It's alive!"
-      RenderSVGContainer {g} at (43,39.38) size 74.68x52.36 [transform={m=((1.00,0.00)(0.00,1.00)) t=(50.00,90.00)}]
-        RenderSVGText {text} at (0,0) size 77x16 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,-14) size 77x16
+      RenderSVGContainer {g} at (42,37.64) size 76.68x55.82 [transform={m=((1.00,0.00)(0.00,1.00)) t=(50.00,90.00)}]
+        RenderSVGText {text} at (0,0) size 77x20 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,-16) size 77x20
             chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 11 width 76.84: "It's alive!"
           RenderSVGInlineText {#text} at (0,0) size 0x0
           RenderSVGInlineText {#text} at (0,0) size 0x0
index ed35effd82d7e356ce4953d47a3892f3a0fca607..5960308aeb23ae130f9e9ebba19188aaaf50ebcd 100644 (file)
@@ -28,10 +28,10 @@ layer at (0,0) size 480x360
       RenderSVGText {text} at (65,210) size 74x22 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,-17) size 74x22
           chunk 1 text run 1 at (65.00,210.00) startOffset 0 endOffset 8 width 74.00: "SVG Font"
-      RenderSVGContainer {g} at (165,154) size 210x83 [transform={m=((1.00,0.00)(0.00,1.00)) t=(165.00,220.00)}]
+      RenderSVGContainer {g} at (165,172) size 210x60 [transform={m=((1.00,0.00)(0.00,1.00)) t=(165.00,220.00)}]
         RenderPath {line} at (165,219.50) size 210x1 [stroke={[type=SOLID] [color=#888888]}] [fill={[type=SOLID] [color=#000000]}] [data="M0.00,0.00L210.00,0.00"]
-        RenderSVGText {text} at (0,0) size 210x83 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,-66) size 210x83
+        RenderSVGText {text} at (0,0) size 210x60 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,-48) size 210x60
             chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 5 width 209.71: "Ay\x{D6}@\x{E7}"
     RenderSVGText {text} at (10,340) size 264x46 contains 1 chunk(s)
       RenderSVGInlineText {#text} at (0,-36) size 264x46
index 962866b3eb1155813a281035b3786b155278b240..e611808c230d9da06258f82ea01eb77a242be145 100644 (file)
@@ -18,16 +18,16 @@ layer at (0,0) size 480x360
           RenderPath {path} at (243.52,85.62) size 41.95x56.16 [transform={m=((1.00,0.00)(0.00,1.00)) t=(2564.00,0.00)}] [fill={[type=SOLID] [color=#FFFFFF]}] [data="M802.00,-61.00C614.00,-61.00,454.67,-4.67,324.00,108.00C185.33,228.00,116.00,382.67,116.00,572.00C116.00,802.67,184.33,1012.33,321.00,1201.00C473.67,1410.33,664.00,1515.00,892.00,1515.00C1111.33,1515.00,1274.33,1465.67,1381.00,1367.00C1492.33,1264.33,1548.00,1102.33,1548.00,881.00C1548.00,650.33,1485.33,442.33,1360.00,257.00C1216.00,45.00,1030.00,-61.00,802.00,-61.00M892.00,1310.00C728.67,1310.00,590.33,1228.67,477.00,1066.00C372.33,916.67,320.00,752.00,320.00,572.00C320.00,443.33,367.67,338.67,463.00,258.00C554.33,182.00,667.33,144.00,802.00,144.00C964.00,144.00,1097.67,225.67,1203.00,389.00C1297.00,535.00,1344.00,699.00,1344.00,881.00C1344.00,1040.33,1308.33,1152.33,1237.00,1217.00C1169.00,1279.00,1054.00,1310.00,892.00,1310.00M682.00,1848.00C769.33,1848.00,813.00,1813.00,813.00,1743.00C813.00,1723.00,798.33,1703.67,769.00,1685.00C742.33,1668.33,717.33,1660.00,694.00,1660.00C612.00,1660.00,571.00,1694.33,571.00,1763.00C571.00,1782.33,583.33,1801.33,608.00,1820.00C632.67,1838.67,657.33,1848.00,682.00,1848.00M1221.00,1856.00C1243.67,1856.00,1266.67,1845.67,1290.00,1825.00C1313.33,1804.33,1325.00,1783.67,1325.00,1763.00C1325.00,1701.67,1277.33,1671.00,1182.00,1671.00C1154.67,1671.00,1130.33,1678.00,1109.00,1692.00C1085.00,1708.00,1073.00,1729.00,1073.00,1755.00C1073.00,1801.00,1088.00,1830.67,1118.00,1844.00C1134.67,1852.00,1169.00,1856.00,1221.00,1856.00"]
           RenderPath {path} at (291.24,92.25) size 48.13x51.86 [transform={m=((1.00,0.00)(0.00,1.00)) t=(4199.00,0.00)}] [fill={[type=SOLID] [color=#FFFFFF]}] [data="M1306.00,412.00C1235.33,412.00,1174.33,422.33,1123.00,443.00C1071.67,463.67,1030.33,494.33,999.00,535.00C963.00,499.67,928.00,473.00,894.00,455.00C860.00,437.00,826.33,428.00,793.00,428.00C719.00,428.00,649.33,458.00,584.00,518.00C518.67,578.00,485.67,644.33,485.00,717.00C485.00,840.33,533.33,953.00,630.00,1055.00C726.67,1157.00,837.00,1208.00,961.00,1208.00C989.00,1208.00,1012.33,1197.67,1031.00,1177.00C1049.67,1156.33,1059.00,1131.33,1059.00,1102.00C1059.00,1062.00,1025.67,1032.33,959.00,1013.00C870.33,987.67,807.67,958.67,771.00,926.00C717.00,878.67,690.00,809.00,690.00,717.00C690.00,697.67,699.00,679.00,717.00,661.00C737.67,641.00,763.33,631.67,794.00,633.00C852.00,635.67,905.67,689.67,955.00,795.00C999.67,887.00,1039.33,933.00,1074.00,933.00C1102.00,933.00,1124.67,922.67,1142.00,902.00C1159.33,881.33,1168.00,856.00,1168.00,826.00C1168.00,812.67,1166.00,792.67,1162.00,766.00C1158.00,739.33,1155.67,719.33,1155.00,706.00C1155.00,662.67,1173.67,635.33,1211.00,624.00C1225.67,619.33,1257.33,617.00,1306.00,617.00C1397.33,617.00,1461.33,639.33,1498.00,684.00C1531.33,724.00,1548.00,790.33,1548.00,883.00C1548.00,1046.33,1482.33,1179.67,1351.00,1283.00C1231.00,1377.67,1087.67,1425.00,921.00,1425.00C727.00,1425.00,575.00,1351.67,465.00,1205.00C365.67,1074.33,316.00,910.00,316.00,712.00C316.00,529.33,374.33,375.33,491.00,250.00C612.33,119.33,768.33,54.00,959.00,54.00C1013.00,54.00,1074.00,64.33,1142.00,85.00L1317.00,150.00C1346.33,160.67,1365.33,166.00,1374.00,166.00C1401.33,166.00,1425.00,155.33,1445.00,134.00C1465.00,112.67,1475.00,87.33,1475.00,58.00C1475.00,-5.33,1404.00,-56.67,1262.00,-96.00C1154.67,-125.33,1054.33,-140.00,961.00,-140.00C867.00,-140.00,771.00,-122.00,673.00,-86.00C575.00,-50.00,490.67,-1.33,420.00,60.00C213.33,238.67,110.00,456.00,110.00,712.00C110.00,968.00,180.67,1182.00,322.00,1354.00C472.00,1538.00,671.67,1630.00,921.00,1630.00C1146.33,1630.00,1339.33,1562.33,1500.00,1427.00C1668.67,1283.67,1753.00,1102.33,1753.00,883.00C1753.00,733.00,1716.33,617.67,1643.00,537.00C1566.33,453.67,1454.00,412.00,1306.00,412.00"]
           RenderPath {path} at (346.96,108.86) size 25.31x44.18 [transform={m=((1.00,0.00)(0.00,1.00)) t=(6106.00,0.00)}] [fill={[type=SOLID] [color=#FFFFFF]}] [data="M770.00,-196.00C770.00,-278.67,750.00,-340.67,710.00,-382.00C670.00,-423.33,609.33,-444.33,528.00,-445.00C471.33,-445.00,417.67,-434.33,367.00,-413.00C303.00,-385.00,271.00,-346.67,271.00,-298.00C271.00,-262.00,293.67,-244.00,339.00,-244.00C363.00,-244.00,390.00,-252.00,420.00,-268.00C450.00,-284.00,482.33,-292.33,517.00,-293.00C549.67,-292.33,574.00,-284.33,590.00,-269.00C606.00,-253.67,614.00,-231.00,614.00,-201.00C614.00,-169.00,601.67,-140.33,577.00,-115.00C552.33,-89.67,514.33,-67.33,463.00,-48.00C357.00,-24.00,272.00,26.67,208.00,104.00C139.33,186.00,105.00,286.00,105.00,404.00C105.00,539.33,150.00,679.00,240.00,823.00C340.00,983.00,452.67,1063.00,578.00,1063.00C643.33,1063.00,716.33,1047.67,797.00,1017.00C899.00,977.67,950.00,929.67,950.00,873.00C950.00,847.67,941.67,825.33,925.00,806.00C908.33,786.67,887.67,776.67,863.00,776.00C843.67,776.00,827.00,781.67,813.00,793.00C799.00,804.33,785.00,816.00,771.00,828.00C731.67,859.33,667.33,875.00,578.00,875.00C510.00,875.00,442.67,814.33,376.00,693.00C315.33,581.67,285.00,485.33,285.00,404.00C285.00,316.00,315.00,246.67,375.00,196.00C431.00,148.67,503.00,125.00,591.00,125.00C631.00,125.00,673.67,135.67,719.00,157.00L835.00,219.00C855.00,229.67,869.33,235.00,878.00,235.00C902.67,235.00,924.00,225.33,942.00,206.00C960.00,186.67,969.00,164.00,969.00,138.00C969.00,69.33,883.67,10.00,713.00,-40.00C732.33,-65.33,746.67,-91.00,756.00,-117.00C765.33,-143.00,770.00,-169.33,770.00,-196.00"]
-      RenderSVGContainer {g} at (165,74) size 210x83 [transform={m=((1.00,0.00)(0.00,1.00)) t=(165.00,140.00)}]
-        RenderSVGText {text} at (0,0) size 210x83 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,-66) size 210x83
+      RenderSVGContainer {g} at (165,92) size 210x60 [transform={m=((1.00,0.00)(0.00,1.00)) t=(165.00,140.00)}]
+        RenderSVGText {text} at (0,0) size 210x60 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,-48) size 210x60
             chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 5 width 209.71: "Ay\x{D6}@\x{E7}"
       RenderSVGText {text} at (7,210) size 130x22 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,-17) size 130x22
           chunk 1 text run 1 at (7.00,210.00) startOffset 0 endOffset 15 width 130.00: "Glyphs over SVG"
-      RenderSVGContainer {g} at (165,144) size 210x83 [transform={m=((1.00,0.00)(0.00,1.00)) t=(165.00,210.00)}]
-        RenderSVGText {text} at (0,0) size 210x83 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,-66) size 210x83
+      RenderSVGContainer {g} at (165,162) size 210x60 [transform={m=((1.00,0.00)(0.00,1.00)) t=(165.00,210.00)}]
+        RenderSVGText {text} at (0,0) size 210x60 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,-48) size 210x60
             chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 5 width 209.71: "Ay\x{D6}@\x{E7}"
       RenderSVGContainer {g} at (168.84,155.62) size 203.44x71.34 [transform={m=((1.00,0.00)(-0.00,-1.00)) t=(165.00,210.00)}]
         RenderSVGContainer {g} at (168.84,155.62) size 203.44x71.34 [transform={m=((0.03,0.00)(0.00,0.03)) t=(0.00,0.00)}]
index 533c9bd9a7b9da5b386973424e3341734d411312..9e4d8de30af020621fedf1445defd2c4f1663d61 100644 (file)
@@ -2,7 +2,7 @@ layer at (0,0) size 480x360
   RenderView at (0,0) size 480x360
 layer at (0,0) size 480x360
   RenderSVGRoot {svg} at (0.50,0.50) size 479x359
-    RenderSVGContainer {g} at (20,22) size 420x222
+    RenderSVGContainer {g} at (20,22) size 420x224
       RenderSVGText {text} at (111,50) size 258x36 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,-28) size 258x36
           chunk 1 (middle anchor) text run 1 at (111.50,50.00) startOffset 0 endOffset 21 width 257.00: "<font> horiz-origin-x"
@@ -20,8 +20,8 @@ layer at (0,0) size 480x360
           RenderPath {line} at (29.50,-40) size 1x40 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#000000]}] [data="M30.00,0.00L30.00,-40.00"]
           RenderPath {line} at (0,-0.50) size 30x1 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#000000]}] [data="M0.00,0.00L30.00,0.00"]
           RenderPath {rect} at (-4,-4) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-      RenderSVGContainer {g} at (20,80) size 420x164 [transform={m=((1.00,0.00)(0.00,1.00)) t=(20.00,120.00)}]
-        RenderSVGContainer {g} at (20,80) size 420x44
+      RenderSVGContainer {g} at (20,80) size 420x166 [transform={m=((1.00,0.00)(0.00,1.00)) t=(20.00,120.00)}]
+        RenderSVGContainer {g} at (20,80) size 420x46
           RenderSVGText {text} at (0,0) size 169x17 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,-13) size 169x17
               chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 30 width 169.00: "horiz-origin-x unspecified (0)"
@@ -46,9 +46,9 @@ layer at (0,0) size 480x360
                 RenderPath {line} at (394.50,80) size 1x40 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#000000]}] [data="M0.00,0.00L0.00,-40.00"]
                 RenderPath {rect} at (391,116) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
           RenderSVGText {text} at (240,0) size 180x30 contains 1 chunk(s)
-            RenderSVGInlineText {#text} at (0,-30) size 180x30
+            RenderSVGInlineText {#text} at (0,-24) size 180x30
               chunk 1 text run 1 at (240.00,0.00) startOffset 0 endOffset 4 width 180.00: "1234"
-        RenderSVGContainer {g} at (20,140) size 420x44 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,60.00)}]
+        RenderSVGContainer {g} at (20,140) size 420x46 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,60.00)}]
           RenderSVGText {text} at (0,0) size 109x17 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,-13) size 109x17
               chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 18 width 109.00: "horiz-origin-x=500"
@@ -81,9 +81,9 @@ layer at (0,0) size 480x360
                 RenderPath {line} at (395,179.50) size 15x1 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#000000]}] [data="M0.00,0.00L15.00,0.00"]
                 RenderPath {rect} at (391,176) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
           RenderSVGText {text} at (240,0) size 180x30 contains 1 chunk(s)
-            RenderSVGInlineText {#text} at (0,-30) size 180x30
+            RenderSVGInlineText {#text} at (0,-24) size 180x30
               chunk 1 text run 1 at (240.00,0.00) startOffset 0 endOffset 4 width 180.00: "1234"
-        RenderSVGContainer {g} at (20,200) size 420x44 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,120.00)}]
+        RenderSVGContainer {g} at (20,200) size 420x46 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,120.00)}]
           RenderSVGText {text} at (0,0) size 171x17 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,-13) size 171x17
               chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 28 width 171.00: "horiz-adv-x=1000 but ignored"
@@ -116,7 +116,7 @@ layer at (0,0) size 480x360
                 RenderPath {line} at (395,239.50) size 30x1 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#000000]}] [data="M0.00,0.00L30.00,0.00"]
                 RenderPath {rect} at (391,236) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
           RenderSVGText {text} at (240,0) size 180x30 contains 1 chunk(s)
-            RenderSVGInlineText {#text} at (0,-30) size 180x30
+            RenderSVGInlineText {#text} at (0,-24) size 180x30
               chunk 1 text run 1 at (240.00,0.00) startOffset 0 endOffset 4 width 180.00: "1234"
     RenderSVGText {text} at (10,340) size 264x46 contains 1 chunk(s)
       RenderSVGInlineText {#text} at (0,-36) size 264x46
index 3bff5c2c2fc50bc4bb5a58a7beb527b51b54a044..97bb306e31abe7b9f9757f433f72a84daa5f0ee0 100644 (file)
@@ -2,7 +2,7 @@ layer at (0,0) size 480x360
   RenderView at (0,0) size 480x360
 layer at (0,0) size 480x360
   RenderSVGRoot {svg} at (0.50,0.50) size 479x359
-    RenderSVGContainer {g} at (20,22) size 420x182
+    RenderSVGContainer {g} at (20,22) size 420x184
       RenderSVGText {text} at (125,50) size 230x36 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,-28) size 230x36
           chunk 1 (middle anchor) text run 1 at (125.50,50.00) startOffset 0 endOffset 18 width 229.00: "<font> horiz-adv-x"
@@ -10,8 +10,8 @@ layer at (0,0) size 480x360
         RenderSVGContainer {g} at (-4,-20) size 8x24
           RenderPath {line} at (-0.50,-20) size 1x20 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#000000]}] [data="M0.00,0.00L0.00,-20.00"]
           RenderPath {rect} at (-4,-4) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-      RenderSVGContainer {g} at (20,90) size 420x114 [transform={m=((1.00,0.00)(0.00,1.00)) t=(20.00,120.00)}]
-        RenderSVGContainer {g} at (20,90) size 300x34
+      RenderSVGContainer {g} at (20,96) size 420x110 [transform={m=((1.00,0.00)(0.00,1.00)) t=(20.00,120.00)}]
+        RenderSVGContainer {g} at (20,96) size 300x30
           RenderSVGText {text} at (0,0) size 102x17 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,-13) size 102x17
               chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 16 width 102.00: "horiz-adv-x=1000"
@@ -26,9 +26,9 @@ layer at (0,0) size 480x360
                 RenderPath {line} at (289.50,100) size 1x20 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#000000]}] [data="M0.00,0.00L0.00,-20.00"]
                 RenderPath {rect} at (286,116) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
           RenderSVGText {text} at (240,0) size 60x30 contains 1 chunk(s)
-            RenderSVGInlineText {#text} at (0,-30) size 60x30
+            RenderSVGInlineText {#text} at (0,-24) size 60x30
               chunk 1 text run 1 at (240.00,0.00) startOffset 0 endOffset 2 width 60.00: "12"
-        RenderSVGContainer {g} at (20,130) size 360x34 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,40.00)}]
+        RenderSVGContainer {g} at (20,136) size 360x30 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,40.00)}]
           RenderSVGText {text} at (0,0) size 102x17 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,-13) size 102x17
               chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 16 width 102.00: "horiz-adv-x=2000"
@@ -43,9 +43,9 @@ layer at (0,0) size 480x360
                 RenderPath {line} at (319.50,140) size 1x20 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#000000]}] [data="M0.00,0.00L0.00,-20.00"]
                 RenderPath {rect} at (316,156) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
           RenderSVGText {text} at (240,0) size 120x30 contains 1 chunk(s)
-            RenderSVGInlineText {#text} at (0,-30) size 120x30
+            RenderSVGInlineText {#text} at (0,-24) size 120x30
               chunk 1 text run 1 at (240.00,0.00) startOffset 0 endOffset 2 width 120.00: "12"
-        RenderSVGContainer {g} at (20,170) size 420x34 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,80.00)}]
+        RenderSVGContainer {g} at (20,176) size 420x30 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,80.00)}]
           RenderSVGText {text} at (0,0) size 171x17 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,-13) size 171x17
               chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 28 width 171.00: "horiz-adv-x=1000 but ignored"
@@ -60,7 +60,7 @@ layer at (0,0) size 480x360
                 RenderPath {line} at (349.50,180) size 1x20 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#000000]}] [data="M0.00,0.00L0.00,-20.00"]
                 RenderPath {rect} at (346,196) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
           RenderSVGText {text} at (240,0) size 180x30 contains 1 chunk(s)
-            RenderSVGInlineText {#text} at (0,-30) size 180x30
+            RenderSVGInlineText {#text} at (0,-24) size 180x30
               chunk 1 text run 1 at (240.00,0.00) startOffset 0 endOffset 2 width 180.00: "12"
     RenderSVGText {text} at (10,340) size 284x46 contains 1 chunk(s)
       RenderSVGInlineText {#text} at (0,-36) size 284x46
index 16a722f744cc5d5482fa5ee78d9d642882d76859..d7bc56ec2b0bb4f8c5cb55e76af624468c1327f1 100644 (file)
@@ -2,15 +2,15 @@ layer at (0,0) size 480x360
   RenderView at (0,0) size 480x360
 layer at (0,0) size 480x360
   RenderSVGRoot {svg} at (0.50,0.50) size 479x359
-    RenderSVGContainer {g} at (100,36) size 209x195
+    RenderSVGContainer {g} at (100,36) size 209x180
       RenderSVGHiddenContainer {defs} at (0,0) size 0x0
       RenderSVGContainer {g} at (100,36) size 184x80
         RenderSVGText {text} at (100,100) size 184x80 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-64) size 184x80
             chunk 1 text run 1 at (100.00,100.00) startOffset 0 endOffset 5 width 184.00 RTL: "\x{69A} \x{69A}\x{69A}\x{69A}"
-      RenderSVGContainer {g} at (100,118) size 209x113
-        RenderSVGText {text} at (100,200) size 209x113 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,-82) size 209x113
+      RenderSVGContainer {g} at (100,136) size 209x80
+        RenderSVGText {text} at (100,200) size 209x80 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,-64) size 209x80
             chunk 1 text run 1 at (100.00,200.00) startOffset 0 endOffset 5 width 223.92 RTL: "\x{62E} \x{62E}\x{62E}\x{62E}"
     RenderSVGText {text} at (10,340) size 264x46 contains 1 chunk(s)
       RenderSVGInlineText {#text} at (0,-36) size 264x46
index fa3f375ddcd02569538ecf68a313982a22bee1f9..16cca3fd354694152001ef818fff343b6a27463c 100644 (file)
@@ -1 +1 @@
-90e63486ca5ed0fe3343db1aa14e49c9
\ No newline at end of file
+ac8bfa36a14c4fc166e1a8e564e6be8b
\ No newline at end of file
index 3648b83bd0e509e697408c35d0c36b031f993a2f..e54f298ced380b2bce4083d58c9cd601ec7c99b7 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/W3C-SVG-1.1/fonts-glyph-03-t-expected.png and b/LayoutTests/platform/mac/svg/W3C-SVG-1.1/fonts-glyph-03-t-expected.png differ
index 339bd79cc1cfb2da6c9fa61309f61adc49090c30..56cba0cffa64583318c41857722af2367c3a0d2c 100644 (file)
@@ -14,9 +14,9 @@ layer at (0,0) size 480x360
         RenderSVGText {text} at (50,190) size 25x50 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-40) size 25x50
             chunk 1 text run 1 at (50.00,190.00) startOffset 0 endOffset 1 width 25.00: "a"
-        RenderSVGText {text} at (50,260) size 22x50 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,-40) size 22x50
-            chunk 1 text run 1 at (50.00,260.00) startOffset 0 endOffset 1 width 22.00: "a"
+        RenderSVGText {text} at (50,260) size 25x50 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,-40) size 25x50
+            chunk 1 text run 1 at (50.00,260.00) startOffset 0 endOffset 1 width 25.00: "a"
     RenderSVGText {text} at (10,340) size 284x46 contains 1 chunk(s)
       RenderSVGInlineText {#text} at (0,-36) size 284x46
         chunk 1 text run 1 at (10.00,340.00) startOffset 0 endOffset 17 width 284.00: "$Revision: 1.10 $"
index df7d2c00e7bcec40b768f99fa45b08f6db8adcb9..ad78dbc7c92cffc8ac8d547d80921a8b1a69f52d 100644 (file)
@@ -2,13 +2,13 @@ layer at (0,0) size 480x360
   RenderView at (0,0) size 480x360
 layer at (0,0) size 480x360
   RenderSVGRoot {svg} at (0.50,0.50) size 479x359
-    RenderSVGContainer {g} at (100,60) size 64x150
+    RenderSVGContainer {g} at (100,60) size 53x150
       RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-      RenderSVGText {text} at (100,100) size 64x50 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,-40) size 64x50
+      RenderSVGText {text} at (100,100) size 53x50 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,-40) size 53x50
           chunk 1 text run 1 at (100.00,100.00) startOffset 0 endOffset 3 width 25.00: "ffl"
-      RenderSVGText {text} at (100,200) size 64x50 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,-40) size 64x50
+      RenderSVGText {text} at (100,200) size 53x50 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,-40) size 53x50
           chunk 1 text run 1 at (100.00,200.00) startOffset 0 endOffset 3 width 25.00: "ffl"
     RenderSVGText {text} at (10,340) size 284x46 contains 1 chunk(s)
       RenderSVGInlineText {#text} at (0,-36) size 284x46
index 18a6c0210b468dbc5b283235ac782d6fe2a5a632..05fad92958b608dd856839f9adc8a795c43550a4 100644 (file)
@@ -44,8 +44,8 @@ layer at (0,0) size 480x360
                   RenderPath {line} at (59,81) size 2x24 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-12.00"]
                   RenderPath {line} at (60,104) size 24x2 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L12.00,0.00"]
                   RenderPath {rect} at (56,101) size 8x8 [fill={[type=SOLID] [color=#FF0000]}] [data="M-2.00,-2.00L2.00,-2.00L2.00,2.00L-2.00,2.00"]
-            RenderSVGText {text} at (0,0) size 8x11 contains 1 chunk(s)
-              RenderSVGInlineText {#text} at (0,-9) size 8x11
+            RenderSVGText {text} at (0,0) size 8x10 contains 1 chunk(s)
+              RenderSVGInlineText {#text} at (0,-8) size 8x10
                 chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 2 width 7.50: "12"
         RenderSVGContainer {g} at (9.50,114.50) size 221x51 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,55.00)}]
           RenderSVGContainer {g} at (9.50,114.50) size 21x51
@@ -75,8 +75,8 @@ layer at (0,0) size 480x360
                   RenderPath {line} at (79,136) size 2x24 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-12.00"]
                   RenderPath {line} at (80,159) size 24x2 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L12.00,0.00"]
                   RenderPath {rect} at (76,156) size 8x8 [fill={[type=SOLID] [color=#FF0000]}] [data="M-2.00,-2.00L2.00,-2.00L2.00,2.00L-2.00,2.00"]
-            RenderSVGText {text} at (0,0) size 8x11 contains 1 chunk(s)
-              RenderSVGInlineText {#text} at (0,-9) size 8x11
+            RenderSVGText {text} at (0,0) size 8x10 contains 1 chunk(s)
+              RenderSVGInlineText {#text} at (0,-8) size 8x10
                 chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 2 width 7.50: "12"
         RenderSVGContainer {g} at (9.50,169.50) size 265.50x51 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,110.00)}]
           RenderSVGContainer {g} at (9.50,169.50) size 21x51
@@ -118,8 +118,8 @@ layer at (0,0) size 480x360
                   RenderPath {line} at (144,191) size 2x24 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-12.00"]
                   RenderPath {line} at (145,214) size 24x2 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L12.00,0.00"]
                   RenderPath {rect} at (141,211) size 8x8 [fill={[type=SOLID] [color=#FF0000]}] [data="M-2.00,-2.00L2.00,-2.00L2.00,2.00L-2.00,2.00"]
-            RenderSVGText {text} at (0,0) size 35x11 contains 1 chunk(s)
-              RenderSVGInlineText {#text} at (0,-9) size 35x11
+            RenderSVGText {text} at (0,0) size 35x10 contains 1 chunk(s)
+              RenderSVGInlineText {#text} at (0,-8) size 35x10
                 chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 4 width 35.00: "1234"
         RenderSVGContainer {g} at (9.50,224.50) size 221x51 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,165.00)}]
           RenderSVGContainer {g} at (9.50,224.50) size 21x51
@@ -161,8 +161,8 @@ layer at (0,0) size 480x360
                   RenderPath {line} at (144,246) size 2x24 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-12.00"]
                   RenderPath {line} at (145,269) size 24x2 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L12.00,0.00"]
                   RenderPath {rect} at (141,266) size 8x8 [fill={[type=SOLID] [color=#FF0000]}] [data="M-2.00,-2.00L2.00,-2.00L2.00,2.00L-2.00,2.00"]
-            RenderSVGText {text} at (0,0) size 35x11 contains 1 chunk(s)
-              RenderSVGInlineText {#text} at (0,-9) size 35x11
+            RenderSVGText {text} at (0,0) size 35x10 contains 1 chunk(s)
+              RenderSVGInlineText {#text} at (0,-8) size 35x10
                 chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 4 width 35.00: "1234"
         RenderSVGContainer {g} at (249.50,59.50) size 227.50x51 [transform={m=((1.00,0.00)(0.00,1.00)) t=(240.00,0.00)}]
           RenderSVGContainer {g} at (249.50,59.50) size 21x51
@@ -204,8 +204,8 @@ layer at (0,0) size 480x360
                   RenderPath {line} at (384,81) size 2x24 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-12.00"]
                   RenderPath {line} at (385,104) size 24x2 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L12.00,0.00"]
                   RenderPath {rect} at (381,101) size 8x8 [fill={[type=SOLID] [color=#FF0000]}] [data="M-2.00,-2.00L2.00,-2.00L2.00,2.00L-2.00,2.00"]
-            RenderSVGText {text} at (0,0) size 35x11 contains 1 chunk(s)
-              RenderSVGInlineText {#text} at (0,-9) size 35x11
+            RenderSVGText {text} at (0,0) size 35x10 contains 1 chunk(s)
+              RenderSVGInlineText {#text} at (0,-8) size 35x10
                 chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 4 width 35.00: "1234"
         RenderSVGContainer {g} at (249.50,114.50) size 233.50x51 [transform={m=((1.00,0.00)(0.00,1.00)) t=(240.00,55.00)}]
           RenderSVGContainer {g} at (249.50,114.50) size 21x51
@@ -247,8 +247,8 @@ layer at (0,0) size 480x360
                   RenderPath {line} at (414,136) size 2x24 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-12.00"]
                   RenderPath {line} at (415,159) size 24x2 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L12.00,0.00"]
                   RenderPath {rect} at (411,156) size 8x8 [fill={[type=SOLID] [color=#FF0000]}] [data="M-2.00,-2.00L2.00,-2.00L2.00,2.00L-2.00,2.00"]
-            RenderSVGText {text} at (0,0) size 35x11 contains 1 chunk(s)
-              RenderSVGInlineText {#text} at (0,-9) size 35x11
+            RenderSVGText {text} at (0,0) size 35x10 contains 1 chunk(s)
+              RenderSVGInlineText {#text} at (0,-8) size 35x10
                 chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 4 width 35.00: "1234"
         RenderSVGContainer {g} at (249.50,169.50) size 221x51 [transform={m=((1.00,0.00)(0.00,1.00)) t=(240.00,110.00)}]
           RenderSVGContainer {g} at (249.50,169.50) size 21x51
@@ -278,8 +278,8 @@ layer at (0,0) size 480x360
                   RenderPath {line} at (299,191) size 2x24 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-12.00"]
                   RenderPath {line} at (300,214) size 24x2 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L12.00,0.00"]
                   RenderPath {rect} at (296,211) size 8x8 [fill={[type=SOLID] [color=#FF0000]}] [data="M-2.00,-2.00L2.00,-2.00L2.00,2.00L-2.00,2.00"]
-            RenderSVGText {text} at (0,0) size 18x11 contains 1 chunk(s)
-              RenderSVGInlineText {#text} at (0,-9) size 18x11
+            RenderSVGText {text} at (0,0) size 18x10 contains 1 chunk(s)
+              RenderSVGInlineText {#text} at (0,-8) size 18x10
                 chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 2 width 17.50: "12"
       RenderSVGContainer {g} at (320,100) size 0x0 [transform={m=((1.00,0.00)(0.00,1.00)) t=(320.00,100.00)}]
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
index 3a8890be4c3271275af2c6eba7ae39ad917bb17b..1cb717c95e84908edc38ae6e45faf5c7051e7d9f 100644 (file)
@@ -6,7 +6,7 @@ layer at (0,0) size 480x360
   RenderView at (0,0) size 480x360
 layer at (0,0) size 480x360
   RenderSVGRoot {svg} at (0.50,0.50) size 479x359
-    RenderSVGContainer {g} at (10,7) size 390x306
+    RenderSVGContainer {g} at (10,7) size 390x295
       RenderSVGHiddenContainer {defs} at (0,0) size 0x0
       RenderSVGText {text} at (10,20) size 139x16 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,-13) size 139x16
@@ -41,7 +41,7 @@ layer at (0,0) size 480x360
         RenderPath {rect} at (60,250) size 200x25 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M60.00,250.00L260.00,250.00L260.00,275.00L60.00,275.00"]
         RenderPath {rect} at (60,275) size 200x25 [fill={[type=SOLID] [color=#FFFFFF] [opacity=0.70]}] [data="M60.00,275.00L260.00,275.00L260.00,300.00L60.00,300.00"]
       RenderSVGText {text} at (60,280) size 121x110 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,-77) size 121x110
+        RenderSVGInlineText {#text} at (0,-88) size 121x110
           chunk 1 text run 1 at (60.00,280.00) startOffset 0 endOffset 3 width 121.33: "SVG"
       RenderSVGText {text} at (200,225) size 200x14 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,-11) size 200x14
index ca5f50276916c36b5f09a543aae221c902a2448a..2d31f2cc073d375cdf977d6622b639034fd1abdf 100644 (file)
@@ -1 +1 @@
-639c6cbb5b4ddd5b843b5ba520fa897a
\ No newline at end of file
+2e8c170978bea6a2ea26711cd29257e5
\ No newline at end of file
index d30d7e7ec96d77ee8173f6619c3e95d37ac715b1..a4f2c5c9733d643bb1159d6915fa681169d2f2a7 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/W3C-SVG-1.1/pservers-grad-08-b-expected.png and b/LayoutTests/platform/mac/svg/W3C-SVG-1.1/pservers-grad-08-b-expected.png differ
index 67a631a7d66b1acc9c0c110fd610a159f11671ab..74e650c2ab857fef25349fdae499c0bfd17e85d7 100644 (file)
@@ -4,15 +4,15 @@ layer at (0,0) size 480x360
 layer at (0,0) size 480x360
   RenderSVGRoot {svg} at (-34.55,0.50) size 539.09x359
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-    RenderSVGContainer {g} at (-34.55,34.50) size 539.09x296.32 [transform={m=((1.00,0.00)(0.00,1.50)) t=(0.00,0.00)}]
+    RenderSVGContainer {g} at (-34.55,24) size 539.09x314.32 [transform={m=((1.00,0.00)(0.00,1.50)) t=(0.00,0.00)}]
       RenderSVGHiddenContainer {linearGradient} at (0,0) size 0x0
         RenderSVGGradientStop {stop} at (0,0) size 0x0
         RenderSVGGradientStop {stop} at (0,0) size 0x0
-      RenderSVGText {text} at (20,70) size 446x55 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,-47) size 446x55
+      RenderSVGText {text} at (20,70) size 446x67 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,-54) size 446x67
           chunk 1 text run 1 at (20.00,70.00) startOffset 0 endOffset 16 width 446.28: "Gradient on fill"
-      RenderSVGText {text} at (20,160) size 430x44 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,-38) size 430x44
+      RenderSVGText {text} at (20,160) size 430x55 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,-44) size 430x55
           chunk 1 text run 1 at (20.00,160.00) startOffset 0 endOffset 18 width 429.88: "Gradient on stroke"
     RenderSVGText {text} at (40,145) size 342x36 contains 1 chunk(s)
       RenderSVGInlineText {#text} at (0,-28) size 342x36
index f1cb2d5a88efb65128e53f7e186e03db51ee9599..96be8b5be828f039a11b7e91f4c23888d7368639 100644 (file)
@@ -3,16 +3,16 @@ layer at (0,0) size 480x360
 layer at (0,0) size 480x360
   RenderSVGRoot {svg} at (0.50,0.50) size 479x359
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-    RenderSVGContainer {g} at (60,12) size 352x306
+    RenderSVGContainer {g} at (60,12) size 352x328
       RenderSVGText {text} at (180,40) size 96x36 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,-28) size 96x36
           chunk 1 text run 1 at (180.00,40.00) startOffset 0 endOffset 9 width 96.00: "Text fill"
-      RenderSVGContainer {g} at (60,70) size 352x248
-        RenderSVGText {text} at (60,280) size 152x248 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,-210) size 152x248
+      RenderSVGContainer {g} at (60,40) size 352x300
+        RenderSVGText {text} at (60,280) size 152x300 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,-240) size 152x300
             chunk 1 text run 1 at (60.00,280.00) startOffset 0 endOffset 1 width 151.50: "A"
-        RenderSVGText {text} at (260,280) size 152x248 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,-210) size 152x248
+        RenderSVGText {text} at (260,280) size 152x300 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,-240) size 152x300
             chunk 1 text run 1 at (260.00,280.00) startOffset 0 endOffset 1 width 151.50: "A"
     RenderSVGText {text} at (10,340) size 264x46 contains 1 chunk(s)
       RenderSVGInlineText {#text} at (0,-36) size 264x46
index 4676fbf15a12f63518dcc7eb7379b375c649fbb4..9f55ea05838258afee6fbd17de7b022792a52c1e 100644 (file)
@@ -1,18 +1,18 @@
 layer at (0,0) size 480x360
   RenderView at (0,0) size 480x360
 layer at (0,0) size 480x360
-  RenderSVGRoot {svg} at (0.50,0.50) size 479x359
+  RenderSVGRoot {svg} at (0.50,0) size 479x380
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-    RenderSVGContainer {g} at (0.50,0.50) size 479x359
+    RenderSVGContainer {g} at (0.50,0) size 479x380
       RenderSVGText {text} at (180,40) size 135x36 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,-28) size 135x36
           chunk 1 text run 1 at (180.00,40.00) startOffset 0 endOffset 11 width 135.00: "Text stroke"
-      RenderSVGContainer {g} at (20,30) size 445x328
-        RenderSVGText {text} at (60,280) size 152x248 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,-210) size 152x248
+      RenderSVGContainer {g} at (20,0) size 445x380
+        RenderSVGText {text} at (60,280) size 152x300 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,-240) size 152x300
             chunk 1 text run 1 at (60.00,280.00) startOffset 0 endOffset 1 width 151.50: "A"
-        RenderSVGText {text} at (260,280) size 165x248 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,-210) size 165x248
+        RenderSVGText {text} at (260,280) size 165x300 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,-240) size 165x300
             chunk 1 text run 1 at (260.00,280.00) startOffset 0 endOffset 1 width 165.00: "B"
       RenderSVGText {text} at (10,340) size 264x46 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,-36) size 264x46
index 0eb9250f188a418ec3db9be11071dc55f1f42f6c..c4438abdbe394fad52219798295f38b27324b249 100644 (file)
@@ -1,18 +1,18 @@
 layer at (0,0) size 480x360
   RenderView at (0,0) size 480x360
 layer at (0,0) size 480x360
-  RenderSVGRoot {svg} at (0.50,0.50) size 479x359
+  RenderSVGRoot {svg} at (0.50,0) size 479x380
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-    RenderSVGContainer {g} at (0.50,0.50) size 479x359
+    RenderSVGContainer {g} at (0.50,0) size 479x380
       RenderSVGText {text} at (120,40) size 228x36 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,-28) size 228x36
           chunk 1 text run 1 at (120.00,40.00) startOffset 0 endOffset 20 width 228.00: "Text fill and stroke"
-      RenderSVGContainer {g} at (20,30) size 445x328
-        RenderSVGText {text} at (60,280) size 152x248 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,-210) size 152x248
+      RenderSVGContainer {g} at (20,0) size 445x380
+        RenderSVGText {text} at (60,280) size 152x300 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,-240) size 152x300
             chunk 1 text run 1 at (60.00,280.00) startOffset 0 endOffset 1 width 151.50: "A"
-        RenderSVGText {text} at (260,280) size 165x248 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,-210) size 165x248
+        RenderSVGText {text} at (260,280) size 165x300 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,-240) size 165x300
             chunk 1 text run 1 at (260.00,280.00) startOffset 0 endOffset 1 width 165.00: "B"
       RenderSVGText {text} at (10,340) size 264x46 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,-36) size 264x46
index 3a16654f0599ab74bf1480ec760468b3231f11d6..e895d03d9a0d918a5cb9b8aba64640c0804ed56a 100644 (file)
@@ -1,10 +1,10 @@
 layer at (0,0) size 480x360
   RenderView at (0,0) size 480x360
 layer at (0,0) size 480x360
-  RenderSVGRoot {svg} at (0.50,0.50) size 479x359
-    RenderSVGContainer {g} at (35.10,10.80) size 428.40x304.20
+  RenderSVGRoot {svg} at (0.50,-10.80) size 479x370.30
+    RenderSVGContainer {g} at (35.10,-10.80) size 428.40x325.80
       RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-      RenderSVGContainer {g} at (35.10,10.80) size 428.40x304.20 [transform={m=((1.80,0.00)(0.00,1.80)) t=(0.00,0.00)}]
+      RenderSVGContainer {g} at (35.10,-10.80) size 428.40x325.80 [transform={m=((1.80,0.00)(0.00,1.80)) t=(0.00,0.00)}]
         RenderPath {rect} at (36,18) size 414x279 [fill={[type=SOLID] [color=#C0C0C0]}] [data="M20.00,10.00L250.00,10.00L250.00,165.00L20.00,165.00"]
         RenderPath {line} at (58.50,18) size 27x297 [stroke={[type=SOLID] [color=#FFFFFF] [stroke width=15.00]}] [fill={[type=SOLID] [color=#000000]}] [data="M40.00,10.00L40.00,175.00"]
         RenderPath {line} at (112.50,18) size 27x297 [stroke={[type=SOLID] [color=#FFFFFF] [stroke width=15.00]}] [fill={[type=SOLID] [color=#000000]}] [data="M70.00,10.00L70.00,175.00"]
@@ -15,9 +15,9 @@ layer at (0,0) size 480x360
         RenderPath {line} at (382.50,18) size 27x297 [stroke={[type=SOLID] [color=#FFFFFF] [stroke width=15.00]}] [fill={[type=SOLID] [color=#000000]}] [data="M220.00,10.00L220.00,175.00"]
         RenderPath {line} at (436.50,18) size 27x297 [stroke={[type=SOLID] [color=#FFFFFF] [stroke width=15.00]}] [fill={[type=SOLID] [color=#000000]}] [data="M250.00,10.00L250.00,175.00"]
         RenderPath {rect} at (35.10,17.10) size 415.80x280.80 [stroke={[type=SOLID] [color=#000000]}] [data="M20.00,10.00L250.00,10.00L250.00,165.00L20.00,165.00"]
-        RenderSVGContainer {g} at (54,10.80) size 381.60x268.20 [opacity=0.50]
+        RenderSVGContainer {g} at (54,-10.80) size 381.60x289.80 [opacity=0.50]
           RenderSVGText {text} at (30,90) size 132x120 contains 1 chunk(s)
-            RenderSVGInlineText {#text} at (0,-84) size 132x120
+            RenderSVGInlineText {#text} at (0,-96) size 132x120
               chunk 1 text run 1 at (30.00,90.00) startOffset 0 endOffset 3 width 132.36: "SVG"
           RenderPath {rect} at (126,99) size 234x126 [fill={[type=SOLID] [color=#820032]}] [data="M70.00,55.00L200.00,55.00L200.00,125.00L70.00,125.00"]
           RenderImage {image} at (0,0) size 80x80
index 8ae457919a029104b23d824d803d2cd92dfcb207..fd36bf02b96d0e2a476b263f4c4200380db8b5ac 100644 (file)
@@ -1,10 +1,10 @@
 layer at (0,0) size 480x360
   RenderView at (0,0) size 480x360
 layer at (0,0) size 480x360
-  RenderSVGRoot {svg} at (0.50,0.50) size 479x359
-    RenderSVGContainer {g} at (35.10,10.80) size 428.40x304.20
+  RenderSVGRoot {svg} at (0.50,-10.80) size 479x370.30
+    RenderSVGContainer {g} at (35.10,-10.80) size 428.40x325.80
       RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-      RenderSVGContainer {g} at (35.10,10.80) size 428.40x304.20 [transform={m=((1.80,0.00)(0.00,1.80)) t=(0.00,0.00)}]
+      RenderSVGContainer {g} at (35.10,-10.80) size 428.40x325.80 [transform={m=((1.80,0.00)(0.00,1.80)) t=(0.00,0.00)}]
         RenderPath {rect} at (36,18) size 414x279 [fill={[type=SOLID] [color=#C0C0C0]}] [data="M20.00,10.00L250.00,10.00L250.00,165.00L20.00,165.00"]
         RenderPath {line} at (58.50,18) size 27x297 [stroke={[type=SOLID] [color=#FFFFFF] [stroke width=15.00]}] [fill={[type=SOLID] [color=#000000]}] [data="M40.00,10.00L40.00,175.00"]
         RenderPath {line} at (112.50,18) size 27x297 [stroke={[type=SOLID] [color=#FFFFFF] [stroke width=15.00]}] [fill={[type=SOLID] [color=#000000]}] [data="M70.00,10.00L70.00,175.00"]
@@ -16,7 +16,7 @@ layer at (0,0) size 480x360
         RenderPath {line} at (436.50,18) size 27x297 [stroke={[type=SOLID] [color=#FFFFFF] [stroke width=15.00]}] [fill={[type=SOLID] [color=#000000]}] [data="M250.00,10.00L250.00,175.00"]
         RenderPath {rect} at (35.10,17.10) size 415.80x280.80 [stroke={[type=SOLID] [color=#000000]}] [data="M20.00,10.00L250.00,10.00L250.00,165.00L20.00,165.00"]
         RenderSVGText {text} at (30,90) size 132x120 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,-84) size 132x120
+          RenderSVGInlineText {#text} at (0,-96) size 132x120
             chunk 1 text run 1 at (30.00,90.00) startOffset 0 endOffset 3 width 132.36: "SVG"
         RenderPath {rect} at (126,99) size 234x126 [fill={[type=SOLID] [color=#820032]}] [data="M70.00,55.00L200.00,55.00L200.00,125.00L70.00,125.00"]
         RenderImage {image} at (0,0) size 80x80
index 0ac555b394a5fb1d5430ff1e0c6e4408949edc5c..bb52e36c54b5fa65822a1dd45a7c1b0f5baec455 100644 (file)
@@ -12,11 +12,11 @@ layer at (0,0) size 480x360
       RenderSVGHiddenContainer {defs} at (0,0) size 0x0
       RenderSVGContainer {g} at (49.33,189.33) size 419.33x96.33
         RenderSVGText {text}
-        RenderSVGText {text} at (50,270) size 38x75 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,-60) size 38x75
+        RenderSVGText {text} at (50,270) size 38x67 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,-52) size 38x67
             chunk 1 text run 1 at (50.00,270.00) startOffset 0 endOffset 1 width 37.50: "D"
-        RenderSVGText {text} at (280,270) size 188x75 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,-60) size 188x75
+        RenderSVGText {text} at (280,270) size 188x67 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,-52) size 188x67
             chunk 1 text run 1 at (280.00,270.00) startOffset 0 endOffset 5 width 157.50: "SASSY"
     RenderSVGText {text} at (10,340) size 264x46 contains 1 chunk(s)
       RenderSVGInlineText {#text} at (0,-36) size 264x46
index bc1ba737d088f78eeb42785d34e7fef5bfe7137e..0cdea5123e5c227e7c5fc40456702b80866b4532 100644 (file)
@@ -3,12 +3,12 @@ layer at (0,0) size 480x360
 layer at (0,0) size 480x360
   RenderSVGRoot {svg} at (0.50,0.50) size 479x359
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-    RenderSVGContainer {g} at (36,20) size 418x290
-      RenderSVGContainer {g} at (36,20) size 154x25 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,40.00)}]
+    RenderSVGContainer {g} at (36,24) size 418x285
+      RenderSVGContainer {g} at (36,24) size 154x20 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,40.00)}]
         RenderSVGText {text} at (-94,0) size 65x18 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-14) size 65x18
             chunk 1 (end anchor) text run 1 at (-94.00,0.00) startOffset 0 endOffset 9 width 64.00: "Reference"
-        RenderSVGContainer {g} at (126,20) size 64x25
+        RenderSVGContainer {g} at (126,24) size 64x20
           RenderSVGContainer {use} at (126,36) size 8x8
             RenderSVGContainer {g} at (126,36) size 8x8
               RenderPath {rect} at (126,36) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
@@ -21,12 +21,12 @@ layer at (0,0) size 480x360
           RenderSVGContainer {use} at (171,36) size 8x8
             RenderSVGContainer {g} at (171,36) size 8x8 [transform={m=((1.00,0.00)(0.00,1.00)) t=(45.00,0.00)}]
               RenderPath {rect} at (171,36) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-          RenderSVGText {text} at (0,0) size 60x25 contains 1 chunk(s)
-            RenderSVGInlineText {#text} at (0,-20) size 60x25
+          RenderSVGText {text} at (0,0) size 60x20 contains 1 chunk(s)
+            RenderSVGInlineText {#text} at (0,-16) size 60x20
               chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 4 width 60.00: "1234"
       RenderSVGHiddenContainer {defs} at (0,0) size 0x0
         RenderPath {rect} at (-4,-4) size 8x8 [fill={[type=SOLID] [color=#000000]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-      RenderSVGContainer {g} at (73,60) size 152x25 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,80.00)}]
+      RenderSVGContainer {g} at (73,64) size 152x20 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,80.00)}]
         RenderSVGText {text} at (-57,0) size 28x18 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-14) size 28x18
             chunk 1 (end anchor) text run 1 at (-57.00,0.00) startOffset 0 endOffset 5 width 27.00: "x all"
@@ -45,13 +45,13 @@ layer at (0,0) size 480x360
         RenderSVGContainer {use} at (206,76) size 8x8
           RenderSVGContainer {g} at (206,76) size 8x8 [transform={m=((1.00,0.00)(0.00,1.00)) t=(80.00,0.00)}]
             RenderPath {rect} at (206,76) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-        RenderSVGText {text} at (20,0) size 75x25 contains 4 chunk(s)
-          RenderSVGInlineText {#text} at (0,-20) size 75x25
+        RenderSVGText {text} at (20,0) size 75x20 contains 4 chunk(s)
+          RenderSVGInlineText {#text} at (0,-16) size 75x20
             chunk 1 text run 1 at (20.00,0.00) startOffset 0 endOffset 1 width 15.00: "1"
             chunk 2 text run 1 at (40.00,0.00) startOffset 1 endOffset 2 width 15.00: "2"
             chunk 3 text run 1 at (60.00,0.00) startOffset 2 endOffset 3 width 15.00: "3"
             chunk 4 text run 1 at (80.00,0.00) startOffset 3 endOffset 4 width 15.00: "4"
-      RenderSVGContainer {g} at (56,100) size 178x25 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,120.00)}]
+      RenderSVGContainer {g} at (56,104) size 178x20 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,120.00)}]
         RenderSVGText {text} at (-74,0) size 45x18 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-14) size 45x18
             chunk 1 (end anchor) text run 1 at (-74.00,0.00) startOffset 0 endOffset 6 width 44.00: "x more"
@@ -73,13 +73,13 @@ layer at (0,0) size 480x360
         RenderSVGContainer {use} at (226,116) size 8x8
           RenderSVGContainer {g} at (226,116) size 8x8 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,0.00)}]
             RenderPath {rect} at (226,116) size 8x8 [fill={[type=SOLID] [color=#FF0000]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-        RenderSVGText {text} at (20,0) size 75x25 contains 4 chunk(s)
-          RenderSVGInlineText {#text} at (0,-20) size 75x25
+        RenderSVGText {text} at (20,0) size 75x20 contains 4 chunk(s)
+          RenderSVGInlineText {#text} at (0,-16) size 75x20
             chunk 1 text run 1 at (20.00,0.00) startOffset 0 endOffset 1 width 15.00: "1"
             chunk 2 text run 1 at (40.00,0.00) startOffset 1 endOffset 2 width 15.00: "2"
             chunk 3 text run 1 at (60.00,0.00) startOffset 2 endOffset 3 width 15.00: "3"
             chunk 4 text run 1 at (80.00,0.00) startOffset 3 endOffset 4 width 15.00: "4"
-      RenderSVGContainer {g} at (52,140) size 168x25 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,160.00)}]
+      RenderSVGContainer {g} at (52,144) size 168x20 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,160.00)}]
         RenderSVGText {text} at (-78,0) size 49x18 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-14) size 49x18
             chunk 1 (end anchor) text run 1 at (-78.00,0.00) startOffset 0 endOffset 7 width 48.00: "x fewer"
@@ -98,12 +98,12 @@ layer at (0,0) size 480x360
         RenderSVGContainer {use} at (201,156) size 8x8
           RenderSVGContainer {g} at (201,156) size 8x8 [transform={m=((1.00,0.00)(0.00,1.00)) t=(75.00,0.00)}]
             RenderPath {rect} at (201,156) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-        RenderSVGText {text} at (20,0) size 70x25 contains 3 chunk(s)
-          RenderSVGInlineText {#text} at (0,-20) size 70x25
+        RenderSVGText {text} at (20,0) size 70x20 contains 3 chunk(s)
+          RenderSVGInlineText {#text} at (0,-16) size 70x20
             chunk 1 text run 1 at (20.00,0.00) startOffset 0 endOffset 1 width 15.00: "1"
             chunk 2 text run 1 at (40.00,0.00) startOffset 1 endOffset 2 width 15.00: "2"
             chunk 3 text run 1 at (60.00,0.00) startOffset 2 endOffset 4 width 30.00: "34"
-      RenderSVGContainer {g} at (73,170) size 117x45 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,200.00)}]
+      RenderSVGContainer {g} at (73,174) size 117x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,200.00)}]
         RenderSVGText {text} at (-57,0) size 28x18 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-14) size 28x18
             chunk 1 (end anchor) text run 1 at (-57.00,0.00) startOffset 0 endOffset 5 width 27.00: "y all"
@@ -119,10 +119,10 @@ layer at (0,0) size 480x360
         RenderSVGContainer {use} at (171,206) size 8x8
           RenderSVGContainer {g} at (171,206) size 8x8 [transform={m=((1.00,0.00)(0.00,1.00)) t=(45.00,10.00)}]
             RenderPath {rect} at (171,206) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-        RenderSVGText {text} at (0,-10) size 60x45 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,-20) size 60x45
+        RenderSVGText {text} at (0,-10) size 60x40 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,-16) size 60x40
             chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 4 width 60.00: "1234"
-      RenderSVGContainer {g} at (56,220) size 134x45 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,250.00)}]
+      RenderSVGContainer {g} at (56,224) size 134x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,250.00)}]
         RenderSVGText {text} at (-74,0) size 45x18 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-14) size 45x18
             chunk 1 (end anchor) text run 1 at (-74.00,0.00) startOffset 0 endOffset 6 width 44.00: "y more"
@@ -138,10 +138,10 @@ layer at (0,0) size 480x360
         RenderSVGContainer {use} at (171,256) size 8x8
           RenderSVGContainer {g} at (171,256) size 8x8 [transform={m=((1.00,0.00)(0.00,1.00)) t=(45.00,10.00)}]
             RenderPath {rect} at (171,256) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-        RenderSVGText {text} at (0,-10) size 60x45 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,-20) size 60x45
+        RenderSVGText {text} at (0,-10) size 60x40 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,-16) size 60x40
             chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 4 width 60.00: "1234"
-      RenderSVGContainer {g} at (52,270) size 138x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,300.00)}]
+      RenderSVGContainer {g} at (52,274) size 138x35 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,300.00)}]
         RenderSVGText {text} at (-78,0) size 49x18 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-14) size 49x18
             chunk 1 (end anchor) text run 1 at (-78.00,0.00) startOffset 0 endOffset 7 width 48.00: "y fewer"
@@ -157,11 +157,11 @@ layer at (0,0) size 480x360
         RenderSVGContainer {use} at (171,301) size 8x8
           RenderSVGContainer {g} at (171,301) size 8x8 [transform={m=((1.00,0.00)(0.00,1.00)) t=(45.00,5.00)}]
             RenderPath {rect} at (171,301) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-        RenderSVGText {text} at (0,-10) size 60x40 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,-20) size 60x40
+        RenderSVGText {text} at (0,-10) size 60x35 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,-16) size 60x35
             chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 4 width 60.00: "1234"
-      RenderSVGContainer {g} at (241,50) size 213x205 [transform={m=((1.00,0.00)(0.00,1.00)) t=(220.00,0.00)}]
-        RenderSVGContainer {g} at (281,50) size 164x45 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,80.00)}]
+      RenderSVGContainer {g} at (241,54) size 213x200 [transform={m=((1.00,0.00)(0.00,1.00)) t=(220.00,0.00)}]
+        RenderSVGContainer {g} at (281,54) size 164x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,80.00)}]
           RenderSVGText {text} at (-69,0) size 40x18 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,-14) size 40x18
               chunk 1 (end anchor) text run 1 at (-69.00,0.00) startOffset 0 endOffset 7 width 39.00: "x/y all"
@@ -180,13 +180,13 @@ layer at (0,0) size 480x360
           RenderSVGContainer {use} at (426,86) size 8x8
             RenderSVGContainer {g} at (426,86) size 8x8 [transform={m=((1.00,0.00)(0.00,1.00)) t=(80.00,10.00)}]
               RenderPath {rect} at (426,86) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-          RenderSVGText {text} at (20,-10) size 75x45 contains 4 chunk(s)
-            RenderSVGInlineText {#text} at (0,-20) size 75x45
+          RenderSVGText {text} at (20,-10) size 75x40 contains 4 chunk(s)
+            RenderSVGInlineText {#text} at (0,-16) size 75x40
               chunk 1 text run 1 at (20.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
               chunk 2 text run 1 at (40.00,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
               chunk 3 text run 1 at (60.00,5.00) startOffset 2 endOffset 3 width 15.00: "3"
               chunk 4 text run 1 at (80.00,10.00) startOffset 3 endOffset 4 width 15.00: "4"
-        RenderSVGContainer {g} at (264,90) size 190x54 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,120.00)}]
+        RenderSVGContainer {g} at (264,94) size 190x50 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,120.00)}]
           RenderSVGText {text} at (-86,0) size 57x18 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,-14) size 57x18
               chunk 1 (end anchor) text run 1 at (-86.00,0.00) startOffset 0 endOffset 8 width 56.00: "x/y more"
@@ -208,13 +208,13 @@ layer at (0,0) size 480x360
           RenderSVGContainer {use} at (446,136) size 8x8
             RenderSVGContainer {g} at (446,136) size 8x8 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,20.00)}]
               RenderPath {rect} at (446,136) size 8x8 [fill={[type=SOLID] [color=#FF0000]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-          RenderSVGText {text} at (20,-10) size 75x45 contains 4 chunk(s)
-            RenderSVGInlineText {#text} at (0,-20) size 75x45
+          RenderSVGText {text} at (20,-10) size 75x40 contains 4 chunk(s)
+            RenderSVGInlineText {#text} at (0,-16) size 75x40
               chunk 1 text run 1 at (20.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
               chunk 2 text run 1 at (40.00,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
               chunk 3 text run 1 at (60.00,5.00) startOffset 2 endOffset 3 width 15.00: "3"
               chunk 4 text run 1 at (80.00,10.00) startOffset 3 endOffset 4 width 15.00: "4"
-        RenderSVGContainer {g} at (260,130) size 180x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,160.00)}]
+        RenderSVGContainer {g} at (260,134) size 180x35 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,160.00)}]
           RenderSVGText {text} at (-90,0) size 61x18 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,-14) size 61x18
               chunk 1 (end anchor) text run 1 at (-90.00,0.00) startOffset 0 endOffset 9 width 60.00: "x/y fewer"
@@ -233,12 +233,12 @@ layer at (0,0) size 480x360
           RenderSVGContainer {use} at (421,161) size 8x8
             RenderSVGContainer {g} at (421,161) size 8x8 [transform={m=((1.00,0.00)(0.00,1.00)) t=(75.00,5.00)}]
               RenderPath {rect} at (421,161) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-          RenderSVGText {text} at (20,-10) size 70x40 contains 3 chunk(s)
-            RenderSVGInlineText {#text} at (0,-20) size 70x40
+          RenderSVGText {text} at (20,-10) size 70x35 contains 3 chunk(s)
+            RenderSVGInlineText {#text} at (0,-16) size 70x35
               chunk 1 text run 1 at (20.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
               chunk 2 text run 1 at (40.00,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
               chunk 3 text run 1 at (60.00,5.00) startOffset 2 endOffset 4 width 30.00: "34"
-        RenderSVGContainer {g} at (241,170) size 204x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,200.00)}]
+        RenderSVGContainer {g} at (241,174) size 204x35 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,200.00)}]
           RenderSVGText {text} at (-109,0) size 80x18 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,-14) size 80x18
               chunk 1 (end anchor) text run 1 at (-109.00,0.00) startOffset 0 endOffset 13 width 79.00: "x all y fewer"
@@ -257,13 +257,13 @@ layer at (0,0) size 480x360
           RenderSVGContainer {use} at (426,201) size 8x8
             RenderSVGContainer {g} at (426,201) size 8x8 [transform={m=((1.00,0.00)(0.00,1.00)) t=(80.00,5.00)}]
               RenderPath {rect} at (426,201) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-          RenderSVGText {text} at (20,-10) size 75x40 contains 4 chunk(s)
-            RenderSVGInlineText {#text} at (0,-20) size 75x40
+          RenderSVGText {text} at (20,-10) size 75x35 contains 4 chunk(s)
+            RenderSVGInlineText {#text} at (0,-16) size 75x35
               chunk 1 text run 1 at (20.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
               chunk 2 text run 1 at (40.00,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
               chunk 3 text run 1 at (60.00,5.00) startOffset 2 endOffset 3 width 15.00: "3"
               chunk 4 text run 1 at (80.00,5.00) startOffset 3 endOffset 4 width 15.00: "4"
-        RenderSVGContainer {g} at (241,210) size 199x45 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,240.00)}]
+        RenderSVGContainer {g} at (241,214) size 199x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,240.00)}]
           RenderSVGText {text} at (-109,0) size 80x18 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,-14) size 80x18
               chunk 1 (end anchor) text run 1 at (-109.00,0.00) startOffset 0 endOffset 13 width 79.00: "x fewer y all"
@@ -282,8 +282,8 @@ layer at (0,0) size 480x360
           RenderSVGContainer {use} at (423.52,246) size 8x8
             RenderSVGContainer {g} at (423.52,246) size 8x8 [transform={m=((1.00,0.00)(0.00,1.00)) t=(77.52,10.00)}]
               RenderPath {rect} at (423.52,246) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-          RenderSVGText {text} at (20,-10) size 70x45 contains 3 chunk(s)
-            RenderSVGInlineText {#text} at (0,-20) size 70x45
+          RenderSVGText {text} at (20,-10) size 70x40 contains 3 chunk(s)
+            RenderSVGInlineText {#text} at (0,-16) size 70x40
               chunk 1 text run 1 at (20.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
               chunk 2 text run 1 at (40.00,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
               chunk 3 text run 1 at (60.00,5.00) startOffset 2 endOffset 4 width 30.00: "34"
index be9f2e62e8f7fddf698079fb2eb99c479c67d4be..74c0f907fc854fb65e880fcabf569a9dabc0e6ec 100644 (file)
@@ -50,8 +50,8 @@ layer at (0,0) size 480x360
               RenderSVGContainer {g} at (146,55) size 8x19
                 RenderPath {line} at (149.50,55) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                 RenderPath {rect} at (146,66) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-          RenderSVGText {text} at (0,30) size 60x11 contains 1 chunk(s)
-            RenderSVGInlineText {#text} at (0,-9) size 60x11
+          RenderSVGText {text} at (0,30) size 60x10 contains 1 chunk(s)
+            RenderSVGInlineText {#text} at (0,-8) size 60x10
               chunk 1 text run 1 at (0.00,30.00) startOffset 0 endOffset 4 width 60.00: "1234"
           RenderSVGContainer {use} at (156,85) size 8x19
             RenderSVGContainer {g} at (156,85) size 8x19 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,60.00)}]
@@ -73,8 +73,8 @@ layer at (0,0) size 480x360
               RenderSVGContainer {g} at (186,85) size 8x19
                 RenderPath {line} at (189.50,85) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                 RenderPath {rect} at (186,96) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-          RenderSVGText {text} at (10,60) size 45x11 contains 4 chunk(s)
-            RenderSVGInlineText {#text} at (0,-9) size 45x11
+          RenderSVGText {text} at (10,60) size 45x10 contains 4 chunk(s)
+            RenderSVGInlineText {#text} at (0,-8) size 45x10
               chunk 1 text run 1 at (10.00,60.00) startOffset 0 endOffset 1 width 15.00: "1"
               chunk 2 text run 1 at (20.00,60.00) startOffset 1 endOffset 2 width 15.00: "2"
               chunk 3 text run 1 at (30.00,60.00) startOffset 2 endOffset 3 width 15.00: "3"
@@ -89,8 +89,8 @@ layer at (0,0) size 480x360
               RenderSVGContainer {g} at (206,115) size 8x19
                 RenderPath {line} at (209.50,115) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                 RenderPath {rect} at (206,126) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-          RenderSVGText {text} at (10,90) size 95x11 contains 2 chunk(s)
-            RenderSVGInlineText {#text} at (0,-9) size 95x11
+          RenderSVGText {text} at (10,90) size 95x10 contains 2 chunk(s)
+            RenderSVGInlineText {#text} at (0,-8) size 95x10
               chunk 1 text run 1 at (10.00,90.00) startOffset 0 endOffset 1 width 15.00: "1"
               chunk 2 text run 1 at (60.00,90.00) startOffset 1 endOffset 4 width 45.00: "234"
           RenderSVGContainer {g} at (146,135) size 64x39 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,120.00)}]
@@ -114,8 +114,8 @@ layer at (0,0) size 480x360
                 RenderSVGContainer {g} at (191,155) size 8x19
                   RenderPath {line} at (194.50,155) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                   RenderPath {rect} at (191,166) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-            RenderSVGText {text} at (0,-10) size 60x31 contains 1 chunk(s)
-              RenderSVGInlineText {#text} at (0,-9) size 60x31
+            RenderSVGText {text} at (0,-10) size 60x30 contains 1 chunk(s)
+              RenderSVGInlineText {#text} at (0,-8) size 60x30
                 chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 4 width 60.00: "1234"
           RenderSVGContainer {g} at (156,165) size 49x39 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,150.00)}]
             RenderSVGContainer {use} at (156,165) size 8x19
@@ -138,8 +138,8 @@ layer at (0,0) size 480x360
                 RenderSVGContainer {g} at (186,185) size 8x19
                   RenderPath {line} at (189.50,185) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                   RenderPath {rect} at (186,196) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-            RenderSVGText {text} at (10,-10) size 45x31 contains 4 chunk(s)
-              RenderSVGInlineText {#text} at (0,-9) size 45x31
+            RenderSVGText {text} at (10,-10) size 45x30 contains 4 chunk(s)
+              RenderSVGInlineText {#text} at (0,-8) size 45x30
                 chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
                 chunk 2 text run 1 at (20.00,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
                 chunk 3 text run 1 at (30.00,5.00) startOffset 2 endOffset 3 width 15.00: "3"
@@ -165,8 +165,8 @@ layer at (0,0) size 480x360
                 RenderSVGContainer {g} at (196,215) size 8x19
                   RenderPath {line} at (199.50,215) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                   RenderPath {rect} at (196,226) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-            RenderSVGText {text} at (10,-10) size 55x31 contains 2 chunk(s)
-              RenderSVGInlineText {#text} at (0,-9) size 55x31
+            RenderSVGText {text} at (10,-10) size 55x30 contains 2 chunk(s)
+              RenderSVGInlineText {#text} at (0,-8) size 55x30
                 chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
                 chunk 2 text run 1 at (20.00,-5.00) startOffset 1 endOffset 4 width 45.00: "234"
           RenderSVGContainer {g} at (146,225) size 64x34 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,210.00)}]
@@ -180,8 +180,8 @@ layer at (0,0) size 480x360
                 RenderSVGContainer {g} at (161,240) size 8x19
                   RenderPath {line} at (164.50,240) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                   RenderPath {rect} at (161,251) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-            RenderSVGText {text} at (0,-10) size 60x26 contains 1 chunk(s)
-              RenderSVGInlineText {#text} at (0,-9) size 60x26
+            RenderSVGText {text} at (0,-10) size 60x25 contains 1 chunk(s)
+              RenderSVGInlineText {#text} at (0,-8) size 60x25
                 chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 4 width 60.00: "1234"
           RenderSVGContainer {g} at (156,255) size 49x24 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,240.00)}]
             RenderSVGContainer {use} at (156,255) size 8x19
@@ -204,8 +204,8 @@ layer at (0,0) size 480x360
                 RenderSVGContainer {g} at (186,260) size 8x19
                   RenderPath {line} at (189.50,260) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                   RenderPath {rect} at (186,271) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-            RenderSVGText {text} at (10,-10) size 45x17 contains 4 chunk(s)
-              RenderSVGInlineText {#text} at (0,-9) size 45x17
+            RenderSVGText {text} at (10,-10) size 45x16 contains 4 chunk(s)
+              RenderSVGInlineText {#text} at (0,-8) size 45x16
                 chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
                 chunk 2 text run 1 at (20.00,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
                 chunk 3 text run 1 at (30.00,-5.00) startOffset 2 endOffset 3 width 15.00: "3"
@@ -221,8 +221,8 @@ layer at (0,0) size 480x360
                 RenderSVGContainer {g} at (206,290) size 8x19
                   RenderPath {line} at (209.50,290) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                   RenderPath {rect} at (206,301) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-            RenderSVGText {text} at (10,-10) size 95x17 contains 2 chunk(s)
-              RenderSVGInlineText {#text} at (0,-9) size 95x17
+            RenderSVGText {text} at (10,-10) size 95x16 contains 2 chunk(s)
+              RenderSVGInlineText {#text} at (0,-8) size 95x16
                 chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
                 chunk 2 text run 1 at (60.00,-5.00) startOffset 1 endOffset 4 width 45.00: "234"
       RenderSVGContainer {g} at (215,9) size 118x321 [transform={m=((1.00,0.00)(0.00,1.00)) t=(250.00,40.00)}]
@@ -240,8 +240,8 @@ layer at (0,0) size 480x360
                 RenderSVGContainer {g} at (246,55) size 8x19
                   RenderPath {line} at (249.50,55) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                   RenderPath {rect} at (246,66) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-              RenderSVGText {text} at (-30,30) size 60x11 contains 1 chunk(s)
-                RenderSVGInlineText {#text} at (0,-9) size 60x11
+              RenderSVGText {text} at (-30,30) size 60x10 contains 1 chunk(s)
+                RenderSVGInlineText {#text} at (0,-8) size 60x10
                   chunk 1 (middle anchor) text run 1 at (-30.00,30.00) startOffset 0 endOffset 4 width 60.00: "1234"
               RenderSVGContainer {g} at (256,85) size 8x19 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,60.00)}]
                 RenderSVGContainer {g} at (256,85) size 8x19
@@ -259,8 +259,8 @@ layer at (0,0) size 480x360
                 RenderSVGContainer {g} at (286,85) size 8x19
                   RenderPath {line} at (289.50,85) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                   RenderPath {rect} at (286,96) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-              RenderSVGText {text} at (2,60) size 46x11 contains 4 chunk(s)
-                RenderSVGInlineText {#text} at (0,-9) size 46x11
+              RenderSVGText {text} at (2,60) size 46x10 contains 4 chunk(s)
+                RenderSVGInlineText {#text} at (0,-8) size 46x10
                   chunk 1 (middle anchor) text run 1 at (2.50,60.00) startOffset 0 endOffset 1 width 15.00: "1"
                   chunk 2 (middle anchor) text run 1 at (12.50,60.00) startOffset 1 endOffset 2 width 15.00: "2"
                   chunk 3 (middle anchor) text run 1 at (22.50,60.00) startOffset 2 endOffset 3 width 15.00: "3"
@@ -273,8 +273,8 @@ layer at (0,0) size 480x360
                 RenderSVGContainer {g} at (306,115) size 8x19
                   RenderPath {line} at (309.50,115) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                   RenderPath {rect} at (306,126) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-              RenderSVGText {text} at (2,90) size 81x11 contains 2 chunk(s)
-                RenderSVGInlineText {#text} at (0,-9) size 81x11
+              RenderSVGText {text} at (2,90) size 81x10 contains 2 chunk(s)
+                RenderSVGInlineText {#text} at (0,-8) size 81x10
                   chunk 1 (middle anchor) text run 1 at (2.50,90.00) startOffset 0 endOffset 1 width 15.00: "1"
                   chunk 2 (middle anchor) text run 1 at (37.50,90.00) startOffset 1 endOffset 4 width 45.00: "234"
               RenderSVGContainer {g} at (220,135) size 79x39 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,120.00)}]
@@ -294,8 +294,8 @@ layer at (0,0) size 480x360
                   RenderSVGContainer {g} at (291,155) size 8x19
                     RenderPath {line} at (294.50,155) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                     RenderPath {rect} at (291,166) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-                RenderSVGText {text} at (-30,-10) size 60x31 contains 1 chunk(s)
-                  RenderSVGInlineText {#text} at (0,-9) size 60x31
+                RenderSVGText {text} at (-30,-10) size 60x30 contains 1 chunk(s)
+                  RenderSVGInlineText {#text} at (0,-8) size 60x30
                     chunk 1 (middle anchor) text run 1 at (-30.00,-10.00) startOffset 0 endOffset 4 width 60.00: "1234"
               RenderSVGContainer {g} at (252,165) size 46x39 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,150.00)}]
                 RenderSVGContainer {g} at (256,165) size 8x19 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,-10.00)}]
@@ -314,8 +314,8 @@ layer at (0,0) size 480x360
                   RenderSVGContainer {g} at (286,185) size 8x19
                     RenderPath {line} at (289.50,185) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                     RenderPath {rect} at (286,196) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-                RenderSVGText {text} at (2,-10) size 46x31 contains 4 chunk(s)
-                  RenderSVGInlineText {#text} at (0,-9) size 46x31
+                RenderSVGText {text} at (2,-10) size 46x30 contains 4 chunk(s)
+                  RenderSVGInlineText {#text} at (0,-8) size 46x30
                     chunk 1 (middle anchor) text run 1 at (2.50,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
                     chunk 2 (middle anchor) text run 1 at (12.50,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
                     chunk 3 (middle anchor) text run 1 at (22.50,5.00) startOffset 2 endOffset 3 width 15.00: "3"
@@ -337,8 +337,8 @@ layer at (0,0) size 480x360
                   RenderSVGContainer {g} at (296,215) size 8x19
                     RenderPath {line} at (299.50,215) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                     RenderPath {rect} at (296,226) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-                RenderSVGText {text} at (-3,-10) size 45x31 contains 2 chunk(s)
-                  RenderSVGInlineText {#text} at (1,-9) size 45x31
+                RenderSVGText {text} at (-3,-10) size 45x30 contains 2 chunk(s)
+                  RenderSVGInlineText {#text} at (1,-8) size 45x30
                     chunk 1 (middle anchor) text run 1 at (2.50,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
                     chunk 2 (middle anchor) text run 1 at (-2.50,-5.00) startOffset 1 endOffset 4 width 45.00: "234"
               RenderSVGContainer {g} at (220,225) size 60x34 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,210.00)}]
@@ -350,8 +350,8 @@ layer at (0,0) size 480x360
                   RenderSVGContainer {g} at (261,240) size 8x19
                     RenderPath {line} at (264.50,240) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                     RenderPath {rect} at (261,251) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-                RenderSVGText {text} at (-30,-10) size 60x26 contains 1 chunk(s)
-                  RenderSVGInlineText {#text} at (0,-9) size 60x26
+                RenderSVGText {text} at (-30,-10) size 60x25 contains 1 chunk(s)
+                  RenderSVGInlineText {#text} at (0,-8) size 60x25
                     chunk 1 (middle anchor) text run 1 at (-30.00,-10.00) startOffset 0 endOffset 4 width 60.00: "1234"
               RenderSVGContainer {g} at (252,255) size 46x24 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,240.00)}]
                 RenderSVGContainer {g} at (256,255) size 8x19 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,-10.00)}]
@@ -370,8 +370,8 @@ layer at (0,0) size 480x360
                   RenderSVGContainer {g} at (286,260) size 8x19
                     RenderPath {line} at (289.50,260) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                     RenderPath {rect} at (286,271) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-                RenderSVGText {text} at (2,-10) size 46x17 contains 4 chunk(s)
-                  RenderSVGInlineText {#text} at (0,-9) size 46x17
+                RenderSVGText {text} at (2,-10) size 46x16 contains 4 chunk(s)
+                  RenderSVGInlineText {#text} at (0,-8) size 46x16
                     chunk 1 (middle anchor) text run 1 at (2.50,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
                     chunk 2 (middle anchor) text run 1 at (12.50,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
                     chunk 3 (middle anchor) text run 1 at (22.50,-5.00) startOffset 2 endOffset 3 width 15.00: "3"
@@ -385,8 +385,8 @@ layer at (0,0) size 480x360
                   RenderSVGContainer {g} at (306,290) size 8x19
                     RenderPath {line} at (309.50,290) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                     RenderPath {rect} at (306,301) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-                RenderSVGText {text} at (2,-10) size 81x17 contains 2 chunk(s)
-                  RenderSVGInlineText {#text} at (0,-9) size 81x17
+                RenderSVGText {text} at (2,-10) size 81x16 contains 2 chunk(s)
+                  RenderSVGInlineText {#text} at (0,-8) size 81x16
                     chunk 1 (middle anchor) text run 1 at (2.50,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
                     chunk 2 (middle anchor) text run 1 at (37.50,-5.00) startOffset 1 endOffset 4 width 45.00: "234"
       RenderSVGContainer {g} at (290,9) size 124x321 [transform={m=((1.00,0.00)(0.00,1.00)) t=(350.00,40.00)}]
@@ -404,8 +404,8 @@ layer at (0,0) size 480x360
                 RenderSVGContainer {g} at (346,55) size 8x19
                   RenderPath {line} at (349.50,55) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                   RenderPath {rect} at (346,66) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-              RenderSVGText {text} at (-60,30) size 60x11 contains 1 chunk(s)
-                RenderSVGInlineText {#text} at (0,-9) size 60x11
+              RenderSVGText {text} at (-60,30) size 60x10 contains 1 chunk(s)
+                RenderSVGInlineText {#text} at (0,-8) size 60x10
                   chunk 1 (end anchor) text run 1 at (-60.00,30.00) startOffset 0 endOffset 4 width 60.00: "1234"
               RenderSVGContainer {g} at (356,85) size 8x19 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,60.00)}]
                 RenderSVGContainer {g} at (356,85) size 8x19
@@ -423,8 +423,8 @@ layer at (0,0) size 480x360
                 RenderSVGContainer {g} at (386,85) size 8x19
                   RenderPath {line} at (389.50,85) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                   RenderPath {rect} at (386,96) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-              RenderSVGText {text} at (-5,60) size 45x11 contains 4 chunk(s)
-                RenderSVGInlineText {#text} at (0,-9) size 45x11
+              RenderSVGText {text} at (-5,60) size 45x10 contains 4 chunk(s)
+                RenderSVGInlineText {#text} at (0,-8) size 45x10
                   chunk 1 (end anchor) text run 1 at (-5.00,60.00) startOffset 0 endOffset 1 width 15.00: "1"
                   chunk 2 (end anchor) text run 1 at (5.00,60.00) startOffset 1 endOffset 2 width 15.00: "2"
                   chunk 3 (end anchor) text run 1 at (15.00,60.00) startOffset 2 endOffset 3 width 15.00: "3"
@@ -437,8 +437,8 @@ layer at (0,0) size 480x360
                 RenderSVGContainer {g} at (406,115) size 8x19
                   RenderPath {line} at (409.50,115) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                   RenderPath {rect} at (406,126) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-              RenderSVGText {text} at (-5,90) size 65x11 contains 2 chunk(s)
-                RenderSVGInlineText {#text} at (0,-9) size 65x11
+              RenderSVGText {text} at (-5,90) size 65x10 contains 2 chunk(s)
+                RenderSVGInlineText {#text} at (0,-8) size 65x10
                   chunk 1 (end anchor) text run 1 at (-5.00,90.00) startOffset 0 endOffset 1 width 15.00: "1"
                   chunk 2 (end anchor) text run 1 at (15.00,90.00) startOffset 1 endOffset 4 width 45.00: "234"
               RenderSVGContainer {g} at (290,135) size 109x39 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,120.00)}]
@@ -458,8 +458,8 @@ layer at (0,0) size 480x360
                   RenderSVGContainer {g} at (391,155) size 8x19
                     RenderPath {line} at (394.50,155) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                     RenderPath {rect} at (391,166) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-                RenderSVGText {text} at (-60,-10) size 60x31 contains 1 chunk(s)
-                  RenderSVGInlineText {#text} at (0,-9) size 60x31
+                RenderSVGText {text} at (-60,-10) size 60x30 contains 1 chunk(s)
+                  RenderSVGInlineText {#text} at (0,-8) size 60x30
                     chunk 1 (end anchor) text run 1 at (-60.00,-10.00) startOffset 0 endOffset 4 width 60.00: "1234"
               RenderSVGContainer {g} at (345,165) size 49x39 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,150.00)}]
                 RenderSVGContainer {g} at (356,165) size 8x19 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,-10.00)}]
@@ -478,8 +478,8 @@ layer at (0,0) size 480x360
                   RenderSVGContainer {g} at (386,185) size 8x19
                     RenderPath {line} at (389.50,185) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                     RenderPath {rect} at (386,196) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-                RenderSVGText {text} at (-5,-10) size 45x31 contains 4 chunk(s)
-                  RenderSVGInlineText {#text} at (0,-9) size 45x31
+                RenderSVGText {text} at (-5,-10) size 45x30 contains 4 chunk(s)
+                  RenderSVGInlineText {#text} at (0,-8) size 45x30
                     chunk 1 (end anchor) text run 1 at (-5.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
                     chunk 2 (end anchor) text run 1 at (5.00,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
                     chunk 3 (end anchor) text run 1 at (15.00,5.00) startOffset 2 endOffset 3 width 15.00: "3"
@@ -501,8 +501,8 @@ layer at (0,0) size 480x360
                   RenderSVGContainer {g} at (396,215) size 8x19
                     RenderPath {line} at (399.50,215) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                     RenderPath {rect} at (396,226) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-                RenderSVGText {text} at (-25,-10) size 45x31 contains 2 chunk(s)
-                  RenderSVGInlineText {#text} at (0,-9) size 45x31
+                RenderSVGText {text} at (-25,-10) size 45x30 contains 2 chunk(s)
+                  RenderSVGInlineText {#text} at (0,-8) size 45x30
                     chunk 1 (end anchor) text run 1 at (-5.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
                     chunk 2 (end anchor) text run 1 at (-25.00,-5.00) startOffset 1 endOffset 4 width 45.00: "234"
               RenderSVGContainer {g} at (290,225) size 79x34 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,210.00)}]
@@ -514,8 +514,8 @@ layer at (0,0) size 480x360
                   RenderSVGContainer {g} at (361,240) size 8x19
                     RenderPath {line} at (364.50,240) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                     RenderPath {rect} at (361,251) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-                RenderSVGText {text} at (-60,-10) size 60x26 contains 1 chunk(s)
-                  RenderSVGInlineText {#text} at (0,-9) size 60x26
+                RenderSVGText {text} at (-60,-10) size 60x25 contains 1 chunk(s)
+                  RenderSVGInlineText {#text} at (0,-8) size 60x25
                     chunk 1 (end anchor) text run 1 at (-60.00,-10.00) startOffset 0 endOffset 4 width 60.00: "1234"
               RenderSVGContainer {g} at (345,255) size 49x24 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,240.00)}]
                 RenderSVGContainer {g} at (356,255) size 8x19 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,-10.00)}]
@@ -534,8 +534,8 @@ layer at (0,0) size 480x360
                   RenderSVGContainer {g} at (386,260) size 8x19
                     RenderPath {line} at (389.50,260) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                     RenderPath {rect} at (386,271) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-                RenderSVGText {text} at (-5,-10) size 45x17 contains 4 chunk(s)
-                  RenderSVGInlineText {#text} at (0,-9) size 45x17
+                RenderSVGText {text} at (-5,-10) size 45x16 contains 4 chunk(s)
+                  RenderSVGInlineText {#text} at (0,-8) size 45x16
                     chunk 1 (end anchor) text run 1 at (-5.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
                     chunk 2 (end anchor) text run 1 at (5.00,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
                     chunk 3 (end anchor) text run 1 at (15.00,-5.00) startOffset 2 endOffset 3 width 15.00: "3"
@@ -549,8 +549,8 @@ layer at (0,0) size 480x360
                   RenderSVGContainer {g} at (406,290) size 8x19
                     RenderPath {line} at (409.50,290) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                     RenderPath {rect} at (406,301) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-                RenderSVGText {text} at (-5,-10) size 65x17 contains 2 chunk(s)
-                  RenderSVGInlineText {#text} at (0,-9) size 65x17
+                RenderSVGText {text} at (-5,-10) size 65x16 contains 2 chunk(s)
+                  RenderSVGInlineText {#text} at (0,-8) size 65x16
                     chunk 1 (end anchor) text run 1 at (-5.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
                     chunk 2 (end anchor) text run 1 at (15.00,-5.00) startOffset 1 endOffset 4 width 45.00: "234"
     RenderSVGText {text} at (10,350) size 264x46 contains 1 chunk(s)
index 00dd7fd1560adcb6ba9e9d50bed09779cee2b04c..0f7e24bdb9bb8f924bb61e6dc54c03ac55a3d2a5 100644 (file)
@@ -1 +1 @@
-0cd7683922e8a2169a09a5c8c2738faa
\ No newline at end of file
+a99f738d4b08147a3ea0019fe304b41c
\ No newline at end of file
index 91267e403a529921662cbc46cda350346088fa08..c2c1902e48b46f58360e5f82f3853d001d64eb59 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/W3C-SVG-1.1/text-text-06-t-expected.png and b/LayoutTests/platform/mac/svg/W3C-SVG-1.1/text-text-06-t-expected.png differ
index 80b64f5f051968de1de92460350fa20f0a41a819..21130bbfd8e6528b178fe14b9b26f18f7c739aec 100644 (file)
@@ -2,13 +2,13 @@ layer at (0,0) size 480x360
   RenderView at (0,0) size 480x360
 layer at (0,0) size 480x360
   RenderSVGRoot {svg} at (0.50,0.50) size 479x359
-    RenderSVGContainer {g} at (30,55) size 274x209
+    RenderSVGContainer {g} at (30,55) size 278x209
       RenderSVGHiddenContainer {defs} at (0,0) size 0x0
       RenderSVGHiddenContainer {defs} at (0,0) size 0x0
         RenderSVGContainer {g} at (-4,-15) size 8x19
           RenderPath {line} at (-0.50,-15) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#000000]}] [data="M0.00,0.00L0.00,-15.00"]
           RenderPath {rect} at (-4,-4) size 8x8 [fill={[type=SOLID] [color=#000000]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-      RenderSVGContainer {g} at (30,55) size 274x209 [transform={m=((1.00,0.00)(0.00,1.00)) t=(20.00,30.00)}]
+      RenderSVGContainer {g} at (30,55) size 278x209 [transform={m=((1.00,0.00)(0.00,1.00)) t=(20.00,30.00)}]
         RenderSVGContainer {g} at (30,59) size 71x154 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,40.00)}]
           RenderSVGText {text} at (0,0) size 62x14 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,-11) size 62x14
@@ -19,7 +19,7 @@ layer at (0,0) size 480x360
           RenderSVGText {text} at (0,140) size 71x14 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,-11) size 71x14
               chunk 1 text run 1 at (0.00,140.00) startOffset 0 endOffset 15 width 71.00: "x/y positioning"
-        RenderSVGContainer {g} at (126,55) size 178x19 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,40.00)}]
+        RenderSVGContainer {g} at (126,55) size 182x19 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,40.00)}]
           RenderSVGContainer {use} at (126,55) size 8x19
             RenderSVGContainer {g} at (126,55) size 8x19 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,0.00)}]
               RenderSVGContainer {g} at (126,55) size 8x19
@@ -50,15 +50,15 @@ layer at (0,0) size 480x360
               RenderSVGContainer {g} at (246,55) size 8x19
                 RenderPath {line} at (249.50,55) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                 RenderPath {rect} at (246,66) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-          RenderSVGText {text} at (10,0) size 173x11 contains 6 chunk(s)
-            RenderSVGInlineText {#text} at (0,-9) size 173x11
-              chunk 1 text run 1 at (10.00,0.00) startOffset 0 endOffset 1 width 3.00: "f"
-              chunk 2 text run 1 at (180.00,0.00) startOffset 1 endOffset 2 width 3.00: "i"
+          RenderSVGText {text} at (10,0) size 178x10 contains 6 chunk(s)
+            RenderSVGInlineText {#text} at (0,-8) size 178x10
+              chunk 1 text run 1 at (10.00,0.00) startOffset 0 endOffset 1 width 8.00: "f"
+              chunk 2 text run 1 at (180.00,0.00) startOffset 1 endOffset 2 width 8.00: "i"
               chunk 3 text run 1 at (40.00,0.00) startOffset 2 endOffset 3 width 15.00: "1"
               chunk 4 text run 1 at (70.00,0.00) startOffset 3 endOffset 4 width 15.00: "2"
               chunk 5 text run 1 at (100.00,0.00) startOffset 4 endOffset 5 width 15.00: "3"
               chunk 6 text run 1 at (130.00,0.00) startOffset 5 endOffset 6 width 15.00: "4"
-        RenderSVGContainer {g} at (116,85) size 70x79 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,80.00)}]
+        RenderSVGContainer {g} at (116,85) size 80x79 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,80.00)}]
           RenderSVGContainer {use} at (116,85) size 8x19
             RenderSVGContainer {g} at (116,85) size 8x19 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,-10.00)}]
               RenderSVGContainer {g} at (116,85) size 8x19
@@ -89,10 +89,10 @@ layer at (0,0) size 480x360
               RenderSVGContainer {g} at (176,125) size 8x19
                 RenderPath {line} at (179.50,125) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                 RenderPath {rect} at (176,136) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-          RenderSVGText {text} at (0,-10) size 66x71 contains 1 chunk(s)
-            RenderSVGInlineText {#text} at (0,-9) size 66x71
+          RenderSVGText {text} at (0,-10) size 76x70 contains 1 chunk(s)
+            RenderSVGInlineText {#text} at (0,-8) size 76x70
               chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 6 width 75.00: "fi1234"
-        RenderSVGContainer {g} at (126,185) size 178x79 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,180.00)}]
+        RenderSVGContainer {g} at (126,185) size 182x79 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,180.00)}]
           RenderSVGContainer {use} at (126,185) size 8x19
             RenderSVGContainer {g} at (126,185) size 8x19 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,-10.00)}]
               RenderSVGContainer {g} at (126,185) size 8x19
@@ -123,10 +123,10 @@ layer at (0,0) size 480x360
               RenderSVGContainer {g} at (246,225) size 8x19
                 RenderPath {line} at (249.50,225) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                 RenderPath {rect} at (246,236) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-          RenderSVGText {text} at (10,-10) size 173x71 contains 6 chunk(s)
-            RenderSVGInlineText {#text} at (0,-9) size 173x71
-              chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 1 width 3.00: "f"
-              chunk 2 text run 1 at (180.00,50.00) startOffset 1 endOffset 2 width 3.00: "i"
+          RenderSVGText {text} at (10,-10) size 178x70 contains 6 chunk(s)
+            RenderSVGInlineText {#text} at (0,-8) size 178x70
+              chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 1 width 8.00: "f"
+              chunk 2 text run 1 at (180.00,50.00) startOffset 1 endOffset 2 width 8.00: "i"
               chunk 3 text run 1 at (40.00,0.00) startOffset 2 endOffset 3 width 15.00: "1"
               chunk 4 text run 1 at (70.00,10.00) startOffset 3 endOffset 4 width 15.00: "2"
               chunk 5 text run 1 at (100.00,20.00) startOffset 4 endOffset 5 width 15.00: "3"
index 95d27466af6284143bcf7c9b668212147f401751..1f06bad802dc94c6542e016ac56f228b64b70203 100644 (file)
@@ -1 +1 @@
-b6f84d3a372f31d2df519de70c9f16eb
\ No newline at end of file
+735df6f1f116dd2c96bbd5602ca040b5
\ No newline at end of file
index 93a3acb168b9d6c024364ae4a8c15e584ad4e548..cfb67490e62efaf7d5bc91567099d422ac27b334 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/batik/text/textEffect-expected.png and b/LayoutTests/platform/mac/svg/batik/text/textEffect-expected.png differ
index 1f98440d1119626538a11df5bf0f128e71415626..a70ddbf6711f3e5f386d729f42320c50bc7448aa 100644 (file)
@@ -23,20 +23,20 @@ layer at (0,0) size 450x500
       RenderSVGText {text} at (44,160) size 152x59 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,-48) size 152x59
           chunk 1 (middle anchor) text run 1 at (44.00,160.00) startOffset 0 endOffset 5 width 152.00: "BATIK"
-      RenderSVGText {text} at (252,160) size 155x59 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,-48) size 155x59
+      RenderSVGText {text} at (252,160) size 155x52 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,-42) size 155x52
           chunk 1 (middle anchor) text run 1 at (252.94,160.00) startOffset 0 endOffset 5 width 154.11: "BATIK"
       RenderSVGText {text} at (44,260) size 152x59 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,-48) size 152x59
           chunk 1 (middle anchor) text run 1 at (44.00,260.00) startOffset 0 endOffset 5 width 152.00: "BATIK"
-      RenderSVGText {text} at (252,260) size 155x59 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,-48) size 155x59
+      RenderSVGText {text} at (252,260) size 155x52 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,-42) size 155x52
           chunk 1 (middle anchor) text run 1 at (252.94,260.00) startOffset 0 endOffset 5 width 154.11: "BATIK"
       RenderSVGText {text} at (44,360) size 152x59 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,-48) size 152x59
           chunk 1 (middle anchor) text run 1 at (44.00,360.00) startOffset 0 endOffset 5 width 152.00: "BATIK"
-      RenderSVGText {text} at (252,360) size 155x59 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,-48) size 155x59
+      RenderSVGText {text} at (252,360) size 155x52 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,-42) size 155x52
           chunk 1 (middle anchor) text run 1 at (252.94,360.00) startOffset 0 endOffset 5 width 154.11: "BATIK"
       RenderSVGText {text} at (87,400) size 66x14 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,-11) size 66x14
index 53f5acdf03f72edeb849aca391fc0398a61ad45e..f80b571729efec5afac01df3ad574f1f656c39c2 100644 (file)
@@ -1 +1 @@
-c6e3a77963cbb5dcd1cee329b469140e
\ No newline at end of file
+16a7ecf12f57a042979bf50b70b1255b
\ No newline at end of file
index fb0f1030edf620367148ea18713b94c1a696b9e4..2a00db2b1fdcc99b8fae658a49fcdddc04a26b83 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/batik/text/textEffect3-expected.png and b/LayoutTests/platform/mac/svg/batik/text/textEffect3-expected.png differ
index 861bc36c0e90b44f33b961a0b303effd19f316e1..e127f6aa8c9644d3dec6b4f31ebbc675da07c903 100644 (file)
@@ -3,8 +3,8 @@ KRenderingPaintServer {id="radialGradient" [type=RADIAL-GRADIENT] [stops=[(0.00,
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
 layer at (0,0) size 450x500
-  RenderSVGRoot {svg} at (52,16) size 435.80x387
-    RenderSVGContainer {g} at (52,16) size 435.80x387
+  RenderSVGRoot {svg} at (52,16) size 433.80x387
+    RenderSVGContainer {g} at (52,16) size 433.80x387
       RenderSVGText {text} at (99,30) size 252x17 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,-14) size 252x17
           chunk 1 (middle anchor) text run 1 at (99.50,30.00) startOffset 0 endOffset 37 width 251.00: "Gradient and filter on text and tspan"
@@ -35,19 +35,19 @@ layer at (0,0) size 450x500
           RenderSVGInlineText {#text} at (92,-46) size 54x68
             chunk 1 (middle anchor) text run 5 at (150.50,140.00) startOffset 0 endOffset 1 width 35.00: "K"
         RenderSVGInlineText {#text} at (0,0) size 0x0
-      RenderSVGText {text} at (263,140) size 148x79 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,-28) size 36x59
+      RenderSVGText {text} at (263,140) size 146x72 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,-22) size 36x52
           chunk 1 (middle anchor) text run 1 at (263.69,160.00) startOffset 0 endOffset 1 width 35.57: "B"
-        RenderSVGTSpan {tspan} at (0,0) size 18x29
-          RenderSVGInlineText {#text} at (36,-24) size 18x29
+        RenderSVGTSpan {tspan} at (0,0) size 18x26
+          RenderSVGInlineText {#text} at (36,-21) size 18x26
             chunk 1 (middle anchor) text run 2 at (299.26,140.00) startOffset 0 endOffset 1 width 17.79: "A"
-        RenderSVGInlineText {#text} at (54,-48) size 33x59
+        RenderSVGInlineText {#text} at (54,-42) size 33x52
           chunk 1 (middle anchor) text run 3 at (317.05,140.00) startOffset 0 endOffset 1 width 32.58: "T"
-        RenderSVGTSpan {tspan} at (0,0) size 12x44
-          RenderSVGInlineText {#text} at (86,-36) size 12x44
+        RenderSVGTSpan {tspan} at (0,0) size 12x40
+          RenderSVGInlineText {#text} at (86,-32) size 12x40
             chunk 1 (middle anchor) text run 4 at (349.63,140.00) startOffset 0 endOffset 1 width 11.11: "I"
-        RenderSVGTSpan {tspan} at (0,0) size 55x69
-          RenderSVGInlineText {#text} at (93,-46) size 55x69
+        RenderSVGTSpan {tspan} at (0,0) size 52x62
+          RenderSVGInlineText {#text} at (94,-40) size 52x62
             chunk 1 (middle anchor) text run 5 at (360.74,140.00) startOffset 0 endOffset 1 width 35.57: "K"
         RenderSVGInlineText {#text} at (0,0) size 0x0
       RenderSVGText {text} at (54,240) size 146x79 contains 1 chunk(s)
@@ -65,19 +65,19 @@ layer at (0,0) size 450x500
           RenderSVGInlineText {#text} at (92,-46) size 54x68
             chunk 1 (middle anchor) text run 5 at (150.50,240.00) startOffset 0 endOffset 1 width 35.00: "K"
         RenderSVGInlineText {#text} at (0,0) size 0x0
-      RenderSVGText {text} at (263,240) size 148x79 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,-28) size 36x59
+      RenderSVGText {text} at (263,240) size 146x72 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,-22) size 36x52
           chunk 1 (middle anchor) text run 1 at (263.69,260.00) startOffset 0 endOffset 1 width 35.57: "B"
-        RenderSVGTSpan {tspan} at (0,0) size 18x29
-          RenderSVGInlineText {#text} at (36,-24) size 18x29
+        RenderSVGTSpan {tspan} at (0,0) size 18x26
+          RenderSVGInlineText {#text} at (36,-21) size 18x26
             chunk 1 (middle anchor) text run 2 at (299.26,240.00) startOffset 0 endOffset 1 width 17.79: "A"
-        RenderSVGInlineText {#text} at (54,-48) size 33x59
+        RenderSVGInlineText {#text} at (54,-42) size 33x52
           chunk 1 (middle anchor) text run 3 at (317.05,240.00) startOffset 0 endOffset 1 width 32.58: "T"
-        RenderSVGTSpan {tspan} at (0,0) size 12x44
-          RenderSVGInlineText {#text} at (86,-36) size 12x44
+        RenderSVGTSpan {tspan} at (0,0) size 12x40
+          RenderSVGInlineText {#text} at (86,-32) size 12x40
             chunk 1 (middle anchor) text run 4 at (349.63,240.00) startOffset 0 endOffset 1 width 11.11: "I"
-        RenderSVGTSpan {tspan} at (0,0) size 55x69
-          RenderSVGInlineText {#text} at (93,-46) size 55x69
+        RenderSVGTSpan {tspan} at (0,0) size 52x62
+          RenderSVGInlineText {#text} at (94,-40) size 52x62
             chunk 1 (middle anchor) text run 5 at (360.74,240.00) startOffset 0 endOffset 1 width 35.57: "K"
         RenderSVGInlineText {#text} at (0,0) size 0x0
       RenderSVGText {text} at (54,340) size 146x79 contains 1 chunk(s)
@@ -95,19 +95,19 @@ layer at (0,0) size 450x500
           RenderSVGInlineText {#text} at (92,-46) size 54x68
             chunk 1 (middle anchor) text run 5 at (150.50,340.00) startOffset 0 endOffset 1 width 35.00: "K"
         RenderSVGInlineText {#text} at (0,0) size 0x0
-      RenderSVGText {text} at (263,340) size 148x79 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,-28) size 36x59
+      RenderSVGText {text} at (263,340) size 146x72 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,-22) size 36x52
           chunk 1 (middle anchor) text run 1 at (263.69,360.00) startOffset 0 endOffset 1 width 35.57: "B"
-        RenderSVGTSpan {tspan} at (0,0) size 18x29
-          RenderSVGInlineText {#text} at (36,-24) size 18x29
+        RenderSVGTSpan {tspan} at (0,0) size 18x26
+          RenderSVGInlineText {#text} at (36,-21) size 18x26
             chunk 1 (middle anchor) text run 2 at (299.26,340.00) startOffset 0 endOffset 1 width 17.79: "A"
-        RenderSVGInlineText {#text} at (54,-48) size 33x59
+        RenderSVGInlineText {#text} at (54,-42) size 33x52
           chunk 1 (middle anchor) text run 3 at (317.05,340.00) startOffset 0 endOffset 1 width 32.58: "T"
-        RenderSVGTSpan {tspan} at (0,0) size 12x44
-          RenderSVGInlineText {#text} at (86,-36) size 12x44
+        RenderSVGTSpan {tspan} at (0,0) size 12x40
+          RenderSVGInlineText {#text} at (86,-32) size 12x40
             chunk 1 (middle anchor) text run 4 at (349.63,340.00) startOffset 0 endOffset 1 width 11.11: "I"
-        RenderSVGTSpan {tspan} at (0,0) size 55x69
-          RenderSVGInlineText {#text} at (93,-46) size 55x69
+        RenderSVGTSpan {tspan} at (0,0) size 52x62
+          RenderSVGInlineText {#text} at (94,-40) size 52x62
             chunk 1 (middle anchor) text run 5 at (360.74,340.00) startOffset 0 endOffset 1 width 35.57: "K"
         RenderSVGInlineText {#text} at (0,0) size 0x0
       RenderSVGText {text} at (87,400) size 66x14 contains 1 chunk(s)
index a58630b51c1add33f3746c6420ee09e5a6c7d639..2aeee9bd2d5026a4f1a2534d009737fb027dd2ee 100644 (file)
@@ -6,21 +6,21 @@ layer at (0,0) size 450x500
     RenderSVGText {text} at (172,30) size 106x17 contains 1 chunk(s)
       RenderSVGInlineText {#text} at (0,-14) size 106x17
         chunk 1 (middle anchor) text run 1 at (172.00,30.00) startOffset 0 endOffset 15 width 106.00: "Text Position 2"
-    RenderSVGContainer {g} at (50,59) size 399x294
-      RenderSVGText {text} at (50,80) size 53x26 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,-21) size 53x26
+    RenderSVGContainer {g} at (50,61) size 399x292
+      RenderSVGText {text} at (50,80) size 53x23 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,-19) size 53x23
           chunk 1 text run 1 at (50.00,80.00) startOffset 0 endOffset 5 width 53.36: "Batik"
       RenderSVGText {text} at (50,100) size 103x11 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,-9) size 103x11
           chunk 1 text run 1 at (50.00,100.00) startOffset 0 endOffset 21 width 103.00: "<text x=\"100\" y=\"80\">"
-      RenderSVGText {text} at (240,80) size 133x26 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,-21) size 133x26
+      RenderSVGText {text} at (240,80) size 133x23 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,-19) size 133x23
           chunk 1 text run 1 at (240.00,80.00) startOffset 0 endOffset 5 width 53.36: "Batik"
       RenderSVGText {text} at (240,100) size 194x11 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,-9) size 194x11
           chunk 1 text run 1 at (240.00,100.00) startOffset 0 endOffset 41 width 194.00: "<text x=\"240\" y=\"80\" letter-spacing=\"20\">"
-      RenderSVGText {text} at (50,140) size 92x26 contains 5 chunk(s)
-        RenderSVGInlineText {#text} at (0,-21) size 92x26
+      RenderSVGText {text} at (50,140) size 92x23 contains 5 chunk(s)
+        RenderSVGInlineText {#text} at (0,-19) size 92x23
           chunk 1 text run 1 at (50.00,140.00) startOffset 0 endOffset 1 width 16.01: "B"
           chunk 2 text run 1 at (70.00,140.00) startOffset 1 endOffset 2 width 13.35: "a"
           chunk 3 text run 1 at (90.00,140.00) startOffset 2 endOffset 3 width 6.67: "t"
@@ -29,30 +29,30 @@ layer at (0,0) size 450x500
       RenderSVGText {text} at (50,160) size 175x11 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,-9) size 175x11
           chunk 1 text run 1 at (50.00,160.00) startOffset 0 endOffset 35 width 175.00: "<text x=\"50 70 90 110 130\" y=\"140\">"
-      RenderSVGText {text} at (240,140) size 133x26 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,-21) size 133x26
+      RenderSVGText {text} at (240,140) size 133x23 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,-19) size 133x23
           chunk 1 text run 1 at (240.00,140.00) startOffset 0 endOffset 5 width 53.36: "Batik"
       RenderSVGText {text} at (240,160) size 175x11 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,-9) size 175x11
           chunk 1 text run 1 at (240.00,160.00) startOffset 0 endOffset 35 width 175.00: "<text dx=\"240 20 20 20 20\" y=\"140\">"
-      RenderSVGText {text} at (50,200) size 53x26 contains 1 chunk(s)
-        RenderSVGTSpan {tspan} at (0,0) size 53x26
-          RenderSVGInlineText {#text} at (0,-21) size 53x26
+      RenderSVGText {text} at (50,200) size 53x23 contains 1 chunk(s)
+        RenderSVGTSpan {tspan} at (0,0) size 53x23
+          RenderSVGInlineText {#text} at (0,-19) size 53x23
             chunk 1 text run 1 at (50.00,200.00) startOffset 0 endOffset 5 width 53.36: "Batik"
       RenderSVGText {text} at (50,220) size 112x11 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,-9) size 112x11
           chunk 1 text run 1 at (50.00,220.00) startOffset 0 endOffset 22 width 112.00: "<tspan x=\"50\" y=\"200\">"
-      RenderSVGText {text} at (240,200) size 133x26 contains 1 chunk(s)
-        RenderSVGTSpan {tspan} at (0,0) size 133x26
-          RenderSVGInlineText {#text} at (0,-21) size 133x26
+      RenderSVGText {text} at (240,200) size 133x23 contains 1 chunk(s)
+        RenderSVGTSpan {tspan} at (0,0) size 133x23
+          RenderSVGInlineText {#text} at (0,-19) size 133x23
             chunk 1 text run 1 at (240.00,200.00) startOffset 0 endOffset 5 width 53.36: "Batik"
       RenderSVGText {text} at (240,220) size 209x11 contains 1 chunk(s)
         RenderSVGTSpan {tspan} at (0,0) size 209x11
           RenderSVGInlineText {#text} at (0,-9) size 209x11
             chunk 1 text run 1 at (240.00,220.00) startOffset 0 endOffset 43 width 209.00: "<tspan x=\"240\" y=\"200\" letter-spacing=\"20\">"
-      RenderSVGText {text} at (50,260) size 92x26 contains 5 chunk(s)
-        RenderSVGTSpan {tspan} at (0,0) size 92x26
-          RenderSVGInlineText {#text} at (0,-21) size 92x26
+      RenderSVGText {text} at (50,260) size 92x23 contains 5 chunk(s)
+        RenderSVGTSpan {tspan} at (0,0) size 92x23
+          RenderSVGInlineText {#text} at (0,-19) size 92x23
             chunk 1 text run 1 at (50.00,260.00) startOffset 0 endOffset 1 width 16.01: "B"
             chunk 2 text run 1 at (70.00,260.00) startOffset 1 endOffset 2 width 13.35: "a"
             chunk 3 text run 1 at (90.00,260.00) startOffset 2 endOffset 3 width 6.67: "t"
@@ -61,16 +61,16 @@ layer at (0,0) size 450x500
       RenderSVGText {text} at (50,280) size 184x11 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,-9) size 184x11
           chunk 1 text run 1 at (50.00,280.00) startOffset 0 endOffset 36 width 184.00: "<tspan x=\"50 70 90 110 130\" y=\"260\">"
-      RenderSVGText {text} at (240,260) size 133x26 contains 1 chunk(s)
-        RenderSVGTSpan {tspan} at (0,0) size 133x26
-          RenderSVGInlineText {#text} at (0,-21) size 133x26
+      RenderSVGText {text} at (240,260) size 133x23 contains 1 chunk(s)
+        RenderSVGTSpan {tspan} at (0,0) size 133x23
+          RenderSVGInlineText {#text} at (0,-19) size 133x23
             chunk 1 text run 1 at (240.00,260.00) startOffset 0 endOffset 5 width 53.36: "Batik"
       RenderSVGText {text} at (240,280) size 184x11 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,-9) size 184x11
           chunk 1 text run 1 at (240.00,280.00) startOffset 0 endOffset 36 width 184.00: "<tspan dx=\"240 20 20 20 20\" y=\"260\">"
-      RenderSVGText {text} at (50,320) size 92x26 contains 5 chunk(s)
-        RenderSVGTSpan {tspan} at (0,0) size 92x26
-          RenderSVGInlineText {#text} at (0,-21) size 92x26
+      RenderSVGText {text} at (50,320) size 92x23 contains 5 chunk(s)
+        RenderSVGTSpan {tspan} at (0,0) size 92x23
+          RenderSVGInlineText {#text} at (0,-19) size 92x23
             chunk 1 text run 1 at (50.00,320.00) startOffset 0 endOffset 1 width 16.01: "B"
             chunk 2 text run 1 at (70.00,320.00) startOffset 1 endOffset 2 width 13.35: "a"
             chunk 3 text run 1 at (90.00,320.00) startOffset 2 endOffset 3 width 6.67: "t"
@@ -82,9 +82,9 @@ layer at (0,0) size 450x500
         RenderSVGTSpan {tspan} at (0,0) size 137x11
           RenderSVGInlineText {#text} at (33,2) size 137x11
             chunk 2 text run 1 at (83.00,351.00) startOffset 0 endOffset 27 width 137.00: "dx=\"0 10 20 30 40\" y=\"320\">"
-      RenderSVGText {text} at (240,320) size 133x26 contains 1 chunk(s)
-        RenderSVGTSpan {tspan} at (0,0) size 133x26
-          RenderSVGInlineText {#text} at (0,-21) size 133x26
+      RenderSVGText {text} at (240,320) size 133x23 contains 1 chunk(s)
+        RenderSVGTSpan {tspan} at (0,0) size 133x23
+          RenderSVGInlineText {#text} at (0,-19) size 133x23
             chunk 1 text run 1 at (240.00,320.00) startOffset 0 endOffset 5 width 53.36: "Batik"
       RenderSVGText {text} at (240,340) size 191x22 contains 2 chunk(s)
         RenderSVGInlineText {#text} at (0,-9) size 169x11
index 8e879774210b13796c58abb7acbf580acd181414..6182bae969c2af16f01d5b5e463e7be80b865a5d 100644 (file)
@@ -1 +1 @@
-16166fd6c4cc5c3b0d8c90679f5191ae
\ No newline at end of file
+a1bee48ed8445d1470673ab95a1ba50a
\ No newline at end of file
index 3d35df9e72ba3fd8b9750afc05c76c405345d571..e8dc02c0192f11564afabfc71c5c8574dd841586 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/custom/dominant-baseline-hanging-expected.png and b/LayoutTests/platform/mac/svg/custom/dominant-baseline-hanging-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/custom/glyph-selection-lang-attribute-expected.checksum b/LayoutTests/platform/mac/svg/custom/glyph-selection-lang-attribute-expected.checksum
new file mode 100644 (file)
index 0000000..0e3b6d7
--- /dev/null
@@ -0,0 +1 @@
+535881965f18f1b06aa65f84a7df6e71
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/custom/glyph-selection-lang-attribute-expected.png b/LayoutTests/platform/mac/svg/custom/glyph-selection-lang-attribute-expected.png
new file mode 100644 (file)
index 0000000..e07d3ac
Binary files /dev/null and b/LayoutTests/platform/mac/svg/custom/glyph-selection-lang-attribute-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/custom/glyph-selection-lang-attribute-expected.txt b/LayoutTests/platform/mac/svg/custom/glyph-selection-lang-attribute-expected.txt
new file mode 100644 (file)
index 0000000..0d87647
--- /dev/null
@@ -0,0 +1,38 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderSVGRoot {svg} at (0.83,0.83) size 798.33x598.33
+    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
+    RenderSVGContainer {g} at (83.33,16.67) size 41.67x550
+      RenderSVGText {text} at (50,50) size 25x50 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,-40) size 25x50
+          chunk 1 text run 1 at (50.00,50.00) startOffset 0 endOffset 1 width 25.00: "a"
+      RenderSVGText {text} at (50,120) size 25x50 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,-40) size 25x50
+          chunk 1 text run 1 at (50.00,120.00) startOffset 0 endOffset 1 width 25.00: "a"
+      RenderSVGText {text} at (50,190) size 25x50 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,-40) size 25x50
+          chunk 1 text run 1 at (50.00,190.00) startOffset 0 endOffset 1 width 25.00: "a"
+      RenderSVGText {text} at (50,260) size 25x50 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,-40) size 25x50
+          chunk 1 text run 1 at (50.00,260.00) startOffset 0 endOffset 1 width 25.00: "a"
+      RenderSVGText {text} at (50,330) size 25x50 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,-40) size 25x50
+          chunk 1 text run 1 at (50.00,330.00) startOffset 0 endOffset 1 width 25.00: "a"
+    RenderSVGContainer {g} at (250.00,16.67) size 41.67x550 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,0.00)}]
+      RenderSVGText {text} at (50,50) size 25x50 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,-40) size 25x50
+          chunk 1 text run 1 at (50.00,50.00) startOffset 0 endOffset 1 width 25.00: "a"
+      RenderSVGText {text} at (50,120) size 25x50 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,-40) size 25x50
+          chunk 1 text run 1 at (50.00,120.00) startOffset 0 endOffset 1 width 25.00: "a"
+      RenderSVGText {text} at (50,190) size 25x50 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,-40) size 25x50
+          chunk 1 text run 1 at (50.00,190.00) startOffset 0 endOffset 1 width 25.00: "a"
+      RenderSVGText {text} at (50,260) size 25x50 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,-40) size 25x50
+          chunk 1 text run 1 at (50.00,260.00) startOffset 0 endOffset 1 width 25.00: "a"
+      RenderSVGText {text} at (50,330) size 25x50 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,-40) size 25x50
+          chunk 1 text run 1 at (50.00,330.00) startOffset 0 endOffset 1 width 25.00: "a"
+    RenderPath {rect} at (0.83,0.83) size 798.33x598.33 [stroke={[type=SOLID] [color=#000000]}] [data="M1.00,1.00L479.00,1.00L479.00,359.00L1.00,359.00"]
index 31289623b6a8d93e507cc857b23d3a4a480953b6..ffb7200b7fea7e75074a17cf3d3e3f1751ea880f 100644 (file)
@@ -58,10 +58,10 @@ layer at (0,0) size 1026x1014
                         layer at (0,0) size 480x360
                           RenderView at (0,0) size 480x360
                         layer at (0,0) size 480x360
-                          RenderSVGRoot {svg} at (0.50,0.50) size 479x359
-                            RenderSVGContainer {g} at (35.10,10.80) size 428.40x304.20
+                          RenderSVGRoot {svg} at (0.50,-10.80) size 479x370.30
+                            RenderSVGContainer {g} at (35.10,-10.80) size 428.40x325.80
                               RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-                              RenderSVGContainer {g} at (35.10,10.80) size 428.40x304.20 [transform={m=((1.80,0.00)(0.00,1.80)) t=(0.00,0.00)}]
+                              RenderSVGContainer {g} at (35.10,-10.80) size 428.40x325.80 [transform={m=((1.80,0.00)(0.00,1.80)) t=(0.00,0.00)}]
                                 RenderPath {rect} at (36,18) size 414x279 [fill={[type=SOLID] [color=#C0C0C0]}] [data="M20.00,10.00L250.00,10.00L250.00,165.00L20.00,165.00"]
                                 RenderPath {line} at (58.50,18) size 27x297 [stroke={[type=SOLID] [color=#FFFFFF] [stroke width=15.00]}] [fill={[type=SOLID] [color=#000000]}] [data="M40.00,10.00L40.00,175.00"]
                                 RenderPath {line} at (112.50,18) size 27x297 [stroke={[type=SOLID] [color=#FFFFFF] [stroke width=15.00]}] [fill={[type=SOLID] [color=#000000]}] [data="M70.00,10.00L70.00,175.00"]
@@ -72,9 +72,9 @@ layer at (0,0) size 1026x1014
                                 RenderPath {line} at (382.50,18) size 27x297 [stroke={[type=SOLID] [color=#FFFFFF] [stroke width=15.00]}] [fill={[type=SOLID] [color=#000000]}] [data="M220.00,10.00L220.00,175.00"]
                                 RenderPath {line} at (436.50,18) size 27x297 [stroke={[type=SOLID] [color=#FFFFFF] [stroke width=15.00]}] [fill={[type=SOLID] [color=#000000]}] [data="M250.00,10.00L250.00,175.00"]
                                 RenderPath {rect} at (35.10,17.10) size 415.80x280.80 [stroke={[type=SOLID] [color=#000000]}] [data="M20.00,10.00L250.00,10.00L250.00,165.00L20.00,165.00"]
-                                RenderSVGContainer {g} at (54,10.80) size 381.60x268.20 [opacity=0.50]
+                                RenderSVGContainer {g} at (54,-10.80) size 381.60x289.80 [opacity=0.50]
                                   RenderSVGText {text} at (30,90) size 132x120 contains 1 chunk(s)
-                                    RenderSVGInlineText {#text} at (0,-84) size 132x120
+                                    RenderSVGInlineText {#text} at (0,-96) size 132x120
                                       chunk 1 text run 1 at (30.00,90.00) startOffset 0 endOffset 3 width 132.36: "SVG"
                                   RenderPath {rect} at (126,99) size 234x126 [fill={[type=SOLID] [color=#820032]}] [data="M70.00,55.00L200.00,55.00L200.00,125.00L70.00,125.00"]
                                   RenderImage {image} at (0,0) size 80x80
index f378a10048e33b9caf1bb342a0759d9654cfda1b..44b70171e2294d8a6111f324a6d9525f8193669d 100644 (file)
@@ -1 +1 @@
-c6fb4ae13b95ee9a9ebae63541cfd03b
\ No newline at end of file
+0f23a1fbd345da676e6bb2083c2a4af6
\ No newline at end of file
index c40a7a2959c4ebc2c377b6f83dbeeb15c8650a28..63580ac5d36c1e7904be8b5d073ab2d723f2ce5b 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/custom/use-on-g-containing-foreignObject-and-image-expected.png and b/LayoutTests/platform/mac/svg/custom/use-on-g-containing-foreignObject-and-image-expected.png differ
index 6294ab4c3bad265da88b49d106109872e6d3a1be..74250849eff4bf68eccef745cedaff75baf43b67 100644 (file)
@@ -1 +1 @@
-5ece9b987ac06296694c51166883080c
\ No newline at end of file
+ca934a9924f37281d24a27d7d85e09c8
\ No newline at end of file
index 1148cafc9b222160514f31bbec7227ef7647785e..411d8aff353a1630dfa5b6d9e9603262f041b29c 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/hixie/mixed/008-expected.png and b/LayoutTests/platform/mac/svg/hixie/mixed/008-expected.png differ
index 01eea3befe718893001861e96cd6652a4529c61f..3f9283633945b8c9cfd5c0f6c5f25c4cae0a1a07 100644 (file)
@@ -1 +1 @@
-15e2d1fd6057e9bf9a02fe222f733688
\ No newline at end of file
+5b9c3aa2f242d5d7a5608021b088abd8
\ No newline at end of file
index ece3790f5efac8c1143fe224d2f6dd7263c399e1..4446f10d3923ed7e5be148994831208bc4ab0556 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/hixie/mixed/009-expected.png and b/LayoutTests/platform/mac/svg/hixie/mixed/009-expected.png differ
index 7626b804e477203a9af4fe6f274928405d17e1e9..2433d0a8e51c6dcb7a7ba3045912ce3c005c868c 100644 (file)
@@ -1 +1 @@
-1c678b82703cb46c3373e2cdfa8078fb
\ No newline at end of file
+80ce9eedc85e1016484fd611de1001ae
\ No newline at end of file
index 9a98d15329ad1d590cccd9f838fcba191970a506..f7ff28df966a954b9cce5e0b62530e726e3d3540 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/hixie/viewbox/preserveAspectRatio/001-expected.png and b/LayoutTests/platform/mac/svg/hixie/viewbox/preserveAspectRatio/001-expected.png differ
index 9ace18e8e203b6c59a8f572b47c6645544adfb73..bb075c0cae837318241e2ce20c19f8bd5727875e 100644 (file)
@@ -1 +1 @@
-b1937e38977f2e9e89a236f106e915d3
\ No newline at end of file
+fd7d85442fd8965616c2e56e28017939
\ No newline at end of file
index 461b00e4435a36dbf15efb78c681b404210c7c03..a1b2baf5db206681c83292473e802d24b28f4e5d 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/text/text-altglyph-01-b-expected.png and b/LayoutTests/platform/mac/svg/text/text-altglyph-01-b-expected.png differ
index c2c765f0b6cecb877e49ad2b0bfdf3ff26170924..7ea2d76296935e1f71052699220e1de67b9120ec 100644 (file)
@@ -12,11 +12,11 @@ layer at (0,0) size 800x600
       RenderSVGHiddenContainer {defs} at (0,0) size 0x0
       RenderSVGContainer {g} at (82.22,315.56) size 698.89x160.56
         RenderSVGText {text}
-        RenderSVGText {text} at (50,270) size 38x75 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,-60) size 38x75
+        RenderSVGText {text} at (50,270) size 38x67 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,-52) size 38x67
             chunk 1 text run 1 at (50.00,270.00) startOffset 0 endOffset 1 width 37.50: "D"
-        RenderSVGText {text} at (280,270) size 188x75 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,-60) size 188x75
+        RenderSVGText {text} at (280,270) size 188x67 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,-52) size 188x67
             chunk 1 text run 1 at (280.00,270.00) startOffset 0 endOffset 5 width 157.50: "SASSY"
     RenderSVGText {text} at (10,340) size 264x46 contains 1 chunk(s)
       RenderSVGInlineText {#text} at (0,-36) size 264x46
index 6e27202ee157c34e7898811d580e6dbfa2de7efa..fa0344dfa002d9cdd6173849a8a8daa577b4e124 100644 (file)
@@ -1 +1 @@
-f4dc5baeaa0b5afb6a916782ebfb12cc
\ No newline at end of file
+359be44fd8c2475b53ef6fa1682c0cd9
\ No newline at end of file
index 6e540936e703d2f1aeb9d12eb05548078d5a9053..fefeaee4db0076fdf3d697e06eeb945ef30397e4 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/text/text-text-04-t-expected.png and b/LayoutTests/platform/mac/svg/text/text-text-04-t-expected.png differ
index 4a49b320ea8cb25202a510666e20ef48cdb3a902..d7949c3b655a79583ff6a65c165b52e0941648b5 100644 (file)
@@ -3,12 +3,12 @@ layer at (0,0) size 800x600
 layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (0.83,0.83) size 798.33x598.33
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-    RenderSVGContainer {g} at (60,33.33) size 696.67x483.33
-      RenderSVGContainer {g} at (60.00,33.33) size 256.67x41.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,40.00)}]
+    RenderSVGContainer {g} at (60,40) size 696.67x475
+      RenderSVGContainer {g} at (60.00,40) size 256.67x33.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,40.00)}]
         RenderSVGText {text} at (-94,0) size 65x18 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-14) size 65x18
             chunk 1 (end anchor) text run 1 at (-94.00,0.00) startOffset 0 endOffset 9 width 64.00: "Reference"
-        RenderSVGContainer {g} at (210.00,33.33) size 106.67x41.67
+        RenderSVGContainer {g} at (210.00,40) size 106.67x33.33
           RenderSVGContainer {use} at (210.00,60.00) size 13.33x13.33
             RenderSVGContainer {g} at (210.00,60.00) size 13.33x13.33
               RenderPath {rect} at (210.00,60.00) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
@@ -21,12 +21,12 @@ layer at (0,0) size 800x600
           RenderSVGContainer {use} at (285,60.00) size 13.33x13.33
             RenderSVGContainer {g} at (285,60.00) size 13.33x13.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(45.00,0.00)}]
               RenderPath {rect} at (285,60.00) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-          RenderSVGText {text} at (0,0) size 60x25 contains 1 chunk(s)
-            RenderSVGInlineText {#text} at (0,-20) size 60x25
+          RenderSVGText {text} at (0,0) size 60x20 contains 1 chunk(s)
+            RenderSVGInlineText {#text} at (0,-16) size 60x20
               chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 4 width 60.00: "1234"
       RenderSVGHiddenContainer {defs} at (0,0) size 0x0
         RenderPath {rect} at (-4,-4) size 8x8 [fill={[type=SOLID] [color=#000000]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-      RenderSVGContainer {g} at (121.67,100.00) size 253.33x41.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,80.00)}]
+      RenderSVGContainer {g} at (121.67,106.67) size 253.33x33.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,80.00)}]
         RenderSVGText {text} at (-57,0) size 28x18 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-14) size 28x18
             chunk 1 (end anchor) text run 1 at (-57.00,0.00) startOffset 0 endOffset 5 width 27.00: "x all"
@@ -45,13 +45,13 @@ layer at (0,0) size 800x600
         RenderSVGContainer {use} at (343.33,126.67) size 13.33x13.33
           RenderSVGContainer {g} at (343.33,126.67) size 13.33x13.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(80.00,0.00)}]
             RenderPath {rect} at (343.33,126.67) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-        RenderSVGText {text} at (20,0) size 75x25 contains 4 chunk(s)
-          RenderSVGInlineText {#text} at (0,-20) size 75x25
+        RenderSVGText {text} at (20,0) size 75x20 contains 4 chunk(s)
+          RenderSVGInlineText {#text} at (0,-16) size 75x20
             chunk 1 text run 1 at (20.00,0.00) startOffset 0 endOffset 1 width 15.00: "1"
             chunk 2 text run 1 at (40.00,0.00) startOffset 1 endOffset 2 width 15.00: "2"
             chunk 3 text run 1 at (60.00,0.00) startOffset 2 endOffset 3 width 15.00: "3"
             chunk 4 text run 1 at (80.00,0.00) startOffset 3 endOffset 4 width 15.00: "4"
-      RenderSVGContainer {g} at (93.33,166.67) size 296.67x41.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,120.00)}]
+      RenderSVGContainer {g} at (93.33,173.33) size 296.67x33.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,120.00)}]
         RenderSVGText {text} at (-74,0) size 45x18 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-14) size 45x18
             chunk 1 (end anchor) text run 1 at (-74.00,0.00) startOffset 0 endOffset 6 width 44.00: "x more"
@@ -73,13 +73,13 @@ layer at (0,0) size 800x600
         RenderSVGContainer {use} at (376.67,193.33) size 13.33x13.33
           RenderSVGContainer {g} at (376.67,193.33) size 13.33x13.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,0.00)}]
             RenderPath {rect} at (376.67,193.33) size 13.33x13.33 [fill={[type=SOLID] [color=#FF0000]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-        RenderSVGText {text} at (20,0) size 75x25 contains 4 chunk(s)
-          RenderSVGInlineText {#text} at (0,-20) size 75x25
+        RenderSVGText {text} at (20,0) size 75x20 contains 4 chunk(s)
+          RenderSVGInlineText {#text} at (0,-16) size 75x20
             chunk 1 text run 1 at (20.00,0.00) startOffset 0 endOffset 1 width 15.00: "1"
             chunk 2 text run 1 at (40.00,0.00) startOffset 1 endOffset 2 width 15.00: "2"
             chunk 3 text run 1 at (60.00,0.00) startOffset 2 endOffset 3 width 15.00: "3"
             chunk 4 text run 1 at (80.00,0.00) startOffset 3 endOffset 4 width 15.00: "4"
-      RenderSVGContainer {g} at (86.67,233.33) size 280x41.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,160.00)}]
+      RenderSVGContainer {g} at (86.67,240.00) size 280x33.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,160.00)}]
         RenderSVGText {text} at (-78,0) size 49x18 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-14) size 49x18
             chunk 1 (end anchor) text run 1 at (-78.00,0.00) startOffset 0 endOffset 7 width 48.00: "x fewer"
@@ -98,12 +98,12 @@ layer at (0,0) size 800x600
         RenderSVGContainer {use} at (335,260) size 13.33x13.33
           RenderSVGContainer {g} at (335,260) size 13.33x13.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(75.00,0.00)}]
             RenderPath {rect} at (335,260) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-        RenderSVGText {text} at (20,0) size 70x25 contains 3 chunk(s)
-          RenderSVGInlineText {#text} at (0,-20) size 70x25
+        RenderSVGText {text} at (20,0) size 70x20 contains 3 chunk(s)
+          RenderSVGInlineText {#text} at (0,-16) size 70x20
             chunk 1 text run 1 at (20.00,0.00) startOffset 0 endOffset 1 width 15.00: "1"
             chunk 2 text run 1 at (40.00,0.00) startOffset 1 endOffset 2 width 15.00: "2"
             chunk 3 text run 1 at (60.00,0.00) startOffset 2 endOffset 4 width 30.00: "34"
-      RenderSVGContainer {g} at (121.67,283.33) size 195x75 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,200.00)}]
+      RenderSVGContainer {g} at (121.67,290.00) size 195x66.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,200.00)}]
         RenderSVGText {text} at (-57,0) size 28x18 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-14) size 28x18
             chunk 1 (end anchor) text run 1 at (-57.00,0.00) startOffset 0 endOffset 5 width 27.00: "y all"
@@ -119,10 +119,10 @@ layer at (0,0) size 800x600
         RenderSVGContainer {use} at (285,343.33) size 13.33x13.33
           RenderSVGContainer {g} at (285,343.33) size 13.33x13.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(45.00,10.00)}]
             RenderPath {rect} at (285,343.33) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-        RenderSVGText {text} at (0,-10) size 60x45 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,-20) size 60x45
+        RenderSVGText {text} at (0,-10) size 60x40 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,-16) size 60x40
             chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 4 width 60.00: "1234"
-      RenderSVGContainer {g} at (93.33,366.67) size 223.33x75 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,250.00)}]
+      RenderSVGContainer {g} at (93.33,373.33) size 223.33x66.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,250.00)}]
         RenderSVGText {text} at (-74,0) size 45x18 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-14) size 45x18
             chunk 1 (end anchor) text run 1 at (-74.00,0.00) startOffset 0 endOffset 6 width 44.00: "y more"
@@ -138,10 +138,10 @@ layer at (0,0) size 800x600
         RenderSVGContainer {use} at (285,426.67) size 13.33x13.33
           RenderSVGContainer {g} at (285,426.67) size 13.33x13.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(45.00,10.00)}]
             RenderPath {rect} at (285,426.67) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-        RenderSVGText {text} at (0,-10) size 60x45 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,-20) size 60x45
+        RenderSVGText {text} at (0,-10) size 60x40 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,-16) size 60x40
             chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 4 width 60.00: "1234"
-      RenderSVGContainer {g} at (86.67,450) size 230x66.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,300.00)}]
+      RenderSVGContainer {g} at (86.67,456.67) size 230x58.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,300.00)}]
         RenderSVGText {text} at (-78,0) size 49x18 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,-14) size 49x18
             chunk 1 (end anchor) text run 1 at (-78.00,0.00) startOffset 0 endOffset 7 width 48.00: "y fewer"
@@ -157,11 +157,11 @@ layer at (0,0) size 800x600
         RenderSVGContainer {use} at (285,501.67) size 13.33x13.33
           RenderSVGContainer {g} at (285,501.67) size 13.33x13.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(45.00,5.00)}]
             RenderPath {rect} at (285,501.67) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-        RenderSVGText {text} at (0,-10) size 60x40 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,-20) size 60x40
+        RenderSVGText {text} at (0,-10) size 60x35 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,-16) size 60x35
             chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 4 width 60.00: "1234"
-      RenderSVGContainer {g} at (401.67,83.33) size 355x341.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(220.00,0.00)}]
-        RenderSVGContainer {g} at (468.33,83.33) size 273.33x75 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,80.00)}]
+      RenderSVGContainer {g} at (401.67,90) size 355x333.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(220.00,0.00)}]
+        RenderSVGContainer {g} at (468.33,90.00) size 273.33x66.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,80.00)}]
           RenderSVGText {text} at (-69,0) size 40x18 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,-14) size 40x18
               chunk 1 (end anchor) text run 1 at (-69.00,0.00) startOffset 0 endOffset 7 width 39.00: "x/y all"
@@ -180,13 +180,13 @@ layer at (0,0) size 800x600
           RenderSVGContainer {use} at (710,143.33) size 13.33x13.33
             RenderSVGContainer {g} at (710.00,143.33) size 13.33x13.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(80.00,10.00)}]
               RenderPath {rect} at (710.00,143.33) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-          RenderSVGText {text} at (20,-10) size 75x45 contains 4 chunk(s)
-            RenderSVGInlineText {#text} at (0,-20) size 75x45
+          RenderSVGText {text} at (20,-10) size 75x40 contains 4 chunk(s)
+            RenderSVGInlineText {#text} at (0,-16) size 75x40
               chunk 1 text run 1 at (20.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
               chunk 2 text run 1 at (40.00,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
               chunk 3 text run 1 at (60.00,5.00) startOffset 2 endOffset 3 width 15.00: "3"
               chunk 4 text run 1 at (80.00,10.00) startOffset 3 endOffset 4 width 15.00: "4"
-        RenderSVGContainer {g} at (440.00,150) size 316.67x90 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,120.00)}]
+        RenderSVGContainer {g} at (440.00,156.67) size 316.67x83.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,120.00)}]
           RenderSVGText {text} at (-86,0) size 57x18 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,-14) size 57x18
               chunk 1 (end anchor) text run 1 at (-86.00,0.00) startOffset 0 endOffset 8 width 56.00: "x/y more"
@@ -208,13 +208,13 @@ layer at (0,0) size 800x600
           RenderSVGContainer {use} at (743.33,226.67) size 13.33x13.33
             RenderSVGContainer {g} at (743.33,226.67) size 13.33x13.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,20.00)}]
               RenderPath {rect} at (743.33,226.67) size 13.33x13.33 [fill={[type=SOLID] [color=#FF0000]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-          RenderSVGText {text} at (20,-10) size 75x45 contains 4 chunk(s)
-            RenderSVGInlineText {#text} at (0,-20) size 75x45
+          RenderSVGText {text} at (20,-10) size 75x40 contains 4 chunk(s)
+            RenderSVGInlineText {#text} at (0,-16) size 75x40
               chunk 1 text run 1 at (20.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
               chunk 2 text run 1 at (40.00,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
               chunk 3 text run 1 at (60.00,5.00) startOffset 2 endOffset 3 width 15.00: "3"
               chunk 4 text run 1 at (80.00,10.00) startOffset 3 endOffset 4 width 15.00: "4"
-        RenderSVGContainer {g} at (433.33,216.67) size 300x66.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,160.00)}]
+        RenderSVGContainer {g} at (433.33,223.33) size 300x58.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,160.00)}]
           RenderSVGText {text} at (-90,0) size 61x18 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,-14) size 61x18
               chunk 1 (end anchor) text run 1 at (-90.00,0.00) startOffset 0 endOffset 9 width 60.00: "x/y fewer"
@@ -233,12 +233,12 @@ layer at (0,0) size 800x600
           RenderSVGContainer {use} at (701.67,268.33) size 13.33x13.33
             RenderSVGContainer {g} at (701.67,268.33) size 13.33x13.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(75.00,5.00)}]
               RenderPath {rect} at (701.67,268.33) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-          RenderSVGText {text} at (20,-10) size 70x40 contains 3 chunk(s)
-            RenderSVGInlineText {#text} at (0,-20) size 70x40
+          RenderSVGText {text} at (20,-10) size 70x35 contains 3 chunk(s)
+            RenderSVGInlineText {#text} at (0,-16) size 70x35
               chunk 1 text run 1 at (20.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
               chunk 2 text run 1 at (40.00,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
               chunk 3 text run 1 at (60.00,5.00) startOffset 2 endOffset 4 width 30.00: "34"
-        RenderSVGContainer {g} at (401.67,283.33) size 340x66.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,200.00)}]
+        RenderSVGContainer {g} at (401.67,290.00) size 340x58.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,200.00)}]
           RenderSVGText {text} at (-109,0) size 80x18 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,-14) size 80x18
               chunk 1 (end anchor) text run 1 at (-109.00,0.00) startOffset 0 endOffset 13 width 79.00: "x all y fewer"
@@ -257,13 +257,13 @@ layer at (0,0) size 800x600
           RenderSVGContainer {use} at (710,335.00) size 13.33x13.33
             RenderSVGContainer {g} at (710.00,335) size 13.33x13.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(80.00,5.00)}]
               RenderPath {rect} at (710.00,335) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-          RenderSVGText {text} at (20,-10) size 75x40 contains 4 chunk(s)
-            RenderSVGInlineText {#text} at (0,-20) size 75x40
+          RenderSVGText {text} at (20,-10) size 75x35 contains 4 chunk(s)
+            RenderSVGInlineText {#text} at (0,-16) size 75x35
               chunk 1 text run 1 at (20.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
               chunk 2 text run 1 at (40.00,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
               chunk 3 text run 1 at (60.00,5.00) startOffset 2 endOffset 3 width 15.00: "3"
               chunk 4 text run 1 at (80.00,5.00) startOffset 3 endOffset 4 width 15.00: "4"
-        RenderSVGContainer {g} at (401.67,350) size 331.67x75 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,240.00)}]
+        RenderSVGContainer {g} at (401.67,356.67) size 331.67x66.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,240.00)}]
           RenderSVGText {text} at (-109,0) size 80x18 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,-14) size 80x18
               chunk 1 (end anchor) text run 1 at (-109.00,0.00) startOffset 0 endOffset 13 width 79.00: "x fewer y all"
@@ -282,8 +282,8 @@ layer at (0,0) size 800x600
           RenderSVGContainer {use} at (705.87,410) size 13.33x13.33
             RenderSVGContainer {g} at (705.87,410) size 13.33x13.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(77.52,10.00)}]
               RenderPath {rect} at (705.87,410) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-          RenderSVGText {text} at (20,-10) size 70x45 contains 3 chunk(s)
-            RenderSVGInlineText {#text} at (0,-20) size 70x45
+          RenderSVGText {text} at (20,-10) size 70x40 contains 3 chunk(s)
+            RenderSVGInlineText {#text} at (0,-16) size 70x40
               chunk 1 text run 1 at (20.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
               chunk 2 text run 1 at (40.00,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
               chunk 3 text run 1 at (60.00,5.00) startOffset 2 endOffset 4 width 30.00: "34"
index 3f401dd78b4027b5160babdbdc350bc358c9e204..7a816242e3c2b3efcb07c12d42d3251cc093b791 100644 (file)
@@ -1 +1 @@
-bcc1bc7338bdb740ec3a9859440073f0
\ No newline at end of file
+88d517e37039a22a204a7951ff775f59
\ No newline at end of file
index a079afa7d24a531956d8578c76ed28c33d5d9a75..afac4a147df9102e8986f632419d5b8079ac00d2 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/text/text-text-05-t-expected.png and b/LayoutTests/platform/mac/svg/text/text-text-05-t-expected.png differ
index 680ca5c14d8fd886055ed17fda86eb14ff512d95..58cb506fe72e6a66c7b2144031c82a3243602957 100644 (file)
@@ -50,8 +50,8 @@ layer at (0,0) size 800x600
               RenderSVGContainer {g} at (243.33,91.67) size 13.33x31.67
                 RenderPath {line} at (249.17,91.67) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                 RenderPath {rect} at (243.33,110) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-          RenderSVGText {text} at (0,30) size 60x11 contains 1 chunk(s)
-            RenderSVGInlineText {#text} at (0,-9) size 60x11
+          RenderSVGText {text} at (0,30) size 60x10 contains 1 chunk(s)
+            RenderSVGInlineText {#text} at (0,-8) size 60x10
               chunk 1 text run 1 at (0.00,30.00) startOffset 0 endOffset 4 width 60.00: "1234"
           RenderSVGContainer {use} at (260,141.67) size 13.33x31.67
             RenderSVGContainer {g} at (260,141.67) size 13.33x31.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,60.00)}]
@@ -73,8 +73,8 @@ layer at (0,0) size 800x600
               RenderSVGContainer {g} at (310,141.67) size 13.33x31.67
                 RenderPath {line} at (315.83,141.67) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                 RenderPath {rect} at (310,160.00) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-          RenderSVGText {text} at (10,60) size 45x11 contains 4 chunk(s)
-            RenderSVGInlineText {#text} at (0,-9) size 45x11
+          RenderSVGText {text} at (10,60) size 45x10 contains 4 chunk(s)
+            RenderSVGInlineText {#text} at (0,-8) size 45x10
               chunk 1 text run 1 at (10.00,60.00) startOffset 0 endOffset 1 width 15.00: "1"
               chunk 2 text run 1 at (20.00,60.00) startOffset 1 endOffset 2 width 15.00: "2"
               chunk 3 text run 1 at (30.00,60.00) startOffset 2 endOffset 3 width 15.00: "3"
@@ -89,8 +89,8 @@ layer at (0,0) size 800x600
               RenderSVGContainer {g} at (343.33,191.67) size 13.33x31.67
                 RenderPath {line} at (349.17,191.67) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                 RenderPath {rect} at (343.33,210.00) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-          RenderSVGText {text} at (10,90) size 95x11 contains 2 chunk(s)
-            RenderSVGInlineText {#text} at (0,-9) size 95x11
+          RenderSVGText {text} at (10,90) size 95x10 contains 2 chunk(s)
+            RenderSVGInlineText {#text} at (0,-8) size 95x10
               chunk 1 text run 1 at (10.00,90.00) startOffset 0 endOffset 1 width 15.00: "1"
               chunk 2 text run 1 at (60.00,90.00) startOffset 1 endOffset 4 width 45.00: "234"
           RenderSVGContainer {g} at (243.33,225.00) size 106.67x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,120.00)}]
@@ -114,8 +114,8 @@ layer at (0,0) size 800x600
                 RenderSVGContainer {g} at (318.33,258.33) size 13.33x31.67
                   RenderPath {line} at (324.17,258.33) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                   RenderPath {rect} at (318.33,276.67) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-            RenderSVGText {text} at (0,-10) size 60x31 contains 1 chunk(s)
-              RenderSVGInlineText {#text} at (0,-9) size 60x31
+            RenderSVGText {text} at (0,-10) size 60x30 contains 1 chunk(s)
+              RenderSVGInlineText {#text} at (0,-8) size 60x30
                 chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 4 width 60.00: "1234"
           RenderSVGContainer {g} at (260,275) size 81.67x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,150.00)}]
             RenderSVGContainer {use} at (260,275) size 13.33x31.67
@@ -138,8 +138,8 @@ layer at (0,0) size 800x600
                 RenderSVGContainer {g} at (310,308.33) size 13.33x31.67
                   RenderPath {line} at (315.83,308.33) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                   RenderPath {rect} at (310,326.67) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-            RenderSVGText {text} at (10,-10) size 45x31 contains 4 chunk(s)
-              RenderSVGInlineText {#text} at (0,-9) size 45x31
+            RenderSVGText {text} at (10,-10) size 45x30 contains 4 chunk(s)
+              RenderSVGInlineText {#text} at (0,-8) size 45x30
                 chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
                 chunk 2 text run 1 at (20.00,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
                 chunk 3 text run 1 at (30.00,5.00) startOffset 2 endOffset 3 width 15.00: "3"
@@ -165,8 +165,8 @@ layer at (0,0) size 800x600
                 RenderSVGContainer {g} at (326.67,358.33) size 13.33x31.67
                   RenderPath {line} at (332.50,358.33) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                   RenderPath {rect} at (326.67,376.67) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-            RenderSVGText {text} at (10,-10) size 55x31 contains 2 chunk(s)
-              RenderSVGInlineText {#text} at (0,-9) size 55x31
+            RenderSVGText {text} at (10,-10) size 55x30 contains 2 chunk(s)
+              RenderSVGInlineText {#text} at (0,-8) size 55x30
                 chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
                 chunk 2 text run 1 at (20.00,-5.00) startOffset 1 endOffset 4 width 45.00: "234"
           RenderSVGContainer {g} at (243.33,375) size 106.67x56.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,210.00)}]
@@ -180,8 +180,8 @@ layer at (0,0) size 800x600
                 RenderSVGContainer {g} at (268.33,400) size 13.33x31.67
                   RenderPath {line} at (274.17,400) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                   RenderPath {rect} at (268.33,418.33) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-            RenderSVGText {text} at (0,-10) size 60x26 contains 1 chunk(s)
-              RenderSVGInlineText {#text} at (0,-9) size 60x26
+            RenderSVGText {text} at (0,-10) size 60x25 contains 1 chunk(s)
+              RenderSVGInlineText {#text} at (0,-8) size 60x25
                 chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 4 width 60.00: "1234"
           RenderSVGContainer {g} at (260,425) size 81.67x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,240.00)}]
             RenderSVGContainer {use} at (260,425) size 13.33x31.67
@@ -204,8 +204,8 @@ layer at (0,0) size 800x600
                 RenderSVGContainer {g} at (310,433.33) size 13.33x31.67
                   RenderPath {line} at (315.83,433.33) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                   RenderPath {rect} at (310,451.67) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-            RenderSVGText {text} at (10,-10) size 45x17 contains 4 chunk(s)
-              RenderSVGInlineText {#text} at (0,-9) size 45x17
+            RenderSVGText {text} at (10,-10) size 45x16 contains 4 chunk(s)
+              RenderSVGInlineText {#text} at (0,-8) size 45x16
                 chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
                 chunk 2 text run 1 at (20.00,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
                 chunk 3 text run 1 at (30.00,-5.00) startOffset 2 endOffset 3 width 15.00: "3"
@@ -221,8 +221,8 @@ layer at (0,0) size 800x600
                 RenderSVGContainer {g} at (343.33,483.33) size 13.33x31.67
                   RenderPath {line} at (349.17,483.33) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                   RenderPath {rect} at (343.33,501.67) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-            RenderSVGText {text} at (10,-10) size 95x17 contains 2 chunk(s)
-              RenderSVGInlineText {#text} at (0,-9) size 95x17
+            RenderSVGText {text} at (10,-10) size 95x16 contains 2 chunk(s)
+              RenderSVGInlineText {#text} at (0,-8) size 95x16
                 chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
                 chunk 2 text run 1 at (60.00,-5.00) startOffset 1 endOffset 4 width 45.00: "234"
       RenderSVGContainer {g} at (358.33,15.00) size 196.67x535 [transform={m=((1.00,0.00)(0.00,1.00)) t=(250.00,40.00)}]
@@ -240,8 +240,8 @@ layer at (0,0) size 800x600
                 RenderSVGContainer {g} at (410,91.67) size 13.33x31.67
                   RenderPath {line} at (415.83,91.67) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                   RenderPath {rect} at (410,110) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-              RenderSVGText {text} at (-30,30) size 60x11 contains 1 chunk(s)
-                RenderSVGInlineText {#text} at (0,-9) size 60x11
+              RenderSVGText {text} at (-30,30) size 60x10 contains 1 chunk(s)
+                RenderSVGInlineText {#text} at (0,-8) size 60x10
                   chunk 1 (middle anchor) text run 1 at (-30.00,30.00) startOffset 0 endOffset 4 width 60.00: "1234"
               RenderSVGContainer {g} at (426.67,141.67) size 13.33x31.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,60.00)}]
                 RenderSVGContainer {g} at (426.67,141.67) size 13.33x31.67
@@ -259,8 +259,8 @@ layer at (0,0) size 800x600
                 RenderSVGContainer {g} at (476.67,141.67) size 13.33x31.67
                   RenderPath {line} at (482.50,141.67) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                   RenderPath {rect} at (476.67,160.00) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-              RenderSVGText {text} at (2,60) size 46x11 contains 4 chunk(s)
-                RenderSVGInlineText {#text} at (0,-9) size 46x11
+              RenderSVGText {text} at (2,60) size 46x10 contains 4 chunk(s)
+                RenderSVGInlineText {#text} at (0,-8) size 46x10
                   chunk 1 (middle anchor) text run 1 at (2.50,60.00) startOffset 0 endOffset 1 width 15.00: "1"
                   chunk 2 (middle anchor) text run 1 at (12.50,60.00) startOffset 1 endOffset 2 width 15.00: "2"
                   chunk 3 (middle anchor) text run 1 at (22.50,60.00) startOffset 2 endOffset 3 width 15.00: "3"
@@ -273,8 +273,8 @@ layer at (0,0) size 800x600
                 RenderSVGContainer {g} at (510.00,191.67) size 13.33x31.67
                   RenderPath {line} at (515.83,191.67) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                   RenderPath {rect} at (510.00,210.00) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-              RenderSVGText {text} at (2,90) size 81x11 contains 2 chunk(s)
-                RenderSVGInlineText {#text} at (0,-9) size 81x11
+              RenderSVGText {text} at (2,90) size 81x10 contains 2 chunk(s)
+                RenderSVGInlineText {#text} at (0,-8) size 81x10
                   chunk 1 (middle anchor) text run 1 at (2.50,90.00) startOffset 0 endOffset 1 width 15.00: "1"
                   chunk 2 (middle anchor) text run 1 at (37.50,90.00) startOffset 1 endOffset 4 width 45.00: "234"
               RenderSVGContainer {g} at (366.67,225.00) size 131.67x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,120.00)}]
@@ -294,8 +294,8 @@ layer at (0,0) size 800x600
                   RenderSVGContainer {g} at (485,258.33) size 13.33x31.67
                     RenderPath {line} at (490.83,258.33) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                     RenderPath {rect} at (485,276.67) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-                RenderSVGText {text} at (-30,-10) size 60x31 contains 1 chunk(s)
-                  RenderSVGInlineText {#text} at (0,-9) size 60x31
+                RenderSVGText {text} at (-30,-10) size 60x30 contains 1 chunk(s)
+                  RenderSVGInlineText {#text} at (0,-8) size 60x30
                     chunk 1 (middle anchor) text run 1 at (-30.00,-10.00) startOffset 0 endOffset 4 width 60.00: "1234"
               RenderSVGContainer {g} at (420,275) size 76.67x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,150.00)}]
                 RenderSVGContainer {g} at (426.67,275) size 13.33x31.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,-10.00)}]
@@ -314,8 +314,8 @@ layer at (0,0) size 800x600
                   RenderSVGContainer {g} at (476.67,308.33) size 13.33x31.67
                     RenderPath {line} at (482.50,308.33) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                     RenderPath {rect} at (476.67,326.67) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-                RenderSVGText {text} at (2,-10) size 46x31 contains 4 chunk(s)
-                  RenderSVGInlineText {#text} at (0,-9) size 46x31
+                RenderSVGText {text} at (2,-10) size 46x30 contains 4 chunk(s)
+                  RenderSVGInlineText {#text} at (0,-8) size 46x30
                     chunk 1 (middle anchor) text run 1 at (2.50,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
                     chunk 2 (middle anchor) text run 1 at (12.50,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
                     chunk 3 (middle anchor) text run 1 at (22.50,5.00) startOffset 2 endOffset 3 width 15.00: "3"
@@ -337,8 +337,8 @@ layer at (0,0) size 800x600
                   RenderSVGContainer {g} at (493.33,358.33) size 13.33x31.67
                     RenderPath {line} at (499.17,358.33) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                     RenderPath {rect} at (493.33,376.67) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-                RenderSVGText {text} at (-3,-10) size 45x31 contains 2 chunk(s)
-                  RenderSVGInlineText {#text} at (1,-9) size 45x31
+                RenderSVGText {text} at (-3,-10) size 45x30 contains 2 chunk(s)
+                  RenderSVGInlineText {#text} at (1,-8) size 45x30
                     chunk 1 (middle anchor) text run 1 at (2.50,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
                     chunk 2 (middle anchor) text run 1 at (-2.50,-5.00) startOffset 1 endOffset 4 width 45.00: "234"
               RenderSVGContainer {g} at (366.67,375) size 100x56.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,210.00)}]
@@ -350,8 +350,8 @@ layer at (0,0) size 800x600
                   RenderSVGContainer {g} at (435,400) size 13.33x31.67
                     RenderPath {line} at (440.83,400) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                     RenderPath {rect} at (435,418.33) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-                RenderSVGText {text} at (-30,-10) size 60x26 contains 1 chunk(s)
-                  RenderSVGInlineText {#text} at (0,-9) size 60x26
+                RenderSVGText {text} at (-30,-10) size 60x25 contains 1 chunk(s)
+                  RenderSVGInlineText {#text} at (0,-8) size 60x25
                     chunk 1 (middle anchor) text run 1 at (-30.00,-10.00) startOffset 0 endOffset 4 width 60.00: "1234"
               RenderSVGContainer {g} at (420,425) size 76.67x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,240.00)}]
                 RenderSVGContainer {g} at (426.67,425) size 13.33x31.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,-10.00)}]
@@ -370,8 +370,8 @@ layer at (0,0) size 800x600
                   RenderSVGContainer {g} at (476.67,433.33) size 13.33x31.67
                     RenderPath {line} at (482.50,433.33) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                     RenderPath {rect} at (476.67,451.67) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-                RenderSVGText {text} at (2,-10) size 46x17 contains 4 chunk(s)
-                  RenderSVGInlineText {#text} at (0,-9) size 46x17
+                RenderSVGText {text} at (2,-10) size 46x16 contains 4 chunk(s)
+                  RenderSVGInlineText {#text} at (0,-8) size 46x16
                     chunk 1 (middle anchor) text run 1 at (2.50,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
                     chunk 2 (middle anchor) text run 1 at (12.50,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
                     chunk 3 (middle anchor) text run 1 at (22.50,-5.00) startOffset 2 endOffset 3 width 15.00: "3"
@@ -385,8 +385,8 @@ layer at (0,0) size 800x600
                   RenderSVGContainer {g} at (510.00,483.33) size 13.33x31.67
                     RenderPath {line} at (515.83,483.33) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                     RenderPath {rect} at (510.00,501.67) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-                RenderSVGText {text} at (2,-10) size 81x17 contains 2 chunk(s)
-                  RenderSVGInlineText {#text} at (0,-9) size 81x17
+                RenderSVGText {text} at (2,-10) size 81x16 contains 2 chunk(s)
+                  RenderSVGInlineText {#text} at (0,-8) size 81x16
                     chunk 1 (middle anchor) text run 1 at (2.50,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
                     chunk 2 (middle anchor) text run 1 at (37.50,-5.00) startOffset 1 endOffset 4 width 45.00: "234"
       RenderSVGContainer {g} at (483.33,15.00) size 206.67x535 [transform={m=((1.00,0.00)(0.00,1.00)) t=(350.00,40.00)}]
@@ -404,8 +404,8 @@ layer at (0,0) size 800x600
                 RenderSVGContainer {g} at (576.67,91.67) size 13.33x31.67
                   RenderPath {line} at (582.50,91.67) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                   RenderPath {rect} at (576.67,110) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-              RenderSVGText {text} at (-60,30) size 60x11 contains 1 chunk(s)
-                RenderSVGInlineText {#text} at (0,-9) size 60x11
+              RenderSVGText {text} at (-60,30) size 60x10 contains 1 chunk(s)
+                RenderSVGInlineText {#text} at (0,-8) size 60x10
                   chunk 1 (end anchor) text run 1 at (-60.00,30.00) startOffset 0 endOffset 4 width 60.00: "1234"
               RenderSVGContainer {g} at (593.33,141.67) size 13.33x31.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,60.00)}]
                 RenderSVGContainer {g} at (593.33,141.67) size 13.33x31.67
@@ -423,8 +423,8 @@ layer at (0,0) size 800x600
                 RenderSVGContainer {g} at (643.33,141.67) size 13.33x31.67
                   RenderPath {line} at (649.17,141.67) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                   RenderPath {rect} at (643.33,160.00) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-              RenderSVGText {text} at (-5,60) size 45x11 contains 4 chunk(s)
-                RenderSVGInlineText {#text} at (0,-9) size 45x11
+              RenderSVGText {text} at (-5,60) size 45x10 contains 4 chunk(s)
+                RenderSVGInlineText {#text} at (0,-8) size 45x10
                   chunk 1 (end anchor) text run 1 at (-5.00,60.00) startOffset 0 endOffset 1 width 15.00: "1"
                   chunk 2 (end anchor) text run 1 at (5.00,60.00) startOffset 1 endOffset 2 width 15.00: "2"
                   chunk 3 (end anchor) text run 1 at (15.00,60.00) startOffset 2 endOffset 3 width 15.00: "3"
@@ -437,8 +437,8 @@ layer at (0,0) size 800x600
                 RenderSVGContainer {g} at (676.67,191.67) size 13.33x31.67
                   RenderPath {line} at (682.50,191.67) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                   RenderPath {rect} at (676.67,210.00) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-              RenderSVGText {text} at (-5,90) size 65x11 contains 2 chunk(s)
-                RenderSVGInlineText {#text} at (0,-9) size 65x11
+              RenderSVGText {text} at (-5,90) size 65x10 contains 2 chunk(s)
+                RenderSVGInlineText {#text} at (0,-8) size 65x10
                   chunk 1 (end anchor) text run 1 at (-5.00,90.00) startOffset 0 endOffset 1 width 15.00: "1"
                   chunk 2 (end anchor) text run 1 at (15.00,90.00) startOffset 1 endOffset 4 width 45.00: "234"
               RenderSVGContainer {g} at (483.33,225.00) size 181.67x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,120.00)}]
@@ -458,8 +458,8 @@ layer at (0,0) size 800x600
                   RenderSVGContainer {g} at (651.67,258.33) size 13.33x31.67
                     RenderPath {line} at (657.50,258.33) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                     RenderPath {rect} at (651.67,276.67) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-                RenderSVGText {text} at (-60,-10) size 60x31 contains 1 chunk(s)
-                  RenderSVGInlineText {#text} at (0,-9) size 60x31
+                RenderSVGText {text} at (-60,-10) size 60x30 contains 1 chunk(s)
+                  RenderSVGInlineText {#text} at (0,-8) size 60x30
                     chunk 1 (end anchor) text run 1 at (-60.00,-10.00) startOffset 0 endOffset 4 width 60.00: "1234"
               RenderSVGContainer {g} at (575,275) size 81.67x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,150.00)}]
                 RenderSVGContainer {g} at (593.33,275) size 13.33x31.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,-10.00)}]
@@ -478,8 +478,8 @@ layer at (0,0) size 800x600
                   RenderSVGContainer {g} at (643.33,308.33) size 13.33x31.67
                     RenderPath {line} at (649.17,308.33) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                     RenderPath {rect} at (643.33,326.67) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-                RenderSVGText {text} at (-5,-10) size 45x31 contains 4 chunk(s)
-                  RenderSVGInlineText {#text} at (0,-9) size 45x31
+                RenderSVGText {text} at (-5,-10) size 45x30 contains 4 chunk(s)
+                  RenderSVGInlineText {#text} at (0,-8) size 45x30
                     chunk 1 (end anchor) text run 1 at (-5.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
                     chunk 2 (end anchor) text run 1 at (5.00,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
                     chunk 3 (end anchor) text run 1 at (15.00,5.00) startOffset 2 endOffset 3 width 15.00: "3"
@@ -501,8 +501,8 @@ layer at (0,0) size 800x600
                   RenderSVGContainer {g} at (660.00,358.33) size 13.33x31.67
                     RenderPath {line} at (665.83,358.33) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                     RenderPath {rect} at (660.00,376.67) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-                RenderSVGText {text} at (-25,-10) size 45x31 contains 2 chunk(s)
-                  RenderSVGInlineText {#text} at (0,-9) size 45x31
+                RenderSVGText {text} at (-25,-10) size 45x30 contains 2 chunk(s)
+                  RenderSVGInlineText {#text} at (0,-8) size 45x30
                     chunk 1 (end anchor) text run 1 at (-5.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
                     chunk 2 (end anchor) text run 1 at (-25.00,-5.00) startOffset 1 endOffset 4 width 45.00: "234"
               RenderSVGContainer {g} at (483.33,375) size 131.67x56.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,210.00)}]
@@ -514,8 +514,8 @@ layer at (0,0) size 800x600
                   RenderSVGContainer {g} at (601.67,400) size 13.33x31.67
                     RenderPath {line} at (607.50,400) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                     RenderPath {rect} at (601.67,418.33) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-                RenderSVGText {text} at (-60,-10) size 60x26 contains 1 chunk(s)
-                  RenderSVGInlineText {#text} at (0,-9) size 60x26
+                RenderSVGText {text} at (-60,-10) size 60x25 contains 1 chunk(s)
+                  RenderSVGInlineText {#text} at (0,-8) size 60x25
                     chunk 1 (end anchor) text run 1 at (-60.00,-10.00) startOffset 0 endOffset 4 width 60.00: "1234"
               RenderSVGContainer {g} at (575,425) size 81.67x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,240.00)}]
                 RenderSVGContainer {g} at (593.33,425) size 13.33x31.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,-10.00)}]
@@ -534,8 +534,8 @@ layer at (0,0) size 800x600
                   RenderSVGContainer {g} at (643.33,433.33) size 13.33x31.67
                     RenderPath {line} at (649.17,433.33) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                     RenderPath {rect} at (643.33,451.67) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-                RenderSVGText {text} at (-5,-10) size 45x17 contains 4 chunk(s)
-                  RenderSVGInlineText {#text} at (0,-9) size 45x17
+                RenderSVGText {text} at (-5,-10) size 45x16 contains 4 chunk(s)
+                  RenderSVGInlineText {#text} at (0,-8) size 45x16
                     chunk 1 (end anchor) text run 1 at (-5.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
                     chunk 2 (end anchor) text run 1 at (5.00,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
                     chunk 3 (end anchor) text run 1 at (15.00,-5.00) startOffset 2 endOffset 3 width 15.00: "3"
@@ -549,8 +549,8 @@ layer at (0,0) size 800x600
                   RenderSVGContainer {g} at (676.67,483.33) size 13.33x31.67
                     RenderPath {line} at (682.50,483.33) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                     RenderPath {rect} at (676.67,501.67) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-                RenderSVGText {text} at (-5,-10) size 65x17 contains 2 chunk(s)
-                  RenderSVGInlineText {#text} at (0,-9) size 65x17
+                RenderSVGText {text} at (-5,-10) size 65x16 contains 2 chunk(s)
+                  RenderSVGInlineText {#text} at (0,-8) size 65x16
                     chunk 1 (end anchor) text run 1 at (-5.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
                     chunk 2 (end anchor) text run 1 at (15.00,-5.00) startOffset 1 endOffset 4 width 45.00: "234"
     RenderSVGText {text} at (10,350) size 264x46 contains 1 chunk(s)
index b6bfed191b7144b7c432adb3b2980922e3080d7b..4d5fc91d3a23e9bead17d1978ad870718d02e836 100644 (file)
@@ -1 +1 @@
-66bb255bb77facb1b7c236a3a98c1d82
\ No newline at end of file
+1cbcc6794541f3d40cbbde9124fe35f0
\ No newline at end of file
index a43362395fddd6e16cc1020a2081c461b8bce49a..6e55a28f419b5b9da1383ecffe3f116821e7c7cf 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/text/text-text-06-t-expected.png and b/LayoutTests/platform/mac/svg/text/text-text-06-t-expected.png differ
index 75ad07666475b8ceb36797fcb98988f38e42a91c..578a0080179c0bbade93384ab6b4b556711e4493 100644 (file)
@@ -2,13 +2,13 @@ layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
 layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (0.83,0.83) size 798.33x598.33
-    RenderSVGContainer {g} at (50,91.67) size 456.67x348.33
+    RenderSVGContainer {g} at (50,91.67) size 463.33x348.33
       RenderSVGHiddenContainer {defs} at (0,0) size 0x0
       RenderSVGHiddenContainer {defs} at (0,0) size 0x0
         RenderSVGContainer {g} at (-4,-15) size 8x19
           RenderPath {line} at (-0.50,-15) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#000000]}] [data="M0.00,0.00L0.00,-15.00"]
           RenderPath {rect} at (-4,-4) size 8x8 [fill={[type=SOLID] [color=#000000]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-      RenderSVGContainer {g} at (50,91.67) size 456.67x348.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(20.00,30.00)}]
+      RenderSVGContainer {g} at (50,91.67) size 463.33x348.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(20.00,30.00)}]
         RenderSVGContainer {g} at (50,98.33) size 118.33x256.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,40.00)}]
           RenderSVGText {text} at (0,0) size 62x14 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,-11) size 62x14
@@ -19,7 +19,7 @@ layer at (0,0) size 800x600
           RenderSVGText {text} at (0,140) size 71x14 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,-11) size 71x14
               chunk 1 text run 1 at (0.00,140.00) startOffset 0 endOffset 15 width 71.00: "x/y positioning"
-        RenderSVGContainer {g} at (210,91.67) size 296.67x31.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,40.00)}]
+        RenderSVGContainer {g} at (210,91.67) size 303.33x31.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,40.00)}]
           RenderSVGContainer {use} at (210,91.67) size 13.33x31.67
             RenderSVGContainer {g} at (210,91.67) size 13.33x31.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,0.00)}]
               RenderSVGContainer {g} at (210,91.67) size 13.33x31.67
@@ -50,15 +50,15 @@ layer at (0,0) size 800x600
               RenderSVGContainer {g} at (410,91.67) size 13.33x31.67
                 RenderPath {line} at (415.83,91.67) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                 RenderPath {rect} at (410,110) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-          RenderSVGText {text} at (10,0) size 173x11 contains 6 chunk(s)
-            RenderSVGInlineText {#text} at (0,-9) size 173x11
-              chunk 1 text run 1 at (10.00,0.00) startOffset 0 endOffset 1 width 3.00: "f"
-              chunk 2 text run 1 at (180.00,0.00) startOffset 1 endOffset 2 width 3.00: "i"
+          RenderSVGText {text} at (10,0) size 178x10 contains 6 chunk(s)
+            RenderSVGInlineText {#text} at (0,-8) size 178x10
+              chunk 1 text run 1 at (10.00,0.00) startOffset 0 endOffset 1 width 8.00: "f"
+              chunk 2 text run 1 at (180.00,0.00) startOffset 1 endOffset 2 width 8.00: "i"
               chunk 3 text run 1 at (40.00,0.00) startOffset 2 endOffset 3 width 15.00: "1"
               chunk 4 text run 1 at (70.00,0.00) startOffset 3 endOffset 4 width 15.00: "2"
               chunk 5 text run 1 at (100.00,0.00) startOffset 4 endOffset 5 width 15.00: "3"
               chunk 6 text run 1 at (130.00,0.00) startOffset 5 endOffset 6 width 15.00: "4"
-        RenderSVGContainer {g} at (193.33,141.67) size 116.67x131.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,80.00)}]
+        RenderSVGContainer {g} at (193.33,141.67) size 133.33x131.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,80.00)}]
           RenderSVGContainer {use} at (193.33,141.67) size 13.33x31.67
             RenderSVGContainer {g} at (193.33,141.67) size 13.33x31.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,-10.00)}]
               RenderSVGContainer {g} at (193.33,141.67) size 13.33x31.67
@@ -89,10 +89,10 @@ layer at (0,0) size 800x600
               RenderSVGContainer {g} at (293.33,208.33) size 13.33x31.67
                 RenderPath {line} at (299.17,208.33) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                 RenderPath {rect} at (293.33,226.67) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-          RenderSVGText {text} at (0,-10) size 66x71 contains 1 chunk(s)
-            RenderSVGInlineText {#text} at (0,-9) size 66x71
+          RenderSVGText {text} at (0,-10) size 76x70 contains 1 chunk(s)
+            RenderSVGInlineText {#text} at (0,-8) size 76x70
               chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 6 width 75.00: "fi1234"
-        RenderSVGContainer {g} at (210,308.33) size 296.67x131.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,180.00)}]
+        RenderSVGContainer {g} at (210,308.33) size 303.33x131.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,180.00)}]
           RenderSVGContainer {use} at (210,308.33) size 13.33x31.67
             RenderSVGContainer {g} at (210,308.33) size 13.33x31.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,-10.00)}]
               RenderSVGContainer {g} at (210,308.33) size 13.33x31.67
@@ -123,10 +123,10 @@ layer at (0,0) size 800x600
               RenderSVGContainer {g} at (410,375) size 13.33x31.67
                 RenderPath {line} at (415.83,375) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
                 RenderPath {rect} at (410,393.33) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
-          RenderSVGText {text} at (10,-10) size 173x71 contains 6 chunk(s)
-            RenderSVGInlineText {#text} at (0,-9) size 173x71
-              chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 1 width 3.00: "f"
-              chunk 2 text run 1 at (180.00,50.00) startOffset 1 endOffset 2 width 3.00: "i"
+          RenderSVGText {text} at (10,-10) size 178x70 contains 6 chunk(s)
+            RenderSVGInlineText {#text} at (0,-8) size 178x70
+              chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 1 width 8.00: "f"
+              chunk 2 text run 1 at (180.00,50.00) startOffset 1 endOffset 2 width 8.00: "i"
               chunk 3 text run 1 at (40.00,0.00) startOffset 2 endOffset 3 width 15.00: "1"
               chunk 4 text run 1 at (70.00,10.00) startOffset 3 endOffset 4 width 15.00: "2"
               chunk 5 text run 1 at (100.00,20.00) startOffset 4 endOffset 5 width 15.00: "3"
diff --git a/LayoutTests/svg/custom/glyph-selection-lang-attribute.svg b/LayoutTests/svg/custom/glyph-selection-lang-attribute.svg
new file mode 100644 (file)
index 0000000..02e6716
--- /dev/null
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 480 360">
+<defs>
+    <font horiz-adv-x="500">
+        <font-face font-family="SVGFont" units-per-em="1000" ascent="800" descent="200" alphabetic="200"/>
+        <missing-glyph horiz-adv-x="500" d="M0 0L500 0L500 1000L0 1000M50 50L50 950L450 950L450 50Z"/>
+        <glyph unicode=" " glyph-name="space"/>
+        <glyph unicode="a" glyph-name="upward-triangle" lang="en" d="M0 0L500 0L250 900Z"/>
+        <glyph unicode="a" glyph-name="square" lang="fr" d="M0 250L500 250L500 750L0 750Z"/>
+    </font>
+
+    <font horiz-adv-x="500">
+        <font-face font-family="SVGFont1" units-per-em="1000" ascent="800" descent="200" alphabetic="200"/>
+        <missing-glyph horiz-adv-x="500" d="M0 0L500 0L500 1000L0 1000M50 50L50 950L450 950L450 50Z"/>
+        <glyph unicode=" " glyph-name="space"/>
+        <glyph unicode="a" glyph-name="upward-triangle" xml:lang="en" d="M0 0L500 0L250 900Z"/>
+        <glyph unicode="a" glyph-name="square" xml:lang="fr" d="M0 250L500 250L500 750L0 750Z"/>
+    </font>
+</defs>
+
+<g font-family="SVGFont" font-size="50">
+    <!-- Should produce an upward pointing triangle -->
+    <text x="50" y="50" lang="fr" xml:lang="en">a</text>
+
+    <!-- Should produce a square -->
+    <text x="50" y="120" lang="en" xml:lang="fr">a</text>
+
+    <!-- Should produce missing glyph -->
+    <text x="50" y="190" lang="en" xml:lang="bogus">a</text>
+
+    <!-- Should produce missing glyph -->
+    <text x="50" y="260" lang="fr" xml:lang="bogus">a</text>
+
+    <!-- Should produce missing glyph -->
+    <text x="50" y="330" lang="" xml:lang="">a</text>
+</g>
+
+<g font-family="SVGFont1" font-size="50" transform="translate(100, 0)">
+    <!-- Should produce an upward pointing triangle -->
+    <text x="50" y="50" lang="fr" xml:lang="en">a</text>
+
+    <!-- Should produce an upward pointing triangle -->
+    <text x="50" y="120" lang="en" xml:lang="fr">a</text>
+
+    <!-- Should produce an upward pointing triangle -->
+    <text x="50" y="190" lang="en" xml:lang="bogus">a</text>
+
+    <!-- Should produce an upward pointing triangle -->
+    <text x="50" y="260" lang="fr" xml:lang="bogus">a</text>
+
+    <!-- Should produce an upward pointing triangle -->
+    <text x="50" y="330" lang="" xml:lang="">a</text>
+</g>
+
+<rect x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/>
+</svg>
index e3cbac892ea6e5ac8d5f64943594dafde122d0b1..9c6bc522eb7721efc5915a32b7310199ee98266d 100644 (file)
@@ -1,3 +1,113 @@
+2008-01-21  Nikolas Zimmermann  <zimmermann@kde.org>
+
+        Reviewed by Eric. Older parts reviewed by Dan.
+
+        Fixes: http://bugs.webkit.org/show_bug.cgi?id=16880 (SVGCSSFontFace should die, instead integrate within the FontCache.)
+        Fixes: http://bugs.webkit.org/show_bug.cgi?id=16784 (In-document fonts work only as the first child to font-face-src)
+
+        Proper integration of SVG Fonts within the existing custom font concept, removing the need for a custom SVGCSSFontFace.
+        Integrate within the CSSFontFaceSource logic for caching support, as well as the framework for external SVG Fonts.
+
+        Proper handling of missing glyphs, using <missing-glyph> element. If that is not specified in a font, fallback to non-SVG font rendering.
+
+        * GNUmakefile.am:
+        * WebCore.pro:
+        * WebCore.vcproj/WebCore.vcproj:
+        * WebCore.xcodeproj/project.pbxproj:
+        * css/CSSFontFaceSource.cpp:
+        (WebCore::CSSFontFaceSource::getFontData):
+        * css/CSSFontFaceSource.h:
+        (WebCore::CSSFontFaceSource::svgFontFaceElement):
+        (WebCore::CSSFontFaceSource::setSVGFontFaceElement):
+        * css/CSSFontFaceSrcValue.h:
+        (WebCore::CSSFontFaceSrcValue::m_isLocal):
+        (WebCore::CSSFontFaceSrcValue::~CSSFontFaceSrcValue):
+        (WebCore::CSSFontFaceSrcValue::svgFontFaceElement):
+        (WebCore::CSSFontFaceSrcValue::setSVGFontFaceElement):
+        * css/CSSFontSelector.cpp:
+        (WebCore::CSSFontSelector::addFontFaceRule):
+        * css/SVGCSSFontFace.cpp: Removed.
+        * css/SVGCSSFontFace.h: Removed.
+        * platform/graphics/Font.cpp:
+        (WebCore::Font::ascent):
+        (WebCore::Font::descent):
+        (WebCore::Font::lineSpacing):
+        (WebCore::Font::xHeight):
+        (WebCore::Font::fontSelector):
+        * platform/graphics/Font.h:
+        * platform/graphics/FontData.h:
+        * platform/graphics/SegmentedFontData.cpp:
+        (WebCore::SegmentedFontData::isSVGFont):
+        * platform/graphics/SegmentedFontData.h:
+        * platform/graphics/SimpleFontData.cpp:
+        (WebCore::SimpleFontData::SimpleFontData):
+        * platform/graphics/SimpleFontData.h:
+        (WebCore::SimpleFontData::ascent):
+        (WebCore::SimpleFontData::descent):
+        (WebCore::SimpleFontData::lineSpacing):
+        (WebCore::SimpleFontData::lineGap):
+        (WebCore::SimpleFontData::xHeight):
+        (WebCore::SimpleFontData::isSVGFont):
+        (WebCore::SimpleFontData::svgFontData):
+        * platform/graphics/gtk/FontPlatformData.h:
+        (WebCore::FontPlatformData::size):
+        * platform/graphics/gtk/FontPlatformDataGtk.cpp:
+        (WebCore::FontPlatformData):
+        * platform/graphics/mac/FontPlatformData.h:
+        (WebCore::FontPlatformData::FontPlatformData):
+        (WebCore::FontPlatformData::size):
+        * platform/graphics/win/FontPlatformData.h:
+        * platform/graphics/win/FontPlatformDataWin.cpp:
+        (WebCore::FontPlatformData::FontPlatformData):
+        * rendering/RenderSVGText.cpp:
+        (WebCore::RenderSVGText::relativeBBox):
+        * svg/SVGFont.cpp:
+        (WebCore::convertEmUnitToPixel):
+        (WebCore::isCompatibleGlyph):
+        (WebCore::svgFontAndFontFaceElementForFontData):
+        (WebCore::SVGTextRunWalker::SVGTextRunWalker):
+        (WebCore::SVGTextRunWalker::walk):
+        (WebCore::floatWidthUsingSVGFontCallback):
+        (WebCore::floatWidthMissingGlyphCallback):
+        (WebCore::floatWidthOfSubStringUsingSVGFont):
+        (WebCore::drawTextUsingSVGFontCallback):
+        (WebCore::drawTextMissingGlyphCallback):
+        (WebCore::Font::drawTextUsingSVGFont):
+        * svg/SVGFontData.cpp: Added.
+        (WebCore::SVGFontData::SVGFontData):
+        (WebCore::SVGFontData::~SVGFontData):
+        * svg/SVGFontData.h: Added.
+        (WebCore::SVGFontData::svgFontFaceElement):
+        (WebCore::SVGFontData::horizontalOriginX):
+        (WebCore::SVGFontData::horizontalOriginY):
+        (WebCore::SVGFontData::horizontalAdvanceX):
+        (WebCore::SVGFontData::verticalOriginX):
+        (WebCore::SVGFontData::verticalOriginY):
+        (WebCore::SVGFontData::verticalAdvanceY):
+        * svg/SVGFontFaceElement.cpp:
+        (WebCore::SVGFontFaceElement::unitsPerEm):
+        (WebCore::SVGFontFaceElement::xHeight):
+        (WebCore::SVGFontFaceElement::horizontalOriginX):
+        (WebCore::SVGFontFaceElement::horizontalOriginY):
+        (WebCore::SVGFontFaceElement::horizontalAdvanceX):
+        (WebCore::SVGFontFaceElement::verticalOriginX):
+        (WebCore::SVGFontFaceElement::verticalOriginY):
+        (WebCore::SVGFontFaceElement::verticalAdvanceY):
+        (WebCore::SVGFontFaceElement::ascent):
+        (WebCore::SVGFontFaceElement::descent):
+        (WebCore::SVGFontFaceElement::fontFamily):
+        (WebCore::SVGFontFaceElement::associatedFontElement):
+        (WebCore::SVGFontFaceElement::rebuildFontFace):
+        * svg/SVGFontFaceElement.h:
+        * svg/SVGGlyphElement.cpp:
+        (WebCore::SVGGlyphElement::inheritUnspecifiedAttributes):
+        (WebCore::parseSVGGlyphAttribute):
+        (WebCore::SVGGlyphElement::buildGenericGlyphIdentifier):
+        (WebCore::SVGGlyphElement::buildGlyphIdentifier):
+        * svg/SVGGlyphElement.h:
+        * svg/SVGMissingGlyphElement.cpp:
+        * svg/svgattrs.in:
+
 2008-01-21  Darin Adler  <darin@apple.com>
 
         Reviewed by John Sullivan.
index 047c5ae838b0b2e959f38b6a754985ba57cf412d..1e85d04e4eb0d2da9a561d01d72981f9dfde21ee 100644 (file)
@@ -1633,7 +1633,6 @@ webcore_sources += \
        WebCore/css/SVGCSSComputedStyleDeclaration.cpp \
        WebCore/css/SVGCSSParser.cpp \
        WebCore/css/SVGCSSStyleSelector.cpp \
-       WebCore/css/SVGCSSFontFace.cpp \
        WebCore/rendering/SVGRenderStyle.cpp \
        WebCore/rendering/SVGRenderStyleDefs.cpp \
        WebCore/rendering/SVGRenderTreeAsText.cpp \
@@ -1694,6 +1693,7 @@ webcore_sources += \
        WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp \
        WebCore/svg/SVGFitToViewBox.cpp \
        WebCore/svg/SVGFont.cpp \
+       WebCore/svg/SVGFontData.cpp \
        WebCore/svg/SVGFontElement.cpp \
        WebCore/svg/SVGFontFaceElement.cpp \
        WebCore/svg/SVGFontFaceFormatElement.cpp \
index 5c3b8dd31f7bb38c6c7a0d54d0e52eef6977f13f..77673a108492e6e2e591fe6f07b44f03209fb8dc 100644 (file)
@@ -1366,7 +1366,6 @@ contains(DEFINES, ENABLE_SVG=1) {
         css/SVGCSSComputedStyleDeclaration.cpp \
         css/SVGCSSParser.cpp \
         css/SVGCSSStyleSelector.cpp \
-        css/SVGCSSFontFace.cpp \
         rendering/SVGRenderStyle.cpp \
         rendering/SVGRenderStyleDefs.cpp \
         bindings/js/JSSVGLazyEventListener.cpp \
@@ -1427,6 +1426,7 @@ contains(DEFINES, ENABLE_SVG=1) {
         svg/SVGFilterPrimitiveStandardAttributes.cpp \
         svg/SVGFitToViewBox.cpp \
         svg/SVGFont.cpp \
+        svg/SVGFontData.cpp \
         svg/SVGFontElement.cpp \
         svg/SVGFontFaceElement.cpp \
         svg/SVGFontFaceFormatElement.cpp \
index 3fedc0ffd3659747787f024a84e5a60a8887f772..09e5e9e8051143e77b9cb356a49e663f77d88c97 100644 (file)
                                RelativePath="..\css\SVGCSSComputedStyleDeclaration.cpp"\r
                                >\r
                        </File>\r
-                       <File\r
-                               RelativePath="..\css\SVGCSSFontFace.cpp"\r
-                               >\r
-                       </File>\r
                        <File\r
                                RelativePath="..\css\SVGCSSParser.cpp"\r
                                >\r
                                RelativePath="..\svg\SVGFont.cpp"\r
                                >\r
                        </File>\r
+                       <File\r
+                               RelativePath="..\svg\SVGFontData.cpp"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\svg\SVGFontData.h"\r
+                               >\r
+                       </File>\r
                        <File\r
                                RelativePath="..\svg\SVGFontElement.cpp"\r
                                >\r
index fd92b6af3b1f88379ffe05bca8e7da117a4e17a9..259126272769d0c7006287234b58123a73e61d05 100644 (file)
                B223622F0C3AF0710008CA9B /* DOMSVGTextPathElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = B223622C0C3AF0710008CA9B /* DOMSVGTextPathElementInternal.h */; };
                B23540F20D00782E002382FA /* StringTruncator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B23540F00D00782E002382FA /* StringTruncator.cpp */; };
                B23540F30D00782E002382FA /* StringTruncator.h in Headers */ = {isa = PBXBuildFile; fileRef = B23540F10D00782E002382FA /* StringTruncator.h */; settings = {ATTRIBUTES = (Private, ); }; };
+               B237C8A70D344D110013F707 /* SVGFontData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B237C8A50D344D110013F707 /* SVGFontData.cpp */; };
+               B237C8A80D344D110013F707 /* SVGFontData.h in Headers */ = {isa = PBXBuildFile; fileRef = B237C8A60D344D110013F707 /* SVGFontData.h */; };
                B24055650B5BE640002A28C0 /* DOMSVGElementInstanceInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = B24055630B5BE640002A28C0 /* DOMSVGElementInstanceInternal.h */; };
                B24055660B5BE640002A28C0 /* DOMSVGElementInstanceListInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = B24055640B5BE640002A28C0 /* DOMSVGElementInstanceListInternal.h */; };
                B255992C0D00D8BA00BB825C /* CgSupport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B25598900D00D8B800BB825C /* CgSupport.cpp */; };
                B2CB92640B5BDA02009BAA78 /* DOMSVGElementInstanceList.mm in Sources */ = {isa = PBXBuildFile; fileRef = B2CB92600B5BDA02009BAA78 /* DOMSVGElementInstanceList.mm */; };
                B2CCEC470C6CA9F1006A5424 /* RenderSVGViewportContainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2CCEC450C6CA9F1006A5424 /* RenderSVGViewportContainer.cpp */; };
                B2CCEC480C6CA9F1006A5424 /* RenderSVGViewportContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = B2CCEC460C6CA9F1006A5424 /* RenderSVGViewportContainer.h */; };
-               B2D19A480CEF9DC1000E033B /* SVGCSSFontFace.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2D19A460CEF9DC1000E033B /* SVGCSSFontFace.cpp */; };
-               B2D19A490CEF9DC1000E033B /* SVGCSSFontFace.h in Headers */ = {isa = PBXBuildFile; fileRef = B2D19A470CEF9DC1000E033B /* SVGCSSFontFace.h */; };
                B2D3FC8A0C2212CB00CF3618 /* JSSVGTransformListCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2D3FC890C2212CB00CF3618 /* JSSVGTransformListCustom.cpp */; };
                B2E27C9F0B0F2B0900F17C7B /* FloatPoint3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2E27C9D0B0F2B0900F17C7B /* FloatPoint3D.cpp */; };
                B2E27CA00B0F2B0900F17C7B /* FloatPoint3D.h in Headers */ = {isa = PBXBuildFile; fileRef = B2E27C9E0B0F2B0900F17C7B /* FloatPoint3D.h */; };
                B223622C0C3AF0710008CA9B /* DOMSVGTextPathElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMSVGTextPathElementInternal.h; sourceTree = "<group>"; };
                B23540F00D00782E002382FA /* StringTruncator.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = StringTruncator.cpp; sourceTree = "<group>"; };
                B23540F10D00782E002382FA /* StringTruncator.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = StringTruncator.h; sourceTree = "<group>"; };
+               B237C8A50D344D110013F707 /* SVGFontData.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFontData.cpp; sourceTree = "<group>"; };
+               B237C8A60D344D110013F707 /* SVGFontData.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGFontData.h; sourceTree = "<group>"; };
                B24055630B5BE640002A28C0 /* DOMSVGElementInstanceInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMSVGElementInstanceInternal.h; sourceTree = "<group>"; };
                B24055640B5BE640002A28C0 /* DOMSVGElementInstanceListInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMSVGElementInstanceListInternal.h; sourceTree = "<group>"; };
                B25598900D00D8B800BB825C /* CgSupport.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CgSupport.cpp; sourceTree = "<group>"; };
                B2CB92600B5BDA02009BAA78 /* DOMSVGElementInstanceList.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMSVGElementInstanceList.mm; sourceTree = "<group>"; };
                B2CCEC450C6CA9F1006A5424 /* RenderSVGViewportContainer.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGViewportContainer.cpp; sourceTree = "<group>"; };
                B2CCEC460C6CA9F1006A5424 /* RenderSVGViewportContainer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderSVGViewportContainer.h; sourceTree = "<group>"; };
-               B2D19A460CEF9DC1000E033B /* SVGCSSFontFace.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGCSSFontFace.cpp; sourceTree = "<group>"; };
-               B2D19A470CEF9DC1000E033B /* SVGCSSFontFace.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGCSSFontFace.h; sourceTree = "<group>"; };
                B2D3FC890C2212CB00CF3618 /* JSSVGTransformListCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGTransformListCustom.cpp; sourceTree = "<group>"; };
                B2E27C9D0B0F2B0900F17C7B /* FloatPoint3D.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = FloatPoint3D.cpp; sourceTree = "<group>"; };
                B2E27C9E0B0F2B0900F17C7B /* FloatPoint3D.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FloatPoint3D.h; sourceTree = "<group>"; };
                                B222787C0D00BF200071B782 /* SVGFitToViewBox.h */,
                                B222787D0D00BF200071B782 /* SVGFitToViewBox.idl */,
                                B262B8030D1F32D000158F09 /* SVGFont.cpp */,
+                               B237C8A50D344D110013F707 /* SVGFontData.cpp */,
+                               B237C8A60D344D110013F707 /* SVGFontData.h */,
                                B2A1F2A10CEF0ABF00442F6A /* SVGFontElement.cpp */,
                                B2A1F2A20CEF0ABF00442F6A /* SVGFontElement.h */,
                                B2A1F2A30CEF0ABF00442F6A /* SVGFontElement.idl */,
                                93CA4CA209DF93FA00DF8677 /* svg.css */,
                                B2227B000D00BFF10071B782 /* SVGCSSComputedStyleDeclaration.cpp */,
                                B2227B010D00BFF10071B782 /* SVGCSSParser.cpp */,
-                               B2D19A460CEF9DC1000E033B /* SVGCSSFontFace.cpp */,
-                               B2D19A470CEF9DC1000E033B /* SVGCSSFontFace.h */,
                                B2227B020D00BFF10071B782 /* SVGCSSPropertyNames.in */,
                                B2227B030D00BFF10071B782 /* SVGCSSStyleSelector.cpp */,
                                B2227B040D00BFF10071B782 /* SVGCSSValueKeywords.in */,
                                B27B283D0CEF0C3600D39D54 /* DOMSVGGlyphElementInternal.h in Headers */,
                                B27B283E0CEF0C3600D39D54 /* DOMSVGMissingGlyphElement.h in Headers */,
                                B27B28400CEF0C3600D39D54 /* DOMSVGMissingGlyphElementInternal.h in Headers */,
-                               B2D19A490CEF9DC1000E033B /* SVGCSSFontFace.h in Headers */,
                                BCA379150D163E5500B793D6 /* JSLocation.h in Headers */,
                                BCA3793F0D1647E000B793D6 /* JSLocation.lut.h in Headers */,
                                75793E840D0CE0B3007FC0AC /* MessageEvent.h in Headers */,
                                371F51A10D262FA000ECE0D5 /* CSSSegmentedFontFace.h in Headers */,
                                371F53E90D2704F900ECE0D5 /* CSSUnicodeRangeValue.h in Headers */,
                                ABFE7E130D32FAF60066F4D2 /* MediaControlElements.h in Headers */,
+                               B237C8A80D344D110013F707 /* SVGFontData.h in Headers */,
                                E4EEFFC90D34550C00469A58 /* JSAudioConstructor.h in Headers */,
                                939B3E4E0D3C1E8400B4A92B /* StringBuffer.h in Headers */,
                        );
                0867D690FE84028FC02AAC07 /* Project object */ = {
                        isa = PBXProject;
                        buildConfigurationList = 149C284308902B11008A9EFC /* Build configuration list for PBXProject "WebCore" */;
-                       compatibilityVersion = "Xcode 2.4";
                        hasScannedForEncodings = 1;
                        knownRegions = (
                                English,
                                B27B28390CEF0C3600D39D54 /* DOMSVGFontElement.mm in Sources */,
                                B27B283C0CEF0C3600D39D54 /* DOMSVGGlyphElement.mm in Sources */,
                                B27B283F0CEF0C3600D39D54 /* DOMSVGMissingGlyphElement.mm in Sources */,
-                               B2D19A480CEF9DC1000E033B /* SVGCSSFontFace.cpp in Sources */,
                                B262B8040D1F32D000158F09 /* SVGFont.cpp in Sources */,
                                BC7FA6200D1F0CBD00DB22A9 /* DynamicNodeList.cpp in Sources */,
                                BC7FA62E0D1F0EFF00DB22A9 /* StaticNodeList.cpp in Sources */,
                                371F51A20D262FA000ECE0D5 /* CSSSegmentedFontFace.cpp in Sources */,
                                371F53EA0D2704F900ECE0D5 /* CSSUnicodeRangeValue.cpp in Sources */,
                                ABFE7E120D32FAF60066F4D2 /* MediaControlElements.cpp in Sources */,
+                               B237C8A70D344D110013F707 /* SVGFontData.cpp in Sources */,
                                E4EEFFC80D34550C00469A58 /* JSAudioConstructor.cpp in Sources */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
index cc255454e3fe640ec630f681b5bb8d20d075ba79..20f5c70fd3cfbed8912502e31fad099e2b1a053d 100644 (file)
 #include "CSSFontSelector.h"
 #include "DocLoader.h"
 #include "FontCache.h"
-#include "SimpleFontData.h"
 #include "FontDescription.h"
 #include "GlyphPageTreeNode.h"
+#include "SimpleFontData.h"
+
+#if ENABLE(SVG_FONTS)
+#include "SVGFontData.h"
+#include "FontCustomPlatformData.h" 
+#endif
 
 namespace WebCore {
 
@@ -88,21 +93,41 @@ SimpleFontData* CSSFontFaceSource::getFontData(const FontDescription& fontDescri
     if (!isValid())
         return 0;
 
-    if (!m_font)
-        // We're local.  Just return a SimpleFontData from the normal cache.
-        return FontCache::getCachedFontData(FontCache::getCachedFontPlatformData(fontDescription, m_string));
-    
+#if ENABLE(SVG_FONTS)
+    if (!m_font && !m_svgFontFaceElement) {
+#else
+    if (!m_font) {
+#endif
+        FontPlatformData* data = FontCache::getCachedFontPlatformData(fontDescription, m_string);
+        SimpleFontData* fontData = FontCache::getCachedFontData(data);
+
+        // We're local. Just return a SimpleFontData from the normal cache.
+        return fontData;
+    }
+
     // See if we have a mapping in our FontData cache.
-    SimpleFontData* cachedData = m_fontDataTable.get(fontDescription.computedPixelSize());
-    if (cachedData)
+    if (SimpleFontData* cachedData = m_fontDataTable.get(fontDescription.computedPixelSize()))
         return cachedData;
-    
+
+    OwnPtr<SimpleFontData> fontData;
+
     // If we are still loading, then we let the system pick a font.
     if (isLoaded()) {
-        // Create new FontPlatformData from our CGFontRef, point size and ATSFontRef.
-        if (!m_font->ensureCustomFontData())
-            return 0;
-        cachedData = new SimpleFontData(m_font->platformDataFromCustomData(fontDescription.computedPixelSize(), syntheticBold, syntheticItalic), true, false);
+#if ENABLE(SVG_FONTS)
+        if (m_svgFontFaceElement)
+            fontData.set(new SimpleFontData(FontPlatformData(fontDescription.computedPixelSize(), syntheticBold, syntheticItalic),
+                                            true, false, new SVGFontData(m_svgFontFaceElement.get())));
+#endif
+
+        if (!fontData) {
+            ASSERT(m_font);
+
+            // Create new FontPlatformData from our CGFontRef, point size and ATSFontRef.
+            if (!m_font->ensureCustomFontData())
+                return 0;
+
+            fontData.set(new SimpleFontData(m_font->platformDataFromCustomData(fontDescription.computedPixelSize(), syntheticBold, syntheticItalic), true, false));
+        }
     } else {
         // Kick off the load now.
         m_font->beginLoadIfNeeded(fontSelector->docLoader());
@@ -110,12 +135,11 @@ SimpleFontData* CSSFontFaceSource::getFontData(const FontDescription& fontDescri
         FontPlatformData* tempData = FontCache::getCachedFontPlatformData(fontDescription, m_string);
         if (!tempData)
             tempData = FontCache::getLastResortFallbackFont(fontDescription);
-        cachedData = new SimpleFontData(*tempData, true, true);
+        fontData.set(new SimpleFontData(*tempData, true, true));
     }
 
-    m_fontDataTable.set(fontDescription.computedPixelSize(), cachedData);
-
-    return cachedData;
+    m_fontDataTable.set(fontDescription.computedPixelSize(), fontData.get());
+    return fontData.release();
 }
 
 }
index e059ca9bdf1c5da9a8c29519b2033e6ba4ba46e1..88e335e10a9f50dd070dc6cd16cdaa0b714e42b9 100644 (file)
@@ -28,6 +28,7 @@
 
 #include "AtomicString.h"
 #include "CachedResourceClient.h"
+#include "SVGFontFaceElement.h"
 #include <wtf/HashMap.h>
 
 namespace WebCore {
@@ -56,11 +57,20 @@ public:
     
     void pruneTable();
 
+#if ENABLE(SVG_FONTS)
+    SVGFontFaceElement* svgFontFaceElement() const { return m_svgFontFaceElement.get(); }
+    void setSVGFontFaceElement(SVGFontFaceElement* element) { m_svgFontFaceElement = element; }
+#endif
+
 private:
     AtomicString m_string; // URI for remote, built-in font name for local.
     CachedFont* m_font; // For remote fonts, a pointer to our cached resource.
     CSSFontFace* m_face; // Our owning font face.
     HashMap<int, SimpleFontData*> m_fontDataTable; // A cache of FontDatas for various pixel sizes.
+
+#if ENABLE(SVG_FONTS)
+    RefPtr<SVGFontFaceElement> m_svgFontFaceElement;
+#endif
 };
 
 }
index a903cca5f750b3e1ff08e23befebd66af850d5d4..6c78c7bc2bd2dd5e565b6a149758fd0dc0a87728 100644 (file)
 
 #include "CSSValue.h"
 #include "PlatformString.h"
+#include "SVGFontFaceElement.h"
 
 namespace WebCore {
 
-class SVGFontFaceElement;
-
 class CSSFontFaceSrcValue : public CSSValue {
 public:
     CSSFontFaceSrcValue(const String& resource, bool local)
     :m_resource(resource), m_isLocal(local)
-#if ENABLE(SVG_FONTS)
-    , m_fontFaceElement(0)
-#endif    
     {}
-    virtual ~CSSFontFaceSrcValue() {};
+    virtual ~CSSFontFaceSrcValue() {}
 
     const String& resource() const { return m_resource; }
     const String& format() const { return m_format; }
@@ -52,8 +48,8 @@ public:
     bool isSupportedFormat() const;
 
 #if ENABLE(SVG_FONTS)
-    SVGFontFaceElement* svgFontFaceElement() const { return m_fontFaceElement; }
-    void setSVGFontFaceElement(SVGFontFaceElement* element) { m_fontFaceElement = element; }
+    SVGFontFaceElement* svgFontFaceElement() const { return m_svgFontFaceElement.get(); }
+    void setSVGFontFaceElement(SVGFontFaceElement* element) { m_svgFontFaceElement = element; }
 #endif
 
     virtual String cssText() const;
@@ -62,8 +58,9 @@ private:
     String m_resource;
     String m_format;
     bool m_isLocal;
+
 #if ENABLE(SVG_FONTS)
-    SVGFontFaceElement* m_fontFaceElement;
+    RefPtr<SVGFontFaceElement> m_svgFontFaceElement;
 #endif
 };
 
index 5f7e6b8a82a0f5ab83341e7776a6ace49b39293e..3df89b481cd3a06c2b5fd2cf853aa0a0f74b15e9 100644 (file)
 #include "RenderObject.h"
 #include "Settings.h"
 #include "SimpleFontData.h"
+#include "SVGFontFaceElement.h"
 
+// Ports which don't use SVG, don't generate SVGNames.h
 #if ENABLE(SVG)
-#include "SVGCSSFontFace.h"
-#include "SVGFontFaceElement.h"
 #include "SVGNames.h"
 #endif
 
@@ -141,7 +141,7 @@ void CSSFontSelector::addFontFaceRule(const CSSFontFaceRule* fontFaceRule)
     bool foundLocal = false;
 
 #if ENABLE(SVG_FONTS)
-    SVGFontFaceElement* svgFontFaceElement = 0;
+    bool foundInDocumentSVGFont = false;
 #endif
 
     for (i = 0; i < srcLength; i++) {
@@ -159,33 +159,26 @@ void CSSFontSelector::addFontFaceRule(const CSSFontFaceRule* fontFaceRule)
             String family = item->resource();
 
 #if ENABLE(SVG_FONTS)
-            // SVG Fonts support (internal fonts, living within the document)
-            svgFontFaceElement = item->svgFontFaceElement();
-            if (svgFontFaceElement) {
-                // FIXME: If fontFace is not 0, it means that it is a CSSFontFace rather than a SVGCSSFontFace
-                // and therefore does not support SVG font-face elements, so we just skip this item.
-                if (fontFace)
-                    continue;
-                foundLocal = true;
-            }
+            foundInDocumentSVGFont = item->svgFontFaceElement() != 0;
 #endif
 
             // Test the validity of the local font now.  We don't want to include this font if it does not exist
             // on the system.  If it *does* exist on the system, then we don't need to look any further.
-            if (FontCache::fontExists(fontDescription, family) && !foundLocal) {
+            if (FontCache::fontExists(fontDescription, family)
+#if ENABLE(SVG_FONTS)    
+                || foundInDocumentSVGFont
+#endif
+               ) {
                 source = new CSSFontFaceSource(family);
+#if ENABLE(SVG_FONTS)
+                source->setSVGFontFaceElement(item->svgFontFaceElement());
+#endif
                 foundLocal = true;
             }
         }
 
-        if (!fontFace) {
-#if ENABLE(SVG_FONTS)
-            if (svgFontFaceElement)
-                fontFace = new SVGCSSFontFace(svgFontFaceElement);
-            else
-#endif
-                fontFace = new CSSFontFace();
-        }
+        if (!fontFace)
+            fontFace = new CSSFontFace();
 
         if (source)
             fontFace->addSource(source);
@@ -240,7 +233,7 @@ void CSSFontSelector::addFontFaceRule(const CSSFontFaceRule* fontFaceRule)
 #if ENABLE(SVG_FONTS)
         // SVG allows several <font> elements with the same font-family, differing only
         // in ie. font-variant. Be sure to pick up the right one - in getFontData below.
-        if (svgFontFaceElement && fontDescription.smallCaps())
+        if (foundInDocumentSVGFont && fontDescription.smallCaps())
             familyName += "-webkit-svg-small-caps";
 #endif
         String hash = hashForFont(familyName.lower(), fontDescription.bold(), fontDescription.italic());
diff --git a/WebCore/css/SVGCSSFontFace.cpp b/WebCore/css/SVGCSSFontFace.cpp
deleted file mode 100644 (file)
index b3b7575..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright (C) 2007 Nikolas Zimmermann <zimmermann@kde.org>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- */
-
-#include "config.h"
-
-#if ENABLE(SVG_FONTS)
-#include "SVGCSSFontFace.h"
-
-#include "FontDescription.h"
-#include "SVGFontFaceElement.h"
-#include "SimpleFontData.h"
-
-namespace WebCore {
-
-SVGCSSFontFace::SVGCSSFontFace(SVGFontFaceElement* fontFace)
-    : CSSFontFace()
-    , m_fontFaceElement(fontFace)
-{
-    ASSERT(fontFace);
-}
-
-SVGCSSFontFace::~SVGCSSFontFace()
-{
-}
-
-bool SVGCSSFontFace::isValid() const
-{
-    return true;
-}
-    
-void SVGCSSFontFace::addSource(CSSFontFaceSource*)
-{
-    // no-op
-}
-
-SimpleFontData* SVGCSSFontFace::getFontData(const FontDescription& fontDescription, bool syntheticBold, bool syntheticItalic)
-{
-    if (!isValid())
-        return 0;
-
-    // TODO: Eventually we'll switch to CSSFontFaceSource here, which handles the caching for us.
-    // (When implementing support for external SVG Fonts this we'll decide about that.)
-    if (!m_fontData)
-        m_fontData.set(m_fontFaceElement->createFontData(fontDescription));
-
-    return m_fontData.get();
-}
-
-}
-
-#endif
diff --git a/WebCore/css/SVGCSSFontFace.h b/WebCore/css/SVGCSSFontFace.h
deleted file mode 100644 (file)
index 8bdee35..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2007 Nikolas Zimmermann <zimmermann@kde.org>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- */
-
-#ifndef SVGCSSFontFace_h
-#define SVGCSSFontFace_h
-
-#if ENABLE(SVG_FONTS)
-#include "CSSFontFace.h"
-#include <wtf/OwnPtr.h>
-
-namespace WebCore {
-
-class SVGFontFaceElement;
-
-class SVGCSSFontFace : public CSSFontFace {
-public:
-    SVGCSSFontFace(SVGFontFaceElement*);
-    virtual ~SVGCSSFontFace();
-
-    virtual bool isValid() const;
-    virtual void addSource(CSSFontFaceSource*);
-
-    virtual SimpleFontData* getFontData(const FontDescription&, bool syntheticBold, bool syntheticItalic);
-
-private:
-    RefPtr<SVGFontFaceElement> m_fontFaceElement;
-    OwnPtr<SimpleFontData> m_fontData;
-};
-
-}
-
-#endif // ENABLE(SVG_FONTS)
-#endif
index 8c1fe82243507cb32868a74f2e51a13c83430800..b90a2424c6c68791bf43b9e9f69051ddddf68e51 100644 (file)
@@ -507,22 +507,22 @@ int Font::width(const TextRun& run) const
 
 int Font::ascent() const
 {
-    return primaryFont()->ascent(size());
+    return primaryFont()->ascent();
 }
 
 int Font::descent() const
 {
-    return primaryFont()->descent(size());
+    return primaryFont()->descent();
 }
 
 int Font::lineSpacing() const
 {
-    return primaryFont()->lineSpacing(size());
+    return primaryFont()->lineSpacing();
 }
 
 float Font::xHeight() const
 {
-    return primaryFont()->xHeight(size());
+    return primaryFont()->xHeight();
 }
 
 unsigned Font::unitsPerEm() const
@@ -789,4 +789,9 @@ int Font::offsetForPositionForSimpleText(const TextRun& run, int x, bool include
     return offset;
 }
 
+FontSelector* Font::fontSelector() const
+{
+    return m_fontList ? m_fontList->fontSelector() : 0;
+}
+
 }
index e8e9c7925c876009db051d833925b7dd5073d94d..3c5fc58241bf2b525805874e41c8fc72531f2260 100644 (file)
@@ -251,6 +251,8 @@ public:
     {
         return (((c & ~0xFF) == 0 && gRoundingHackCharacterTable[c])); 
     }
+
+    FontSelector* fontSelector() const;
 #endif
     static bool treatAsSpace(UChar c) { return c == ' ' || c == '\t' || c == '\n' || c == 0x00A0; }
     static bool treatAsZeroWidthSpace(UChar c) { return c < 0x20 || (c >= 0x7F && c < 0xA0) || c == 0x200e || c == 0x200f || c >= 0x202a && c <= 0x202e; }
index 352d965864585020bf28205e2e4bb1f5550f2830..2ea95cb24c311319ebf2bf44ec091af23f54e181 100644 (file)
@@ -39,6 +39,7 @@ public:
 
     virtual const SimpleFontData* fontDataForCharacter(UChar32) const = 0;
     virtual bool containsCharacters(const UChar*, int length) const = 0;
+    virtual bool isSVGFont() const = 0;
     virtual bool isCustomFont() const = 0;
     virtual bool isLoading() const = 0;
     virtual bool isSegmented() const = 0;
index 8c8d97f269b64241381d8ce3eb42154e762263a7..c71175ad25f67f465f9e4e20cd5c9165a8c87143 100644 (file)
@@ -55,6 +55,14 @@ bool SegmentedFontData::containsCharacters(const UChar* characters, int length)
     return false;
 }
 
+#if ENABLE(SVG_FONTS)
+bool SegmentedFontData::isSVGFont() const
+{
+    // We don't support segmented svg fonts at the moment.
+    return false;
+}
+#endif
+
 bool SegmentedFontData::isCustomFont() const
 {
     // All segmented fonts are custom fonts.
index 14dc27778bb22246d160e1cf9a2f993d3e859f59..63560be89cbc9407620455e6454efd732d0a3c51 100644 (file)
@@ -57,6 +57,11 @@ public:
 
     virtual const SimpleFontData* fontDataForCharacter(UChar32) const;
     virtual bool containsCharacters(const UChar*, int length) const;
+
+#if ENABLE(SVG_FONTS)
+    virtual bool isSVGFont() const;
+#endif
+
     virtual bool isCustomFont() const;
     virtual bool isLoading() const;
     virtual bool isSegmented() const;
index c8e1ca0d559c641fea4f268a28c9edc64b12fbce..868280607e75662a960de4f621ffec5275f679bf 100644 (file)
 #include "config.h"
 #include "SimpleFontData.h"
 
-#include <wtf/MathExtras.h>
-
 #if ENABLE(SVG_FONTS)
+#include "SVGFontData.h"
 #include "SVGFontFaceElement.h"
 #endif
 
-namespace WebCore {
-
-#if ENABLE(SVG_FONTS)
-// Don't implement constructor in the header to save a SVGFontFaceElement.h include.
-SVGFontData::SVGFontData(SVGFontFaceElement* element)
-    : fontFaceElement(element)
-    , horizontalOriginX(0.0f)
-    , horizontalOriginY(0.0f)
-    , horizontalAdvanceX(0.0f)
-    , verticalOriginX(0.0f)
-    , verticalOriginY(0.0f)
-    , verticalAdvanceY(0.0f)
-{
-}
+#include <wtf/MathExtras.h>
 
-float SVGFontData::convertEmUnitToPixel(float fontSize, float unitsPerEm, float value)
-{
-    ASSERT(unitsPerEm > 0.0f);
-    return value * fontSize / unitsPerEm;
-}
-#endif
+namespace WebCore {
 
-SimpleFontData::SimpleFontData(const FontPlatformData& f, bool customFont, bool loading)
+SimpleFontData::SimpleFontData(const FontPlatformData& f, bool customFont, bool loading, SVGFontData* svgFontData)
     : m_font(f)
     , m_treatAsFixedPitch(false)
-#if ENABLE(SVG_FONTS)
-    , m_svgFontData(0)
-#endif
+    , m_svgFontData(svgFontData)
     , m_isCustomFont(customFont)
     , m_isLoading(loading)
     , m_smallCapsFontData(0)
-{    
+{
+#if ENABLE(SVG_FONTS) && !PLATFORM(QT)
+    if (SVGFontFaceElement* svgFontFaceElement = svgFontData ? svgFontData->svgFontFaceElement() : 0) {
+       m_unitsPerEm = svgFontFaceElement->unitsPerEm();
+
+       float scale = f.size();
+       if (m_unitsPerEm)
+           scale /= m_unitsPerEm;
+
+        m_ascent = svgFontFaceElement->ascent() * scale;
+        m_descent = svgFontFaceElement->descent() * scale;
+        m_xHeight = svgFontFaceElement->xHeight() * scale;
+
+        m_spaceGlyph = 0;
+        m_spaceWidth = 0;
+        m_adjustedSpaceWidth = 0;
+        determinePitch();
+        m_missingGlyphData.fontData = this;
+        m_missingGlyphData.glyph = 0;
+        return;
+    }
+#endif
+
     platformInit();
-    
+
     GlyphPage* glyphPageZero = GlyphPageTreeNode::getRootChild(this, 0)->page();
     if (!glyphPageZero) {
         LOG_ERROR("Failed to get glyph page zero.");
@@ -116,56 +117,6 @@ SimpleFontData::~SimpleFontData()
     // it will be deleted then, so we don't need to do anything here.
 }
 
-int SimpleFontData::ascent(float fontSize) const
-{
-#if ENABLE(SVG_FONTS)
-    if (m_svgFontData)
-        return SVGFontData::convertEmUnitToPixel(fontSize, m_unitsPerEm, m_ascent);
-#endif
-
-    return m_ascent;
-}
-
-int SimpleFontData::descent(float fontSize) const
-{
-#if ENABLE(SVG_FONTS)
-    if (m_svgFontData)
-        return SVGFontData::convertEmUnitToPixel(fontSize, m_unitsPerEm, m_descent);
-#endif
-
-    return m_descent;
-}
-
-int SimpleFontData::lineSpacing(float fontSize) const
-{
-#if ENABLE(SVG_FONTS)
-    if (m_svgFontData)
-        return (int) ceilf(SVGFontData::convertEmUnitToPixel(fontSize, m_unitsPerEm, m_lineSpacing));
-#endif
-
-    return m_lineSpacing;
-}
-
-int SimpleFontData::lineGap(float fontSize) const
-{
-#if ENABLE(SVG_FONTS)
-    if (m_svgFontData)
-        return SVGFontData::convertEmUnitToPixel(fontSize, m_unitsPerEm, m_lineGap);
-#endif
-
-    return m_lineGap;
-}
-
-float SimpleFontData::xHeight(float fontSize) const
-{
-#if ENABLE(SVG_FONTS)
-    if (m_svgFontData)
-        return SVGFontData::convertEmUnitToPixel(fontSize, m_unitsPerEm, m_xHeight);
-#endif
-
-    return m_xHeight;
-}
-
 float SimpleFontData::widthForGlyph(Glyph glyph) const
 {
     float width = m_glyphToWidthMap.widthForGlyph(glyph);
index fea59a827633569e4cdc2f975dc52b16e0cbf271..b245b5fe57e55eb0787092a98c6148890e4ec18f 100644 (file)
@@ -28,6 +28,7 @@
 #include "GlyphPageTreeNode.h"
 #include "GlyphWidthMap.h"
 #include <wtf/OwnPtr.h>
+
 #if PLATFORM(MAC)
 typedef struct OpaqueATSUStyle* ATSUStyle;
 #endif
@@ -41,36 +42,14 @@ namespace WebCore {
 class FontDescription;
 class FontPlatformData;
 class SharedBuffer;
+class SVGFontData;
 class WidthMap;
 
-#if ENABLE(SVG_FONTS)
-class SVGFontFaceElement;
-
-struct SVGFontData {
-    SVGFontData(SVGFontFaceElement*);
-
-    // Helper function
-    static float convertEmUnitToPixel(float fontSize, float unitsPerEm, float value);
-
-    // Hold pointer to our creator
-    RefPtr<SVGFontFaceElement> fontFaceElement;
-
-    // SVG Font specific metrics
-    float horizontalOriginX;
-    float horizontalOriginY;
-    float horizontalAdvanceX;
-
-    float verticalOriginX;
-    float verticalOriginY;
-    float verticalAdvanceY;
-};
-#endif
-
 enum Pitch { UnknownPitch, FixedPitch, VariablePitch };
 
 class SimpleFontData : public FontData {
 public:
-    SimpleFontData(const FontPlatformData&, bool customFont = false, bool loading = false);
+    SimpleFontData(const FontPlatformData&, bool customFont = false, bool loading = false, SVGFontData* data = 0);
     virtual ~SimpleFontData();
 
 public:
@@ -78,11 +57,11 @@ public:
     SimpleFontData* smallCapsFontData(const FontDescription& fontDescription) const;
 
     // vertical metrics
-    int ascent(float fontSize) const;
-    int descent(float fontSize) const;
-    int lineSpacing(float fontSize) const;
-    int lineGap(float fontSize) const;
-    float xHeight(float fontSize) const;
+    int ascent() const { return m_ascent; }
+    int descent() const { return m_descent; }
+    int lineSpacing() const { return m_lineSpacing; }
+    int lineGap() const { return m_lineGap; }
+    float xHeight() const { return m_xHeight; }
     unsigned unitsPerEm() const { return m_unitsPerEm; }
 
     float widthForGlyph(Glyph) const;
@@ -94,17 +73,17 @@ public:
     void determinePitch();
     Pitch pitch() const { return m_treatAsFixedPitch ? FixedPitch : VariablePitch; }
 
-#if ENABLE(SVG_FONTS)
-    bool isSVGFont() const { return m_svgFontData; }
-    SVGFontData* svgFontData() const { return m_svgFontData.get(); }
-#endif
-
+    virtual bool isSVGFont() const { return m_svgFontData; }
     virtual bool isCustomFont() const { return m_isCustomFont; }
     virtual bool isLoading() const { return m_isLoading; }
     virtual bool isSegmented() const;
 
     const GlyphData& missingGlyphData() const { return m_missingGlyphData; }
 
+#if ENABLE(SVG_FONTS)
+    SVGFontData* svgFontData() const { return m_svgFontData.get(); }
+#endif
+
 #if PLATFORM(MAC)
     NSFont* getNSFont() const { return m_font.font(); }
     void checkShapesArabic() const;
index 1b75efa4860fa7e57b75d79e7e198877d24192e0..067982ef6193221a3361bf7e45bd9efd3dd1df7d 100644 (file)
@@ -50,6 +50,7 @@ public:
 
     FontPlatformData(const FontDescription&, const AtomicString& family);
 
+    FontPlatformData(float size, bool bold, bool italic);
     FontPlatformData(cairo_font_face_t* fontFace, int size, bool bold, bool italic);
 
     ~FontPlatformData();
@@ -57,6 +58,7 @@ public:
     static bool init();
 
     bool isFixedPitch();
+    float size() const { return m_fontDescription.specifiedSize(); }
 
     void setFont(cairo_t*) const;
 
index fb78603c9fbd4a0ddb7780f1eddb3fb82830f6f4..03814f09abf6eac2b72768be1ea12a4ba5ef3b74 100644 (file)
@@ -117,6 +117,13 @@ freePattern:
     FcPatternDestroy(pattern);
 }
 
+FontPlatformData(float size, bool bold, bool italic)
+    : m_pattern(0)
+    , m_fontDescription()
+    , m_scaledFont(0)
+{
+}
+
 FontPlatformData::FontPlatformData(cairo_font_face_t* fontFace, int size, bool bold, bool italic)
     : m_pattern(0)
     , m_fontDescription()
index fa4d5ee304a5ed4a59ca1855f90e396161a81c58..8f118e0e933ae86b6b28f46b83e9737aa6da246c 100644 (file)
@@ -47,6 +47,16 @@ struct FontPlatformData {
     : m_syntheticBold(false), m_syntheticOblique(false), m_cgFont(0), m_atsuFontID(0), m_size(0), m_font((NSFont*)-1)
     {}
 
+    FontPlatformData(float s, bool b, bool o)
+        : m_syntheticBold(b)
+        , m_syntheticOblique(o)
+        , m_cgFont(0)
+        , m_atsuFontID(0)
+        , m_size(s)
+        , m_font(0)
+    {
+    }
+
     FontPlatformData(NSFont* f = 0, bool b = false, bool o = false);
     
     FontPlatformData(CGFontRef f, ATSUFontID fontID, float s, bool b , bool o)
@@ -58,6 +68,8 @@ struct FontPlatformData {
     
     ~FontPlatformData();
 
+    float size() const { return m_size; }
+
     bool m_syntheticBold;
     bool m_syntheticOblique;
     
index 1b448e19f63a423b130c483de08ca12f9a71cba4..15d23cd25544c1f8626002e1cff5a2dacd3f1b30 100644 (file)
@@ -58,6 +58,7 @@ public:
     {}
 
     FontPlatformData(HFONT, float size, bool bold, bool oblique, bool useGDI);
+    FontPlatformData(float size, bool bold, bool oblique);
     FontPlatformData(CGFontRef, float size, bool bold, bool oblique);
     ~FontPlatformData();
 
index beedb4147e1f4b34910a238dc931dd7b7b5fb8e1..a5fab36f00e55dbdbf03e4e9f60237633fd25e30 100644 (file)
@@ -197,6 +197,16 @@ FontPlatformData::FontPlatformData(HFONT font, float size, bool bold, bool obliq
     ReleaseDC(0, hdc);
 }
 
+FontPlatformData::FontPlatformData(float size, bool bold, bool oblique)
+    : m_font(0)
+    , m_size(size)
+    , m_cgFont(0)
+    , m_syntheticBold(bold)
+    , m_syntheticOblique(oblique)
+    , m_useGDI(false)
+{
+}
+
 FontPlatformData::FontPlatformData(CGFontRef font, float size, bool bold, bool oblique)
     : m_font(0)
     , m_size(size)
index fb98f5c2258837e21504bf52d3ef0a2265580ccc..83b449c83a4d2b3f5804e0a64bf56a77e03d5de2 100644 (file)
@@ -195,7 +195,7 @@ FloatRect RenderSVGText::relativeBBox(bool includeStroke) const
 #if ENABLE(SVG_FONTS)
         const Font& font = style()->font();
         if (font.primaryFont()->isSVGFont()) {
-            float scale = SVGFontData::convertEmUnitToPixel(font.size(), font.unitsPerEm(), 1.0f);
+            float scale = font.unitsPerEm() > 0 ? font.size() / font.unitsPerEm() : 0.0f;
 
             if (scale != 0.0f)
                 strokeWidth /= scale;
index d729d9eddec789ca8f51264d1ae8176002050e5c..e883af653cbf17ae7bb28a79db7392e30d59ba87 100644 (file)
@@ -1,5 +1,5 @@
 /**
- * Copyright (C) 2007 Nikolas Zimmermann <zimmermann@kde.org>
+ * Copyright (C) 2007, 2008 Nikolas Zimmermann <zimmermann@kde.org>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
 #if ENABLE(SVG_FONTS)
 #include "Font.h"
 
+#include "CSSFontSelector.h"
 #include "GraphicsContext.h"
 #include "RenderObject.h"
 #include "SimpleFontData.h"
+#include "SVGFontData.h"
 #include "SVGGlyphElement.h"
 #include "SVGFontElement.h"
 #include "SVGFontFaceElement.h"
+#include "SVGMissingGlyphElement.h"
 #include "SVGPaintServer.h"
 #include "XMLNames.h"
 
@@ -36,6 +39,14 @@ using namespace WTF::Unicode;
 
 namespace WebCore {
 
+static inline float convertEmUnitToPixel(float fontSize, float unitsPerEm, float value)
+{
+    if (unitsPerEm == 0.0f)
+        return 0.0f;
+
+    return value * fontSize / unitsPerEm;
+}
+
 static inline bool isVerticalWritingMode(const SVGRenderStyle* style)
 {
     return style->writingMode() == WM_TBRL || style->writingMode() == WM_TB; 
@@ -159,7 +170,12 @@ static inline bool isCompatibleGlyph(const SVGGlyphIdentifier& identifier, bool
         return false;
 
     // Check wheter languages are compatible
-    if (!language.isEmpty() && !identifier.languages.isEmpty()) {
+    if (!identifier.languages.isEmpty()) {
+        // This glyph exists only in certain languages, if we're not specifying a
+        // language on the referencing element we're unable to use this glyph.
+        if (language.isEmpty())
+            return false;
+
         // Split subcode from language, if existant.
         String languagePrefix;
 
@@ -188,15 +204,14 @@ static inline bool isCompatibleGlyph(const SVGGlyphIdentifier& identifier, bool
     return isCompatibleArabicForm(identifier, chars, startPosition, endPosition);
 }
 
-static inline SVGFontData* svgFontAndFontFaceElementForFontData(const SimpleFontData* fontData, SVGFontFaceElement*& fontFace, SVGFontElement*& font)
+static inline const SVGFontData* svgFontAndFontFaceElementForFontData(const SimpleFontData* fontData, SVGFontFaceElement*& fontFace, SVGFontElement*& font)
 {
-    ASSERT(!fontData->isCustomFont());
+    ASSERT(fontData->isCustomFont());
     ASSERT(fontData->isSVGFont());
 
-    SVGFontData* svgFontData = fontData->svgFontData();
-    ASSERT(svgFontData);
+    const SVGFontData* svgFontData = static_cast<const SVGFontData*>(fontData->svgFontData());
 
-    fontFace = svgFontData->fontFaceElement.get();
+    fontFace = svgFontData->svgFontFaceElement();
     ASSERT(fontFace);
 
     font = fontFace->associatedFontElement();
@@ -208,9 +223,9 @@ static inline SVGFontData* svgFontAndFontFaceElementForFontData(const SimpleFont
 template<typename SVGTextRunData>
 struct SVGTextRunWalker {
     typedef bool (*SVGTextRunWalkerCallback)(const SVGGlyphIdentifier&, SVGTextRunData&);
-    typedef void (*SVGTextRunWalkerMissingGlyphCallback)(const TextRun&, unsigned int, SVGTextRunData&);
+    typedef void (*SVGTextRunWalkerMissingGlyphCallback)(const TextRun&, SVGTextRunData&);
 
-    SVGTextRunWalker(SVGFontData* fontData, SVGFontElement* fontElement, SVGTextRunData& data,
+    SVGTextRunWalker(const SVGFontData* fontData, SVGFontElement* fontElement, SVGTextRunData& data,
                      SVGTextRunWalkerCallback callback, SVGTextRunWalkerMissingGlyphCallback missingGlyphCallback)
         : m_fontData(fontData)
         , m_fontElement(fontElement)
@@ -267,8 +282,18 @@ struct SVGTextRunWalker {
             }
 
             if (!foundGlyph) {
-                (*m_walkerMissingGlyphCallback)(run, i, m_walkerData);
-                continue;
+                if (SVGMissingGlyphElement* element = m_fontElement->firstMissingGlyphElement()) {
+                    // <missing-glyph> element support
+                    identifier = SVGGlyphElement::buildGenericGlyphIdentifier(element);
+                    SVGGlyphElement::inheritUnspecifiedAttributes(identifier, m_fontData);
+                } else {
+                    // Fallback to system font fallback
+                    TextRun subRun(run);
+                    subRun.setText(subRun.data(i), 1);
+
+                    (*m_walkerMissingGlyphCallback)(subRun, m_walkerData);
+                    continue;
+                }
             }
 
             if (!(*m_walkerCallback)(identifier, m_walkerData))
@@ -279,7 +304,7 @@ struct SVGTextRunWalker {
     }
 
 private:
-    SVGFontData* m_fontData;
+    const SVGFontData* m_fontData;
     SVGFontElement* m_fontElement;
     SVGTextRunData& m_walkerData;
     SVGTextRunWalkerCallback m_walkerCallback;
@@ -292,36 +317,27 @@ struct SVGTextRunWalkerMeasuredLengthData {
     int from;
     int to;
 
+    float scale;
     float length;
-    float fontSize;
-    unsigned unitsPerEm;
     const Font* font;
 };
 
 bool floatWidthUsingSVGFontCallback(const SVGGlyphIdentifier& identifier, SVGTextRunWalkerMeasuredLengthData& data)
 {
     if (data.at >= data.from && data.at < data.to)
-        data.length += SVGFontData::convertEmUnitToPixel(data.fontSize, data.unitsPerEm, identifier.horizontalAdvanceX);
+        data.length += identifier.horizontalAdvanceX * data.scale;
 
     data.at++;
     return data.at < data.to;
 }
 
-void floatWidthMissingGlyphCallback(const TextRun& run, unsigned int position, SVGTextRunWalkerMeasuredLengthData& data)
+void floatWidthMissingGlyphCallback(const TextRun& run, SVGTextRunWalkerMeasuredLengthData& data)
 {
-    // Construct a copy of the current SVG Font that in is use. Disable the SVG Font functionality
-    // in that copy of the Font object, so drawText/floatWidth end up in the "simple" code paths.
-    SimpleFontData* fontData = const_cast<SimpleFontData*>(data.font->primaryFont());
-    SVGFontData* svgFontData = fontData->m_svgFontData.release();
-
     // Handle system font fallback
-    TextRun subRun(run);
-    subRun.setText(subRun.data(position), 1);
+    Font font(FontDescription(), 0, 0); // spacing handled by SVG text code.
+    font.update(data.font->fontSelector());
 
-    data.length += data.font->floatWidth(subRun);
-
-    // Switch back to SVG Font code path
-    fontData->m_svgFontData.set(svgFontData);
+    data.length += font.floatWidth(run);
 }
 
 static float floatWidthOfSubStringUsingSVGFont(const Font* font, const TextRun& run, int from, int to)
@@ -335,7 +351,7 @@ static float floatWidthOfSubStringUsingSVGFont(const Font* font, const TextRun&
     SVGFontElement* fontElement = 0;
     SVGFontFaceElement* fontFaceElement = 0;
 
-    if (SVGFontData* fontData = svgFontAndFontFaceElementForFontData(font->primaryFont(), fontFaceElement, fontElement)) {
+    if (const SVGFontData* fontData = svgFontAndFontFaceElementForFontData(font->primaryFont(), fontFaceElement, fontElement)) {
         if (!fontElement)
             return 0.0f;
 
@@ -345,16 +361,15 @@ static float floatWidthOfSubStringUsingSVGFont(const Font* font, const TextRun&
         data.at = from;
         data.from = from;
         data.to = to;
+        data.scale = convertEmUnitToPixel(font->size(), fontFaceElement->unitsPerEm(), 1.0f);
         data.length = 0.0f;
-        data.fontSize = font->size();
-        data.unitsPerEm = fontFaceElement->unitsPerEm();
 
         if (RenderObject* renderObject = run.referencingRenderObject()) {
             bool isVerticalText = isVerticalWritingMode(renderObject->style()->svgStyle());
 
             String language;
-            if (renderObject->element())
-                language = static_cast<Element*>(renderObject->element())->getAttribute(XMLNames::langAttr);
+            if (SVGElement* element = static_cast<SVGElement*>(renderObject->element()))
+                language = element->getAttribute(XMLNames::langAttr);
 
             SVGTextRunWalker<SVGTextRunWalkerMeasuredLengthData> runWalker(fontData, fontElement, data, floatWidthUsingSVGFontCallback, floatWidthMissingGlyphCallback);
             runWalker.walk(run, isVerticalText, language, 0, run.length());
@@ -373,9 +388,7 @@ float Font::floatWidthUsingSVGFont(const TextRun& run) const
 
 // Callback & data structures to draw text using SVG Fonts
 struct SVGTextRunWalkerDrawTextData {
-    float fontSize;
     float scale;
-    unsigned unitsPerEm;
     bool isVerticalText;
 
     float xStartOffset;
@@ -395,8 +408,8 @@ bool drawTextUsingSVGFontCallback(const SVGGlyphIdentifier& identifier, SVGTextR
         data.context->save();
 
         if (data.isVerticalText) {
-            data.glyphOrigin.setX(SVGFontData::convertEmUnitToPixel(data.fontSize, data.unitsPerEm, identifier.verticalOriginX));
-            data.glyphOrigin.setY(SVGFontData::convertEmUnitToPixel(data.fontSize, data.unitsPerEm, identifier.verticalOriginY));
+            data.glyphOrigin.setX(identifier.verticalOriginX * data.scale);
+            data.glyphOrigin.setY(identifier.verticalOriginY * data.scale);
         }
 
         data.context->translate(data.xStartOffset + data.currentPoint.x() + data.glyphOrigin.x(), data.currentPoint.y() + data.glyphOrigin.y());
@@ -421,35 +434,25 @@ bool drawTextUsingSVGFontCallback(const SVGGlyphIdentifier& identifier, SVGTextR
     }
 
     if (data.isVerticalText)
-        data.currentPoint.move(0.0f, SVGFontData::convertEmUnitToPixel(data.fontSize, data.unitsPerEm, identifier.verticalAdvanceY));
+        data.currentPoint.move(0.0f, identifier.verticalAdvanceY * data.scale);
     else
-        data.currentPoint.move(SVGFontData::convertEmUnitToPixel(data.fontSize, data.unitsPerEm, identifier.horizontalAdvanceX), 0.0f);
+        data.currentPoint.move(identifier.horizontalAdvanceX * data.scale, 0.0f);
 
     return true;
 }
 
-void drawTextMissingGlyphCallback(const TextRun& run, unsigned int position, SVGTextRunWalkerDrawTextData& data)
+void drawTextMissingGlyphCallback(const TextRun& run, SVGTextRunWalkerDrawTextData& data)
 {
-    // Construct a copy of the current SVG Font that in is use. Disable the SVG Font functionality
-    // in that copy of the Font object, so drawText/floatWidth end up in the "simple" code paths.
-    const Font& font = data.context->font();
-
-    SimpleFontData* fontData = const_cast<SimpleFontData*>(font.primaryFont());
-    SVGFontData* svgFontData = fontData->m_svgFontData.release();
-
     // Handle system font fallback
-    TextRun subRun(run);
-    subRun.setText(subRun.data(position), 1);
+    Font font(FontDescription(), 0, 0); // spacing handled by SVG text code.
+    font.update(data.context->font().fontSelector());
 
-    font.drawText(data.context, subRun, data.currentPoint);
+    font.drawText(data.context, run, data.currentPoint);
 
     if (data.isVerticalText)
-        data.currentPoint.move(0.0f, data.context->font().floatWidth(subRun));
+        data.currentPoint.move(0.0f, font.floatWidth(run));
     else
-        data.currentPoint.move(data.context->font().floatWidth(subRun), 0.0f);
-
-    // Switch back to SVG Font code path
-    fontData->m_svgFontData.set(svgFontData);
+        data.currentPoint.move(font.floatWidth(run), 0.0f);
 }
 
 void Font::drawTextUsingSVGFont(GraphicsContext* context, const TextRun& run, 
@@ -458,7 +461,7 @@ void Font::drawTextUsingSVGFont(GraphicsContext* context, const TextRun& run,
     SVGFontElement* fontElement = 0;
     SVGFontFaceElement* fontFaceElement = 0;
 
-    if (SVGFontData* fontData = svgFontAndFontFaceElementForFontData(primaryFont(), fontFaceElement, fontElement)) {
+    if (const SVGFontData* fontData = svgFontAndFontFaceElementForFontData(primaryFont(), fontFaceElement, fontElement)) {
         if (!fontElement)
             return;
 
@@ -470,9 +473,7 @@ void Font::drawTextUsingSVGFont(GraphicsContext* context, const TextRun& run,
         data.activePaintServer = run.activePaintServer();
         ASSERT(data.activePaintServer);
 
-        data.fontSize = size();
-        data.unitsPerEm = fontFaceElement->unitsPerEm();
-        data.scale = SVGFontData::convertEmUnitToPixel(data.fontSize, data.unitsPerEm, 1.0f);
+        data.scale = convertEmUnitToPixel(size(), fontFaceElement->unitsPerEm(), 1.0f);
         data.isVerticalText = isVerticalWritingMode(data.renderObject->style()->svgStyle());    
         data.xStartOffset = floatWidthOfSubStringUsingSVGFont(this, run, run.rtl() ? to : 0, run.rtl() ? run.length() : from);
         data.currentPoint = point;
@@ -480,14 +481,14 @@ void Font::drawTextUsingSVGFont(GraphicsContext* context, const TextRun& run,
         data.context = context;
 
         String language;
-        if (data.renderObject->element())
-            language = static_cast<Element*>(data.renderObject->element())->getAttribute(XMLNames::langAttr);
+        if (SVGElement* element = static_cast<SVGElement*>(data.renderObject->element()))
+            language = element->getAttribute(XMLNames::langAttr);
 
         if (!data.isVerticalText) {
-            data.glyphOrigin.setX(SVGFontData::convertEmUnitToPixel(data.fontSize, data.unitsPerEm, fontData->horizontalOriginX));
-            data.glyphOrigin.setY(SVGFontData::convertEmUnitToPixel(data.fontSize, data.unitsPerEm, fontData->horizontalOriginY));
+            data.glyphOrigin.setX(fontData->horizontalOriginX() * data.scale);
+            data.glyphOrigin.setY(fontData->horizontalOriginY() * data.scale);
         }
-    
+
         SVGTextRunWalker<SVGTextRunWalkerDrawTextData> runWalker(fontData, fontElement, data, drawTextUsingSVGFontCallback, drawTextMissingGlyphCallback);
         runWalker.walk(run, data.isVerticalText, language, from, to);
     }
diff --git a/WebCore/svg/SVGFontData.cpp b/WebCore/svg/SVGFontData.cpp
new file mode 100644 (file)
index 0000000..dc8ae4e
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2008 Nikolas Zimmermann <zimmermann@kde.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "config.h"
+
+#if ENABLE(SVG_FONTS)
+#include "SVGFontData.h"
+
+namespace WebCore {
+
+SVGFontData::SVGFontData(SVGFontFaceElement* fontFaceElement)
+    : m_svgFontFaceElement(fontFaceElement)
+    , m_horizontalOriginX(fontFaceElement->horizontalOriginX())
+    , m_horizontalOriginY(fontFaceElement->horizontalOriginY())
+    , m_horizontalAdvanceX(fontFaceElement->horizontalAdvanceX())
+    , m_verticalOriginX(fontFaceElement->verticalOriginX())
+    , m_verticalOriginY(fontFaceElement->verticalOriginY())
+    , m_verticalAdvanceY(fontFaceElement->verticalAdvanceY())
+{
+}
+
+SVGFontData::~SVGFontData()
+{
+}
+
+} // namespace WebCore
+
+#endif
diff --git a/WebCore/svg/SVGFontData.h b/WebCore/svg/SVGFontData.h
new file mode 100644 (file)
index 0000000..cb2192c
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2008 Nikolas Zimmermann <zimmermann@kde.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef SVGFontData_h
+#define SVGFontData_h
+
+#if ENABLE(SVG_FONTS)
+#include "SVGFontFaceElement.h"
+
+namespace WebCore {
+
+class SVGFontData {
+public:
+    SVGFontData(SVGFontFaceElement*);
+    virtual ~SVGFontData();
+
+    SVGFontFaceElement* svgFontFaceElement() const { return m_svgFontFaceElement.get(); }
+
+    float horizontalOriginX() const { return m_horizontalOriginX; }
+    float horizontalOriginY() const { return m_horizontalOriginY; }
+    float horizontalAdvanceX() const { return m_horizontalAdvanceX; }
+
+    float verticalOriginX() const { return m_verticalOriginX; }
+    float verticalOriginY() const { return m_verticalOriginY; }
+    float verticalAdvanceY() const { return m_verticalAdvanceY; }
+
+private:
+    RefPtr<SVGFontFaceElement> m_svgFontFaceElement;
+
+    float m_horizontalOriginX;
+    float m_horizontalOriginY;
+    float m_horizontalAdvanceX;
+
+    float m_verticalOriginX;
+    float m_verticalOriginY;
+    float m_verticalAdvanceY;
+};
+
+} // namespace WebCore
+
+#endif
+#endif // SVGFontData_h
index cb0bb1f92bbb50e2155be1a9d409a4889e473c19..819e65b963a05c1e5c9874f12be8fb76530a7742 100644 (file)
@@ -1,6 +1,6 @@
 /*
    Copyright (C) 2007 Eric Seidel <eric@webkit.org>
-   Copyright (C) 2007 Nikolas Zimmermann <zimmermann@kde.org>
+   Copyright (C) 2007, 2008 Nikolas Zimmermann <zimmermann@kde.org>
     
    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Library General Public
@@ -22,7 +22,7 @@
 
 #if ENABLE(SVG_FONTS)
 #include "SVGFontFaceElement.h"
-
+#include "CString.h"
 #include "CSSFontFaceRule.h"
 #include "CSSFontFaceSrcValue.h"
 #include "CSSProperty.h"
@@ -138,108 +138,163 @@ void SVGFontFaceElement::parseMappedAttribute(MappedAttribute* attr)
 
 unsigned SVGFontFaceElement::unitsPerEm() const
 {
-    if (hasAttribute(units_per_emAttr))
-        return static_cast<int>(ceilf(getAttribute(units_per_emAttr).toFloat()));
-
-    return 1000;
-}
+    AtomicString value(getAttribute(units_per_emAttr));
+    if (value.isEmpty())
+        return 1000;
 
-String SVGFontFaceElement::fontFamily() const
-{
-    return m_styleDeclaration->getPropertyValue(CSS_PROP_FONT_FAMILY);
+    return static_cast<unsigned>(ceilf(value.toFloat()));
 }
 
-SimpleFontData* SVGFontFaceElement::createFontData(const FontDescription& fontDescription) const
+int SVGFontFaceElement::xHeight() const
 {
-    // We only expect to have this method called by a parent font element
-    ASSERT(parentNode());
-    ASSERT(parentNode()->hasTagName(fontTag));
-    SVGFontElement* fontElement = static_cast<SVGFontElement*>(parentNode());
-
-    FontPlatformData* cachedPlatformData = FontCache::getLastResortFallbackFont(fontDescription);
-    if (!cachedPlatformData)
+    AtomicString value(getAttribute(x_heightAttr));
+    if (value.isEmpty())
         return 0;
 
-    OwnPtr<SimpleFontData> fontData(new SimpleFontData(*cachedPlatformData));
-
-    SVGFontData* svgFontData = new SVGFontData(const_cast<SVGFontFaceElement*>(this));
-    fontData->m_svgFontData.set(svgFontData);
+    return static_cast<int>(ceilf(value.toFloat()));
+}
 
-    fontData->m_xHeight = fontElement->getAttribute(x_heightAttr).toFloat();
-    fontData->m_unitsPerEm = unitsPerEm();
+float SVGFontFaceElement::horizontalOriginX() const
+{
+    if (!m_fontElement)
+        return 0.0f;
 
     // Spec: The X-coordinate in the font coordinate system of the origin of a glyph to be used when
     // drawing horizontally oriented text. (Note that the origin applies to all glyphs in the font.)
     // If the attribute is not specified, the effect is as if a value of "0" were specified.
-    if (fontElement->hasAttribute(horiz_origin_xAttr))
-        svgFontData->horizontalOriginX = fontElement->getAttribute(horiz_origin_xAttr).toFloat();
+    AtomicString value(m_fontElement->getAttribute(horiz_origin_xAttr));
+    if (value.isEmpty())
+        return 0.0f;
+
+    return value.toFloat();
+}
+
+float SVGFontFaceElement::horizontalOriginY() const
+{
+    if (!m_fontElement)
+        return 0.0f;
 
     // Spec: The Y-coordinate in the font coordinate system of the origin of a glyph to be used when
     // drawing horizontally oriented text. (Note that the origin applies to all glyphs in the font.)
     // If the attribute is not specified, the effect is as if a value of "0" were specified.
-    if (fontElement->hasAttribute(horiz_origin_yAttr))
-        svgFontData->horizontalOriginY = fontElement->getAttribute(horiz_origin_yAttr).toFloat();
+    AtomicString value(m_fontElement->getAttribute(horiz_origin_yAttr));
+    if (value.isEmpty())
+        return 0.0f;
+
+    return value.toFloat();
+}
+
+float SVGFontFaceElement::horizontalAdvanceX() const
+{
+    if (!m_fontElement)
+        return 0.0f;
 
     // Spec: The default horizontal advance after rendering a glyph in horizontal orientation. Glyph
     // widths are required to be non-negative, even if the glyph is typically rendered right-to-left,
     // as in Hebrew and Arabic scripts.
-    if (fontElement->hasAttribute(horiz_adv_xAttr)) {
-        float advance = fontElement->getAttribute(horiz_adv_xAttr).toFloat();
+    AtomicString value(m_fontElement->getAttribute(horiz_adv_xAttr));
+    if (value.isEmpty())
+        return 0.0f;
 
-        // TODO: Report errors, instead of silent ignore?
-        if (advance >= 0.0)
-            svgFontData->horizontalAdvanceX = advance;
-    }
+    return value.toFloat();
+}
+
+float SVGFontFaceElement::verticalOriginX() const
+{
+    if (!m_fontElement)
+        return 0.0f;
 
     // Spec: The default X-coordinate in the font coordinate system of the origin of a glyph to be used when
     // drawing vertically oriented text. If the attribute is not specified, the effect is as if the attribute
     // were set to half of the effective value of attribute horiz-adv-x.
-    if (fontElement->hasAttribute(vert_origin_xAttr))
-        svgFontData->verticalOriginX = fontElement->getAttribute(vert_origin_xAttr).toFloat();
-    else
-        svgFontData->verticalOriginX = svgFontData->horizontalAdvanceX / 2.0f;
+    AtomicString value(m_fontElement->getAttribute(vert_origin_xAttr));
+    if (value.isEmpty())
+        return horizontalAdvanceX() / 2.0f;
+
+    return value.toFloat();
+}
+
+float SVGFontFaceElement::verticalOriginY() const
+{
+    if (!m_fontElement)
+        return 0.0f;
 
     // Spec: The default Y-coordinate in the font coordinate system of the origin of a glyph to be used when
     // drawing vertically oriented text. If the attribute is not specified, the effect is as if the attribute
     // were set to the position specified by the font's ascent attribute.             
-    if (fontElement->hasAttribute(vert_origin_yAttr))
-        svgFontData->verticalOriginY = fontElement->getAttribute(vert_origin_yAttr).toFloat();
-    else
-        svgFontData->verticalOriginY = fontElement->getAttribute(ascentAttr).toFloat();
+    AtomicString value(m_fontElement->getAttribute(vert_origin_yAttr));
+    if (value.isEmpty())
+        return ascent();
+
+    return value.toFloat();
+}
+
+float SVGFontFaceElement::verticalAdvanceY() const
+{
+    if (!m_fontElement)
+        return 0.0f;
 
     // Spec: The default vertical advance after rendering a glyph in vertical orientation. If the attribute is
     // not specified, the effect is as if a value equivalent of one em were specified (see units-per-em).                    
-    if (fontElement->hasAttribute(vert_adv_yAttr))
-        svgFontData->verticalAdvanceY = fontElement->getAttribute(vert_adv_yAttr).toFloat();
-    else
-        svgFontData->verticalAdvanceY = 1.0f;
+    AtomicString value(m_fontElement->getAttribute(vert_adv_yAttr));
+       if (value.isEmpty())
+        return 1.0f;
+
+    return value.toFloat();
+}
+
+int SVGFontFaceElement::ascent() const
+{
+    if (!m_fontElement)
+        return 0.0f;
 
     // Spec: Same syntax and semantics as the 'ascent' descriptor within an @font-face rule. The maximum
     // unaccented height of the font within the font coordinate system. If the attribute is not specified,
     // the effect is as if the attribute were set to the difference between the units-per-em value and the
     // vert-origin-y value for the corresponding font.
-    if (hasAttribute(ascentAttr))
-        fontData->m_ascent = static_cast<int>(ceilf(getAttribute(ascentAttr).toFloat()));
-    else if (fontElement->hasAttribute(vert_origin_yAttr))
-        fontData->m_ascent = fontData->m_unitsPerEm - static_cast<int>(ceilf(fontElement->getAttribute(vert_origin_yAttr).toFloat()));
-    else // Match Batik's default value.
-        fontData->m_ascent = fontData->m_unitsPerEm * 0.8f;
+    AtomicString value(m_fontElement->getAttribute(ascentAttr));
+    if (!value.isEmpty())
+        return static_cast<int>(ceilf(value.toFloat()));
+
+    value = m_fontElement->getAttribute(vert_origin_yAttr);
+    if (!value.isEmpty())
+        return static_cast<int>(unitsPerEm()) - static_cast<int>(ceilf(value.toFloat()));
+
+    // Match Batiks default value
+    return static_cast<int>(ceilf(unitsPerEm() * 0.8f));
+}
+
+int SVGFontFaceElement::descent() const
+{
+    if (!m_fontElement)
+        return 0.0f;
 
     // Spec: Same syntax and semantics as the 'descent' descriptor within an @font-face rule. The maximum
     // unaccented depth of the font within the font coordinate system. If the attribute is not specified,
     // the effect is as if the attribute were set to the vert-origin-y value for the corresponding font.
-    if (hasAttribute(descentAttr)) {
-        fontData->m_descent = static_cast<int>(ceilf(getAttribute(descentAttr).toFloat()));
-
+    AtomicString value(m_fontElement->getAttribute(descentAttr));
+    if (!value.isEmpty()) {
         // Some testcases use a negative descent value, where a positive was meant to be used :(
-        if (fontData->m_descent < 0)
-            fontData->m_descent = -fontData->m_descent;
-    } else if (fontElement->hasAttribute(vert_origin_yAttr))
-        fontData->m_descent = static_cast<int>(ceilf(fontElement->getAttribute(vert_origin_yAttr).toFloat()));
-    else // Match Batik's default value.
-        fontData->m_descent = fontData->m_unitsPerEm * 0.2f;
-
-    return fontData.release();
+        int descent = static_cast<int>(ceilf(value.toFloat()));
+        return descent < 0 ? -descent : descent;
+    }
+
+    value = m_fontElement->getAttribute(vert_origin_yAttr);
+    if (!value.isEmpty())
+        return static_cast<int>(ceilf(value.toFloat()));
+
+    // Match Batiks default value
+    return static_cast<int>(ceilf(unitsPerEm() * 0.2f));
+}
+
+String SVGFontFaceElement::fontFamily() const
+{
+    return m_styleDeclaration->getPropertyValue(CSS_PROP_FONT_FAMILY);
+}
+
+SVGFontElement* SVGFontFaceElement::associatedFontElement() const
+{
+    return m_fontElement.get();
 }
 
 void SVGFontFaceElement::rebuildFontFace()
@@ -252,7 +307,7 @@ void SVGFontFaceElement::rebuildFontFace()
     if (parentNode() && parentNode()->hasTagName(fontTag)) {
         RefPtr<CSSValueList> list = new CSSValueList;
 
-        RefPtr<CSSFontFaceSrcValue> src = new CSSFontFaceSrcValue(StringImpl::empty(), true /* isLocal */);
+        RefPtr<CSSFontFaceSrcValue> src = new CSSFontFaceSrcValue(fontFamily(), true /* isLocal */);
         src->setSVGFontFaceElement(this);
         list->append(src);
 
@@ -260,6 +315,7 @@ void SVGFontFaceElement::rebuildFontFace()
         const CSSProperty* srcPropertyRef = &srcProperty;
         m_styleDeclaration->addParsedProperties(&srcPropertyRef, 1);
 
+        m_fontElement = static_cast<SVGFontElement*>(parentNode());
         document()->updateStyleSelector();
         return;
     }
@@ -304,20 +360,6 @@ void SVGFontFaceElement::childrenChanged()
     rebuildFontFace();
 }
 
-SVGFontElement* SVGFontFaceElement::associatedFontElement() const
-{
-    if (Node* parent = parentNode()) {
-        if (parent->hasTagName(fontTag))
-            return static_cast<SVGFontElement*>(parent);
-        else if (parent->hasTagName(defsTag)) {
-            // TODO: Support external SVG fonts!
-            return 0;
-        }
-    }
-
-    return 0;
-}
-
 }
 
 #endif // ENABLE(SVG_FONTS)
index b504454f8cf3250fe270d07cb19cf3427bf443d1..2ccca9ff0ed699a0660fdbc8b13a39254ef58bee 100644 (file)
@@ -28,8 +28,6 @@ namespace WebCore {
 
     class CSSFontFaceRule;
     class CSSMutableStyleDeclaration;
-    class FontDescription;
-    class SimpleFontData;
     class SVGFontElement;
 
     class SVGFontFaceElement : public SVGElement {
@@ -43,18 +41,25 @@ namespace WebCore {
         virtual void insertedIntoDocument();
 
         unsigned unitsPerEm() const;
+        int xHeight() const;
+        float horizontalOriginX() const;
+        float horizontalOriginY() const;
+        float horizontalAdvanceX() const;
+        float verticalOriginX() const;
+        float verticalOriginY() const;
+        float verticalAdvanceY() const;
+        int ascent() const;
+        int descent() const;
         String fontFamily() const;
 
-        void rebuildFontFace();
-        SimpleFontData* createFontData(const FontDescription&) const;
-
-        // If our parent element is <font>, it will be returned. (this is the case for a SVG Font described in the same document)
-        // Otherwhise it will return the <font> element that is referenced by the first valid <font-face-src> element.
         SVGFontElement* associatedFontElement() const;
+        void rebuildFontFace();
 
     private:
         RefPtr<CSSFontFaceRule> m_fontFaceRule;
         RefPtr<CSSMutableStyleDeclaration> m_styleDeclaration;
+
+        RefPtr<SVGFontElement> m_fontElement;
     };
 
 } // namespace WebCore
index 39d6380a803bcb6879e8a100f9fc316fe376a83a..34c8f3afcf2415f53393194c6b5b5649318b8c00 100644 (file)
@@ -1,6 +1,6 @@
 /*
    Copyright (C) 2007 Eric Seidel <eric@webkit.org>
-   Copyright (C) 2007 Nikolas Zimmermann <zimmermann@kde.org>
+   Copyright (C) 2007, 2008 Nikolas Zimmermann <zimmermann@kde.org>
 
    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Library General Public
@@ -25,6 +25,7 @@
 
 #include "SVGFontElement.h"
 #include "SVGFontFaceElement.h"
+#include "SVGFontData.h"
 #include "SVGNames.h"
 #include "SVGParserUtilities.h"
 #include "SimpleFontData.h"
@@ -93,67 +94,69 @@ static inline Path parsePathData(const AtomicString& value)
     return result;
 }
 
-void SVGGlyphElement::inheritUnspecifiedAttributes(SVGGlyphIdentifier& identifier, SVGFontData* svgFontData)
+void SVGGlyphElement::inheritUnspecifiedAttributes(SVGGlyphIdentifier& identifier, const SVGFontData* svgFontData)
 {
     if (identifier.horizontalAdvanceX == SVGGlyphIdentifier::inheritedValue())
-        identifier.horizontalAdvanceX = svgFontData->horizontalAdvanceX;
+        identifier.horizontalAdvanceX = svgFontData->horizontalAdvanceX();
 
     if (identifier.verticalOriginX == SVGGlyphIdentifier::inheritedValue())
-        identifier.verticalOriginX = svgFontData->verticalOriginX;
+        identifier.verticalOriginX = svgFontData->verticalOriginX();
 
     if (identifier.verticalOriginY == SVGGlyphIdentifier::inheritedValue())
-        identifier.verticalOriginY = svgFontData->verticalOriginY;
+        identifier.verticalOriginY = svgFontData->verticalOriginY();
 
     if (identifier.verticalAdvanceY == SVGGlyphIdentifier::inheritedValue())
-        identifier.verticalAdvanceY = svgFontData->verticalAdvanceY;
+        identifier.verticalAdvanceY = svgFontData->verticalAdvanceY();
 }
 
-SVGGlyphIdentifier SVGGlyphElement::buildGlyphIdentifier() const
+static inline float parseSVGGlyphAttribute(const SVGElement* element, const WebCore::QualifiedName& name)
 {
-    SVGGlyphIdentifier identifier;
-    identifier.glyphName = getAttribute(glyph_nameAttr);
-    identifier.orientation = parseOrientation(getAttribute(orientationAttr));
-    identifier.arabicForm = parseArabicForm(getAttribute(arabic_formAttr));
-    identifier.pathData = parsePathData(getAttribute(dAttr));
+    AtomicString value(element->getAttribute(name));
+    if (value.isEmpty())
+        return SVGGlyphIdentifier::inheritedValue();
 
-    String language = getAttribute(XMLNames::langAttr);
-    if (language.isEmpty()) // SVG defines a non-xml prefixed "lang" propert for <glyph> it seems.
-        language = getAttribute("lang");
-
-    identifier.languages = parseDelimitedString(language, ',');
+    return value.toFloat();
+}
 
+SVGGlyphIdentifier SVGGlyphElement::buildGenericGlyphIdentifier(const SVGElement* element)
+{
+    SVGGlyphIdentifier identifier;
+    identifier.pathData = parsePathData(element->getAttribute(dAttr));
     // Spec: The horizontal advance after rendering the glyph in horizontal orientation.
     // If the attribute is not specified, the effect is as if the attribute were set to the
     // value of the font's horiz-adv-x attribute. Glyph widths are required to be non-negative,
     // even if the glyph is typically rendered right-to-left, as in Hebrew and Arabic scripts.
-    if (hasAttribute(horiz_adv_xAttr))
-        identifier.horizontalAdvanceX = getAttribute(horiz_adv_xAttr).toFloat();
-    else
-        identifier.horizontalAdvanceX = SVGGlyphIdentifier::inheritedValue();
+    identifier.horizontalAdvanceX = parseSVGGlyphAttribute(element, horiz_adv_xAttr);
 
     // Spec: The X-coordinate in the font coordinate system of the origin of the glyph to be
     // used when drawing vertically oriented text. If the attribute is not specified, the effect
     // is as if the attribute were set to the value of the font's vert-origin-x attribute.
-    if (hasAttribute(vert_origin_xAttr))
-        identifier.verticalOriginX = getAttribute(vert_origin_xAttr).toFloat();
-    else
-        identifier.verticalOriginX = SVGGlyphIdentifier::inheritedValue();
+    identifier.verticalOriginX = parseSVGGlyphAttribute(element, vert_origin_xAttr);
 
     // Spec: The Y-coordinate in the font coordinate system of the origin of a glyph to be
     // used when drawing vertically oriented text. If the attribute is not specified, the effect
     // is as if the attribute were set to the value of the font's vert-origin-y attribute.
-    if (hasAttribute(vert_origin_yAttr))
-        identifier.verticalOriginY = getAttribute(vert_origin_yAttr).toFloat();
-    else
-        identifier.verticalOriginY = SVGGlyphIdentifier::inheritedValue();
+    identifier.verticalOriginY = parseSVGGlyphAttribute(element, vert_origin_yAttr);
 
     // Spec: The vertical advance after rendering a glyph in vertical orientation.
     // If the attribute is not specified, the effect is as if the attribute were set to the
     // value of the font's vert-adv-y attribute.
-    if (hasAttribute(vert_adv_yAttr))
-        identifier.verticalAdvanceY = getAttribute(vert_adv_yAttr).toFloat();
-    else
-        identifier.verticalAdvanceY = SVGGlyphIdentifier::inheritedValue();
+    identifier.verticalAdvanceY = parseSVGGlyphAttribute(element, vert_adv_yAttr);
+
+    return identifier;
+}
+
+SVGGlyphIdentifier SVGGlyphElement::buildGlyphIdentifier() const
+{
+    SVGGlyphIdentifier identifier(buildGenericGlyphIdentifier(this));
+    identifier.glyphName = getAttribute(glyph_nameAttr);
+    identifier.orientation = parseOrientation(getAttribute(orientationAttr));
+    identifier.arabicForm = parseArabicForm(getAttribute(arabic_formAttr));
+
+    String language = getAttribute(langAttr);
+    if (!language.isEmpty())
+        identifier.languages = parseDelimitedString(language, ',');
 
     return identifier;
 }
index af6d7ecb15f8499ceb91fa40f72bb118e81416e3..54069bd7d2348c10f728624cbb90a0dcaf8a8379 100644 (file)
@@ -29,6 +29,7 @@
 
 namespace WebCore {
 
+    class AtomicString;
     struct SVGFontData;
 
     // Describe a SVG <glyph> element
@@ -106,9 +107,14 @@ namespace WebCore {
         virtual bool rendererIsNeeded(RenderStyle*) { return false; }
 
         SVGGlyphIdentifier buildGlyphIdentifier() const;
-        static void inheritUnspecifiedAttributes(SVGGlyphIdentifier&, SVGFontData*);
-    };
 
+        // Helper function used by SVGFont
+        static void inheritUnspecifiedAttributes(SVGGlyphIdentifier&, const SVGFontData*);
+        static String querySVGFontLanguage(const SVGElement*);
+
+        // Helper function shared between SVGGlyphElement & SVGMissingGlyphElement
+        static SVGGlyphIdentifier buildGenericGlyphIdentifier(const SVGElement*);
+    };
 
 } // namespace WebCore
 
index 34177e346ecbf2066faceca5097eac4293a866fc..5d31e82829a643363c3b380d353a92f5fc3a5e31 100644 (file)
 #if ENABLE(SVG_FONTS)
 #include "SVGMissingGlyphElement.h"
 
-#include "SVGNames.h"
-
 namespace WebCore {
 
-using namespace SVGNames;
-
 SVGMissingGlyphElement::SVGMissingGlyphElement(const QualifiedName& tagName, Document* doc)
     : SVGStyledElement(tagName, doc)
 {
index 1767ff6b6f0bf802216074a645c60cb1fe468dd1..8388133272bdd71f3073ad8acb8a55c086cb9998 100644 (file)
@@ -102,6 +102,7 @@ kerning
 keyPoints
 keySplines
 keyTimes
+lang
 lengthAdjust
 letter-spacing
 lighting-color