2011-06-20 Kenneth Russell <kbr@google.com>
authorkbr@google.com <kbr@google.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 20 Jun 2011 23:29:57 +0000 (23:29 +0000)
committerkbr@google.com <kbr@google.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 20 Jun 2011 23:29:57 +0000 (23:29 +0000)
        Unreviewed.

        Rolled out r89233 and r89235 because of crashes in http/tests/misc/acid3.html on Snow Leopard and other platforms
        https://bugs.webkit.org/show_bug.cgi?id=63022

        * platform/mac/svg/W3C-SVG-1.1-SE/coords-units-03-b-expected.png:
        * platform/mac/svg/W3C-SVG-1.1-SE/coords-units-03-b-expected.txt:
        * 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.png:
        * platform/mac/svg/W3C-SVG-1.1/fonts-glyph-04-t-expected.txt:
        * 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/text-altglyph-01-b-expected.png:
        * platform/mac/svg/W3C-SVG-1.1/text-altglyph-01-b-expected.txt:
        * platform/mac/svg/batik/text/textEffect-expected.png:
        * platform/mac/svg/batik/text/textEffect-expected.txt:
        * platform/mac/svg/batik/text/textEffect3-expected.png:
        * platform/mac/svg/batik/text/textEffect3-expected.txt:
        * platform/mac/svg/batik/text/xmlSpace-expected.png:
        * platform/mac/svg/batik/text/xmlSpace-expected.txt:
        * platform/mac/svg/custom/glyph-selection-lang-attribute-expected.png:
        * platform/mac/svg/custom/glyph-selection-lang-attribute-expected.txt:
        * platform/mac/svg/custom/svg-fonts-fallback-expected.png: Removed.
        * platform/mac/svg/custom/svg-fonts-fallback-expected.txt: Removed.
        * platform/mac/svg/custom/svg-fonts-segmented-expected.png: Removed.
        * platform/mac/svg/custom/svg-fonts-segmented-expected.txt: Removed.
        * platform/mac/svg/custom/svg-fonts-with-no-element-reference-expected.png:
        * platform/mac/svg/custom/svg-fonts-with-no-element-reference-expected.txt:
        * platform/mac/svg/custom/svg-fonts-without-missing-glyph-expected.png:
        * platform/mac/svg/custom/svg-fonts-without-missing-glyph-expected.txt:
        * platform/mac/svg/custom/svg-fonts-word-spacing-expected.png: Removed.
        * platform/mac/svg/custom/svg-fonts-word-spacing-expected.txt: Removed.
        * platform/mac/svg/dynamic-updates/SVGFEConvolveMatrixElement-dom-preserveAlpha-attr-expected.png:
        * platform/mac/svg/dynamic-updates/SVGFEConvolveMatrixElement-svgdom-preserveAlpha-prop-expected.png:
        * platform/mac/svg/foreignObject/text-tref-02-b-expected.png:
        * platform/mac/svg/foreignObject/text-tref-02-b-expected.txt:
        * 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-overflow-ellipsis-svgfont-expected.png: Removed.
        * platform/mac/svg/text/text-overflow-ellipsis-svgfont-expected.txt: Removed.
        * 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.png:
        * platform/mac/svg/text/text-text-05-t-expected.txt:
        * platform/mac/svg/text/text-text-06-t-expected.png:
        * platform/mac/svg/text/text-text-06-t-expected.txt:
        * platform/mac/svg/transforms/text-with-mask-with-svg-transform-expected.png:
        * platform/mac/svg/transforms/text-with-mask-with-svg-transform-expected.txt:
        * platform/mac/svg/wicd/test-rightsizing-b-expected.png:
        * platform/mac/svg/wicd/test-rightsizing-b-expected.txt:
        * svg/custom/resources/ABCFont.svg:
        * svg/custom/svg-fonts-fallback.xhtml: Removed.
        * svg/custom/svg-fonts-segmented.xhtml: Removed.
        * svg/custom/svg-fonts-word-spacing.html: Removed.
        * svg/text/select-text-svgfont-expected.txt: Removed.
        * svg/text/select-text-svgfont.html: Removed.
        * svg/text/text-overflow-ellipsis-svgfont.html: Removed.
2011-06-20  Kenneth Russell  <kbr@google.com>

        Unreviewed.

        Rolled out r89233 and r89235 because of crashes in http/tests/misc/acid3.html on Snow Leopard and other platforms
        https://bugs.webkit.org/show_bug.cgi?id=63022

        * wtf/Platform.h:
2011-06-20  Kenneth Russell  <kbr@google.com>

        Unreviewed.

        Rolled out r89233 and r89235 because of crashes in http/tests/misc/acid3.html on Snow Leopard and other platforms
        https://bugs.webkit.org/show_bug.cgi?id=63022

        * features.pri:
        * page/DOMWindow.idl:
        * platform/graphics/Font.cpp:
        (WebCore::Font::drawText):
        (WebCore::Font::drawEmphasisMarks):
        (WebCore::Font::width):
        (WebCore::Font::selectionRectForText):
        (WebCore::Font::offsetForPosition):
        (WebCore::Font::codePath):
        * platform/graphics/Font.h:
        * platform/graphics/FontFallbackList.h:
        * platform/graphics/FontFastPath.cpp:
        (WebCore::Font::glyphDataForCharacter):
        (WebCore::Font::getEmphasisMarkGlyphData):
        (WebCore::Font::drawGlyphBuffer):
        * platform/graphics/FontMetrics.h:
        * platform/graphics/GlyphPageTreeNode.cpp:
        (WebCore::fill):
        * platform/graphics/SVGGlyph.h:
        (WebCore::SVGGlyph::SVGGlyph):
        (WebCore::SVGGlyph::operator==):
        * platform/graphics/SimpleFontData.cpp:
        (WebCore::SimpleFontData::SimpleFontData):
        * platform/graphics/SimpleFontData.h:
        (WebCore::SimpleFontData::widthForGlyph):
        * platform/graphics/TextRun.h:
        * platform/graphics/WidthIterator.cpp:
        (WebCore::WidthIterator::advance):
        * platform/graphics/WidthIterator.h:
        * platform/graphics/chromium/SimpleFontDataChromiumWin.cpp:
        (WebCore::scaleEmToUnits):
        * platform/graphics/mac/SimpleFontDataMac.mm:
        (WebCore::scaleEmToUnits):
        * platform/graphics/win/SimpleFontDataCGWin.cpp:
        (WebCore::scaleEmToUnits):
        * rendering/svg/SVGTextMetrics.cpp:
        (WebCore::SVGTextMetrics::SVGTextMetrics):
        (WebCore::constructTextRun):
        (WebCore::SVGTextMetrics::measureCharacterRange):
        * rendering/svg/SVGTextMetrics.h:
        * rendering/svg/SVGTextRunRenderingContext.cpp:
        (WebCore::convertEmUnitToPixel):
        (WebCore::isVerticalWritingMode):
        (WebCore::firstParentRendererForNonTextNode):
        (WebCore::referencingRenderObjectFromRun):
        (WebCore::SVGTextRunWalker::SVGTextRunWalker):
        (WebCore::SVGTextRunWalker::walk):
        (WebCore::floatWidthUsingSVGFontCallback):
        (WebCore::floatWidthMissingGlyphCallback):
        (WebCore::floatWidthOfSubStringUsingSVGFont):
        (WebCore::SVGTextRunRenderingContext::floatWidthUsingSVGFont):
        (WebCore::drawTextUsingSVGFontCallback):
        (WebCore::drawTextMissingGlyphCallback):
        (WebCore::SVGTextRunRenderingContext::drawTextUsingSVGFont):
        (WebCore::SVGTextRunRenderingContext::selectionRectForTextUsingSVGFont):
        (WebCore::SVGTextRunRenderingContext::offsetForPositionForTextUsingSVGFont):
        * rendering/svg/SVGTextRunRenderingContext.h:
        * svg/SVGAltGlyphElement.cpp:
        (WebCore::SVGAltGlyphElement::glyphElement):
        * svg/SVGAltGlyphElement.h:
        * svg/SVGFontData.cpp:
        (WebCore::SVGFontData::initializeFontData):
        * svg/SVGFontData.h:
        * svg/SVGFontElement.cpp:
        (WebCore::SVGFontElement::registerLigaturesInGlyphCache):
        (WebCore::SVGFontElement::ensureGlyphCache):
        * svg/SVGGlyphMap.h:
        (WebCore::SVGGlyphMap::addGlyphByUnicodeString):
        * svg/svgtags.in:

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

85 files changed:
LayoutTests/ChangeLog
LayoutTests/platform/mac/svg/W3C-SVG-1.1-SE/coords-units-03-b-expected.png
LayoutTests/platform/mac/svg/W3C-SVG-1.1-SE/coords-units-03-b-expected.txt
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.png
LayoutTests/platform/mac/svg/W3C-SVG-1.1/fonts-glyph-04-t-expected.txt
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/text-altglyph-01-b-expected.png
LayoutTests/platform/mac/svg/W3C-SVG-1.1/text-altglyph-01-b-expected.txt
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.png
LayoutTests/platform/mac/svg/batik/text/textEffect3-expected.txt
LayoutTests/platform/mac/svg/batik/text/xmlSpace-expected.png
LayoutTests/platform/mac/svg/batik/text/xmlSpace-expected.txt
LayoutTests/platform/mac/svg/custom/glyph-selection-lang-attribute-expected.png
LayoutTests/platform/mac/svg/custom/glyph-selection-lang-attribute-expected.txt
LayoutTests/platform/mac/svg/custom/svg-fonts-fallback-expected.png [deleted file]
LayoutTests/platform/mac/svg/custom/svg-fonts-fallback-expected.txt [deleted file]
LayoutTests/platform/mac/svg/custom/svg-fonts-segmented-expected.png [deleted file]
LayoutTests/platform/mac/svg/custom/svg-fonts-segmented-expected.txt [deleted file]
LayoutTests/platform/mac/svg/custom/svg-fonts-with-no-element-reference-expected.png
LayoutTests/platform/mac/svg/custom/svg-fonts-with-no-element-reference-expected.txt
LayoutTests/platform/mac/svg/custom/svg-fonts-without-missing-glyph-expected.png
LayoutTests/platform/mac/svg/custom/svg-fonts-without-missing-glyph-expected.txt
LayoutTests/platform/mac/svg/custom/svg-fonts-word-spacing-expected.png [deleted file]
LayoutTests/platform/mac/svg/custom/svg-fonts-word-spacing-expected.txt [deleted file]
LayoutTests/platform/mac/svg/dynamic-updates/SVGFEConvolveMatrixElement-dom-preserveAlpha-attr-expected.png
LayoutTests/platform/mac/svg/dynamic-updates/SVGFEConvolveMatrixElement-svgdom-preserveAlpha-prop-expected.png
LayoutTests/platform/mac/svg/foreignObject/text-tref-02-b-expected.png
LayoutTests/platform/mac/svg/foreignObject/text-tref-02-b-expected.txt
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-overflow-ellipsis-svgfont-expected.png [deleted file]
LayoutTests/platform/mac/svg/text/text-overflow-ellipsis-svgfont-expected.txt [deleted file]
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.png
LayoutTests/platform/mac/svg/text/text-text-05-t-expected.txt
LayoutTests/platform/mac/svg/text/text-text-06-t-expected.png
LayoutTests/platform/mac/svg/text/text-text-06-t-expected.txt
LayoutTests/platform/mac/svg/transforms/text-with-mask-with-svg-transform-expected.png
LayoutTests/platform/mac/svg/transforms/text-with-mask-with-svg-transform-expected.txt
LayoutTests/platform/mac/svg/wicd/test-rightsizing-b-expected.png
LayoutTests/platform/mac/svg/wicd/test-rightsizing-b-expected.txt
LayoutTests/svg/custom/resources/ABCFont.svg
LayoutTests/svg/custom/svg-fonts-fallback.xhtml [deleted file]
LayoutTests/svg/custom/svg-fonts-segmented.xhtml [deleted file]
LayoutTests/svg/custom/svg-fonts-word-spacing.html [deleted file]
LayoutTests/svg/text/select-text-svgfont-expected.txt [deleted file]
LayoutTests/svg/text/select-text-svgfont.html [deleted file]
LayoutTests/svg/text/text-overflow-ellipsis-svgfont.html [deleted file]
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/wtf/Platform.h
Source/WebCore/ChangeLog
Source/WebCore/features.pri
Source/WebCore/page/DOMWindow.idl
Source/WebCore/platform/graphics/Font.cpp
Source/WebCore/platform/graphics/Font.h
Source/WebCore/platform/graphics/FontFallbackList.h
Source/WebCore/platform/graphics/FontFastPath.cpp
Source/WebCore/platform/graphics/FontMetrics.h
Source/WebCore/platform/graphics/GlyphPageTreeNode.cpp
Source/WebCore/platform/graphics/SVGGlyph.h
Source/WebCore/platform/graphics/SimpleFontData.cpp
Source/WebCore/platform/graphics/SimpleFontData.h
Source/WebCore/platform/graphics/TextRun.h
Source/WebCore/platform/graphics/WidthIterator.cpp
Source/WebCore/platform/graphics/WidthIterator.h
Source/WebCore/platform/graphics/chromium/SimpleFontDataChromiumWin.cpp
Source/WebCore/platform/graphics/mac/SimpleFontDataMac.mm
Source/WebCore/platform/graphics/win/SimpleFontDataCGWin.cpp
Source/WebCore/rendering/svg/SVGTextMetrics.cpp
Source/WebCore/rendering/svg/SVGTextMetrics.h
Source/WebCore/rendering/svg/SVGTextRunRenderingContext.cpp
Source/WebCore/rendering/svg/SVGTextRunRenderingContext.h
Source/WebCore/svg/SVGAltGlyphElement.cpp
Source/WebCore/svg/SVGAltGlyphElement.h
Source/WebCore/svg/SVGFontData.cpp
Source/WebCore/svg/SVGFontData.h
Source/WebCore/svg/SVGFontElement.cpp
Source/WebCore/svg/SVGGlyphMap.h
Source/WebCore/svg/svgtags.in

index fb1132387646f7257bde4affde68d22fe6f367a2..cf3ac739376ef891139b92f03bcdf8bc8c831dba 100644 (file)
@@ -1,3 +1,64 @@
+2011-06-20  Kenneth Russell  <kbr@google.com>
+
+        Unreviewed.
+
+        Rolled out r89233 and r89235 because of crashes in http/tests/misc/acid3.html on Snow Leopard and other platforms
+        https://bugs.webkit.org/show_bug.cgi?id=63022
+
+        * platform/mac/svg/W3C-SVG-1.1-SE/coords-units-03-b-expected.png:
+        * platform/mac/svg/W3C-SVG-1.1-SE/coords-units-03-b-expected.txt:
+        * 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.png:
+        * platform/mac/svg/W3C-SVG-1.1/fonts-glyph-04-t-expected.txt:
+        * 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/text-altglyph-01-b-expected.png:
+        * platform/mac/svg/W3C-SVG-1.1/text-altglyph-01-b-expected.txt:
+        * platform/mac/svg/batik/text/textEffect-expected.png:
+        * platform/mac/svg/batik/text/textEffect-expected.txt:
+        * platform/mac/svg/batik/text/textEffect3-expected.png:
+        * platform/mac/svg/batik/text/textEffect3-expected.txt:
+        * platform/mac/svg/batik/text/xmlSpace-expected.png:
+        * platform/mac/svg/batik/text/xmlSpace-expected.txt:
+        * platform/mac/svg/custom/glyph-selection-lang-attribute-expected.png:
+        * platform/mac/svg/custom/glyph-selection-lang-attribute-expected.txt:
+        * platform/mac/svg/custom/svg-fonts-fallback-expected.png: Removed.
+        * platform/mac/svg/custom/svg-fonts-fallback-expected.txt: Removed.
+        * platform/mac/svg/custom/svg-fonts-segmented-expected.png: Removed.
+        * platform/mac/svg/custom/svg-fonts-segmented-expected.txt: Removed.
+        * platform/mac/svg/custom/svg-fonts-with-no-element-reference-expected.png:
+        * platform/mac/svg/custom/svg-fonts-with-no-element-reference-expected.txt:
+        * platform/mac/svg/custom/svg-fonts-without-missing-glyph-expected.png:
+        * platform/mac/svg/custom/svg-fonts-without-missing-glyph-expected.txt:
+        * platform/mac/svg/custom/svg-fonts-word-spacing-expected.png: Removed.
+        * platform/mac/svg/custom/svg-fonts-word-spacing-expected.txt: Removed.
+        * platform/mac/svg/dynamic-updates/SVGFEConvolveMatrixElement-dom-preserveAlpha-attr-expected.png:
+        * platform/mac/svg/dynamic-updates/SVGFEConvolveMatrixElement-svgdom-preserveAlpha-prop-expected.png:
+        * platform/mac/svg/foreignObject/text-tref-02-b-expected.png:
+        * platform/mac/svg/foreignObject/text-tref-02-b-expected.txt:
+        * 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-overflow-ellipsis-svgfont-expected.png: Removed.
+        * platform/mac/svg/text/text-overflow-ellipsis-svgfont-expected.txt: Removed.
+        * 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.png:
+        * platform/mac/svg/text/text-text-05-t-expected.txt:
+        * platform/mac/svg/text/text-text-06-t-expected.png:
+        * platform/mac/svg/text/text-text-06-t-expected.txt:
+        * platform/mac/svg/transforms/text-with-mask-with-svg-transform-expected.png:
+        * platform/mac/svg/transforms/text-with-mask-with-svg-transform-expected.txt:
+        * platform/mac/svg/wicd/test-rightsizing-b-expected.png:
+        * platform/mac/svg/wicd/test-rightsizing-b-expected.txt:
+        * svg/custom/resources/ABCFont.svg:
+        * svg/custom/svg-fonts-fallback.xhtml: Removed.
+        * svg/custom/svg-fonts-segmented.xhtml: Removed.
+        * svg/custom/svg-fonts-word-spacing.html: Removed.
+        * svg/text/select-text-svgfont-expected.txt: Removed.
+        * svg/text/select-text-svgfont.html: Removed.
+        * svg/text/text-overflow-ellipsis-svgfont.html: Removed.
+
 2011-06-20  Ryosuke Niwa  <rniwa@webkit.org>
 
         Qt Rebaseline for r89257.
index 298c1d4036d6927e4abbd562fa17685d5dd08391..661e32b0904972dae796a0f4d944c6dbfde2eccc 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/W3C-SVG-1.1-SE/coords-units-03-b-expected.png and b/LayoutTests/platform/mac/svg/W3C-SVG-1.1-SE/coords-units-03-b-expected.png differ
index 9157c7d8d6afb1e2d8dcf3aec6c27832e16e48f1..af8918d4e43b63b05bde56f4349af923d6bf6343 100644 (file)
@@ -10,110 +10,110 @@ layer at (0,0) size 480x360
       RenderSVGText {text} at (125,9) size 181x14 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 181x14
           chunk 1 text run 1 at (125.00,20.00) startOffset 0 endOffset 35 width 181.00: "Initial viewport and CSS units test"
-      RenderSVGContainer {g} at (20,67) size 386x196 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,60.00)}]
-        RenderSVGText {text} at (20,7) size 22x14 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 22x14
-            chunk 1 text run 1 at (20.00,18.00) startOffset 0 endOffset 3 width 21.68: "200"
-        RenderSVGText {text} at (230,9) size 176x14 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 176x14
-            chunk 1 text run 1 at (230.00,20.00) startOffset 0 endOffset 27 width 156.78: "User space units (no specif"
-            chunk 1 text run 2 at (386.75,20.00) startOffset 27 endOffset 31 width 18.77: "ier)"
+      RenderSVGContainer {g} at (20,67) size 391x196 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,60.00)}]
+        RenderSVGText {text} at (20,7) size 23x14 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 23x14
+            chunk 1 text run 1 at (20.00,18.00) startOffset 0 endOffset 3 width 22.24: "200"
+        RenderSVGText {text} at (230,9) size 181x14 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 181x14
+            chunk 1 text run 1 at (230.00,20.00) startOffset 0 endOffset 27 width 160.80: "User space units (no specif"
+            chunk 1 text run 2 at (390.77,20.00) startOffset 27 endOffset 31 width 19.25: "ier)"
         RenderSVGPath {rect} at (20,80) size 200x1 [fill={[type=SOLID] [color=#000000]}] [x=20.00] [y=20.00] [width=200.00] [height=1.00]
-        RenderSVGText {text} at (20,27) size 40x14 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 40x14
-            chunk 1 text run 1 at (20.00,38.00) startOffset 0 endOffset 6 width 39.03: "200 px"
-        RenderSVGText {text} at (230,29) size 61x14 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 61x14
-            chunk 1 text run 1 at (230.00,40.00) startOffset 0 endOffset 3 width 18.06: "Pix"
-            chunk 1 text run 2 at (247.68,40.00) startOffset 3 endOffset 11 width 42.61: "els (px)"
+        RenderSVGText {text} at (20,27) size 41x14 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 41x14
+            chunk 1 text run 1 at (20.00,38.00) startOffset 0 endOffset 6 width 40.03: "200 px"
+        RenderSVGText {text} at (230,29) size 62x14 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 62x14
+            chunk 1 text run 1 at (230.00,40.00) startOffset 0 endOffset 3 width 18.52: "Pix"
+            chunk 1 text run 2 at (248.15,40.00) startOffset 3 endOffset 11 width 43.71: "els (px)"
         RenderSVGPath {rect} at (20,100) size 200x1 [fill={[type=SOLID] [color=#000000]}] [x=20.00] [y=40.00] [width=200.00] [height=1.00]
-        RenderSVGText {text} at (20,47) size 187x14 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 187x14
-            chunk 1 text run 1 at (20.00,58.00) startOffset 0 endOffset 17 width 101.53: "20 em = 200 px (f"
-            chunk 1 text run 2 at (121.40,58.00) startOffset 17 endOffset 27 width 60.33: "ont-size=1"
-            chunk 1 text run 3 at (180.90,58.00) startOffset 27 endOffset 31 width 25.28: "0px)"
-        RenderSVGText {text} at (230,49) size 144x14 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 144x14
-            chunk 1 text run 1 at (230.00,60.00) startOffset 0 endOffset 1 width 9.39: "R"
-            chunk 1 text run 2 at (239.23,60.00) startOffset 1 endOffset 7 width 30.34: "elativ"
-            chunk 1 text run 3 at (269.29,60.00) startOffset 7 endOffset 10 width 14.46: "e t"
-            chunk 1 text run 4 at (283.58,60.00) startOffset 10 endOffset 13 width 14.46: "o f"
-            chunk 1 text run 5 at (297.91,60.00) startOffset 13 endOffset 26 width 75.13: "ont size (em)"
+        RenderSVGText {text} at (20,47) size 191x14 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 191x14
+            chunk 1 text run 1 at (20.00,58.00) startOffset 0 endOffset 17 width 104.13: "20 em = 200 px (f"
+            chunk 1 text run 2 at (124.00,58.00) startOffset 17 endOffset 27 width 61.88: "ont-size=1"
+            chunk 1 text run 3 at (185.05,58.00) startOffset 27 endOffset 31 width 25.93: "0px)"
+        RenderSVGText {text} at (230,49) size 147x14 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 147x14
+            chunk 1 text run 1 at (230.00,60.00) startOffset 0 endOffset 1 width 9.63: "R"
+            chunk 1 text run 2 at (239.47,60.00) startOffset 1 endOffset 7 width 31.12: "elativ"
+            chunk 1 text run 3 at (270.31,60.00) startOffset 7 endOffset 10 width 14.83: "e t"
+            chunk 1 text run 4 at (284.97,60.00) startOffset 10 endOffset 13 width 14.83: "o f"
+            chunk 1 text run 5 at (299.67,60.00) startOffset 13 endOffset 26 width 77.05: "ont size (em)"
         RenderSVGContainer {g} at (20,120) size 200x1
           RenderSVGPath {rect} at (20,120) size 200x1 [fill={[type=SOLID] [color=#000000]}] [x=20.00] [y=60.00] [width=200.00] [height=1.00]
-        RenderSVGText {text} at (20,67) size 32x14 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 32x14
-            chunk 1 text run 1 at (20.00,78.00) startOffset 0 endOffset 4 width 25.30: "40 e"
-            chunk 1 text run 2 at (44.94,78.00) startOffset 4 endOffset 5 width 6.50: "x"
-        RenderSVGText {text} at (230,69) size 162x14 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 162x14
-            chunk 1 text run 1 at (230.00,80.00) startOffset 0 endOffset 1 width 9.39: "R"
-            chunk 1 text run 2 at (239.23,80.00) startOffset 1 endOffset 7 width 30.34: "elativ"
-            chunk 1 text run 3 at (269.29,80.00) startOffset 7 endOffset 10 width 14.46: "e t"
-            chunk 1 text run 4 at (283.58,80.00) startOffset 10 endOffset 13 width 14.46: "o f"
-            chunk 1 text run 5 at (297.91,80.00) startOffset 13 endOffset 28 width 83.10: "ont x-height (e"
-            chunk 1 text run 6 at (380.64,80.00) startOffset 28 endOffset 30 width 10.83: "x)"
+        RenderSVGText {text} at (20,67) size 33x14 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 33x14
+            chunk 1 text run 1 at (20.00,78.00) startOffset 0 endOffset 4 width 25.95: "40 e"
+            chunk 1 text run 2 at (45.59,78.00) startOffset 4 endOffset 5 width 6.67: "x"
+        RenderSVGText {text} at (230,69) size 166x14 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 166x14
+            chunk 1 text run 1 at (230.00,80.00) startOffset 0 endOffset 1 width 9.63: "R"
+            chunk 1 text run 2 at (239.47,80.00) startOffset 1 endOffset 7 width 31.12: "elativ"
+            chunk 1 text run 3 at (270.31,80.00) startOffset 7 endOffset 10 width 14.83: "e t"
+            chunk 1 text run 4 at (284.97,80.00) startOffset 10 endOffset 13 width 14.83: "o f"
+            chunk 1 text run 5 at (299.67,80.00) startOffset 13 endOffset 28 width 85.23: "ont x-height (e"
+            chunk 1 text run 6 at (384.53,80.00) startOffset 28 endOffset 30 width 11.11: "x)"
         RenderSVGContainer {g} at (20,140) size 200x1
           RenderSVGPath {rect} at (20,140) size 200x1 [fill={[type=SOLID] [color=#000000]}] [x=20.00] [y=80.00] [width=200.00] [height=1.00]
-        RenderSVGText {text} at (20,87) size 96x14 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 96x14
-            chunk 1 text run 1 at (20.00,98.00) startOffset 0 endOffset 1 width 7.23: "4"
-            chunk 1 text run 2 at (26.11,98.00) startOffset 1 endOffset 2 width 7.23: "1"
-            chunk 1 text run 3 at (32.35,98.00) startOffset 2 endOffset 4 width 10.84: ".6"
-            chunk 1 text run 4 at (42.79,98.00) startOffset 4 endOffset 15 width 72.63: "7% = 200 px"
-        RenderSVGText {text} at (230,89) size 90x14 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 90x14
-            chunk 1 text run 1 at (230.00,100.00) startOffset 0 endOffset 1 width 8.67: "P"
-            chunk 1 text run 2 at (238.26,100.00) startOffset 1 endOffset 3 width 11.56: "er"
-            chunk 1 text run 3 at (249.73,100.00) startOffset 3 endOffset 7 width 24.57: "cent"
-            chunk 1 text run 4 at (274.29,100.00) startOffset 7 endOffset 14 width 45.51: "age (%)"
+        RenderSVGText {text} at (20,87) size 98x14 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 98x14
+            chunk 1 text run 1 at (20.00,98.00) startOffset 0 endOffset 1 width 7.41: "4"
+            chunk 1 text run 2 at (26.29,98.00) startOffset 1 endOffset 2 width 7.41: "1"
+            chunk 1 text run 3 at (32.72,98.00) startOffset 2 endOffset 4 width 11.12: ".6"
+            chunk 1 text run 4 at (43.44,98.00) startOffset 4 endOffset 15 width 74.49: "7% = 200 px"
+        RenderSVGText {text} at (230,89) size 93x14 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 93x14
+            chunk 1 text run 1 at (230.00,100.00) startOffset 0 endOffset 1 width 8.89: "P"
+            chunk 1 text run 2 at (238.48,100.00) startOffset 1 endOffset 3 width 11.85: "er"
+            chunk 1 text run 3 at (250.25,100.00) startOffset 3 endOffset 7 width 25.20: "cent"
+            chunk 1 text run 4 at (275.44,100.00) startOffset 7 endOffset 14 width 46.68: "age (%)"
         RenderSVGPath {rect} at (20,160) size 201x1 [fill={[type=SOLID] [color=#000000]}] [x=20.00] [y=100.00] [width=200.02] [height=1.00]
-        RenderSVGText {text} at (20,107) size 21x14 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 21x14
-            chunk 1 text run 1 at (20.00,118.00) startOffset 0 endOffset 4 width 20.96: "1 in"
-        RenderSVGText {text} at (230,109) size 61x14 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 61x14
-            chunk 1 text run 1 at (230.00,120.00) startOffset 0 endOffset 3 width 17.34: "Inc"
-            chunk 1 text run 2 at (247.36,120.00) startOffset 3 endOffset 11 width 43.34: "hes (in)"
+        RenderSVGText {text} at (20,107) size 22x14 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 22x14
+            chunk 1 text run 1 at (20.00,118.00) startOffset 0 endOffset 4 width 21.49: "1 in"
+        RenderSVGText {text} at (230,109) size 63x14 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 63x14
+            chunk 1 text run 1 at (230.00,120.00) startOffset 0 endOffset 3 width 17.79: "Inc"
+            chunk 1 text run 2 at (247.80,120.00) startOffset 3 endOffset 11 width 44.45: "hes (in)"
         RenderSVGPath {rect} at (20,180) size 96x1 [fill={[type=SOLID] [color=#000000]}] [x=20.00] [y=120.00] [width=96.00] [height=1.00]
-        RenderSVGText {text} at (20,127) size 83x14 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 83x14
-            chunk 1 text run 1 at (20.00,138.00) startOffset 0 endOffset 3 width 18.07: "2.5"
-            chunk 1 text run 2 at (38.08,138.00) startOffset 3 endOffset 14 width 63.95: "4 cm = 1 in"
-        RenderSVGText {text} at (230,129) size 100x14 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 100x14
-            chunk 1 text run 1 at (230.00,140.00) startOffset 0 endOffset 7 width 48.40: "Centime"
-            chunk 1 text run 2 at (278.27,140.00) startOffset 7 endOffset 8 width 3.61: "t"
-            chunk 1 text run 3 at (281.69,140.00) startOffset 8 endOffset 10 width 11.56: "er"
-            chunk 1 text run 4 at (293.30,140.00) startOffset 10 endOffset 16 width 36.10: "s (cm)"
+        RenderSVGText {text} at (20,127) size 85x14 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 85x14
+            chunk 1 text run 1 at (20.00,138.00) startOffset 0 endOffset 3 width 18.53: "2.5"
+            chunk 1 text run 2 at (38.55,138.00) startOffset 3 endOffset 14 width 65.59: "4 cm = 1 in"
+        RenderSVGText {text} at (230,129) size 102x14 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 102x14
+            chunk 1 text run 1 at (230.00,140.00) startOffset 0 endOffset 7 width 49.64: "Centime"
+            chunk 1 text run 2 at (279.51,140.00) startOffset 7 endOffset 8 width 3.71: "t"
+            chunk 1 text run 3 at (283.03,140.00) startOffset 8 endOffset 10 width 11.85: "er"
+            chunk 1 text run 4 at (294.93,140.00) startOffset 10 endOffset 16 width 37.03: "s (cm)"
         RenderSVGPath {rect} at (20,200) size 96x1 [fill={[type=SOLID] [color=#000000]}] [x=20.00] [y=140.00] [width=96.00] [height=1.00]
-        RenderSVGText {text} at (20,147) size 87x14 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 87x14
-            chunk 1 text run 1 at (20.00,158.00) startOffset 0 endOffset 14 width 86.35: "25.4 mm = 1 in"
-        RenderSVGText {text} at (230,149) size 96x14 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 96x14
-            chunk 1 text run 1 at (230.00,160.00) startOffset 0 endOffset 7 width 40.43: "Millime"
-            chunk 1 text run 2 at (270.30,160.00) startOffset 7 endOffset 8 width 3.61: "t"
-            chunk 1 text run 3 at (273.72,160.00) startOffset 8 endOffset 10 width 11.56: "er"
-            chunk 1 text run 4 at (285.33,160.00) startOffset 10 endOffset 16 width 40.43: "s (mm)"
+        RenderSVGText {text} at (20,147) size 89x14 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 89x14
+            chunk 1 text run 1 at (20.00,158.00) startOffset 0 endOffset 14 width 88.56: "25.4 mm = 1 in"
+        RenderSVGText {text} at (230,149) size 99x14 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 99x14
+            chunk 1 text run 1 at (230.00,160.00) startOffset 0 endOffset 7 width 41.47: "Millime"
+            chunk 1 text run 2 at (271.33,160.00) startOffset 7 endOffset 8 width 3.71: "t"
+            chunk 1 text run 3 at (274.85,160.00) startOffset 8 endOffset 10 width 11.85: "er"
+            chunk 1 text run 4 at (286.76,160.00) startOffset 10 endOffset 16 width 41.47: "s (mm)"
         RenderSVGPath {rect} at (20,220) size 96x1 [fill={[type=SOLID] [color=#000000]}] [x=20.00] [y=160.00] [width=96.00] [height=1.00]
-        RenderSVGText {text} at (20,167) size 61x14 contains 1 chunk(s)
+        RenderSVGText {text} at (20,167) size 63x14 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 63x14
+            chunk 1 text run 1 at (20.00,178.00) startOffset 0 endOffset 1 width 7.41: "7"
+            chunk 1 text run 2 at (27.04,178.00) startOffset 1 endOffset 3 width 14.83: "2p"
+            chunk 1 text run 3 at (41.81,178.00) startOffset 3 endOffset 11 width 40.40: "t = 1 in"
+        RenderSVGText {text} at (230,169) size 61x14 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,0) size 61x14
-            chunk 1 text run 1 at (20.00,178.00) startOffset 0 endOffset 1 width 7.23: "7"
-            chunk 1 text run 2 at (26.85,178.00) startOffset 1 endOffset 3 width 14.46: "2p"
-            chunk 1 text run 3 at (41.26,178.00) startOffset 3 endOffset 11 width 39.39: "t = 1 in"
-        RenderSVGText {text} at (230,169) size 59x14 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 59x14
-            chunk 1 text run 1 at (230.00,180.00) startOffset 0 endOffset 1 width 8.67: "P"
-            chunk 1 text run 2 at (238.31,180.00) startOffset 1 endOffset 9 width 42.63: "oints (p"
-            chunk 1 text run 3 at (280.88,180.00) startOffset 9 endOffset 11 width 7.94: "t)"
+            chunk 1 text run 1 at (230.00,180.00) startOffset 0 endOffset 1 width 8.89: "P"
+            chunk 1 text run 2 at (238.53,180.00) startOffset 1 endOffset 9 width 43.72: "oints (p"
+            chunk 1 text run 3 at (282.20,180.00) startOffset 9 endOffset 11 width 8.15: "t)"
         RenderSVGPath {rect} at (20,240) size 96x1 [fill={[type=SOLID] [color=#000000]}] [x=20.00] [y=180.00] [width=96.00] [height=1.00]
-        RenderSVGText {text} at (20,187) size 57x14 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 57x14
-            chunk 1 text run 1 at (20.00,198.00) startOffset 0 endOffset 10 width 56.73: "6pc = 1 in"
-        RenderSVGText {text} at (230,189) size 58x14 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 58x14
-            chunk 1 text run 1 at (230.00,200.00) startOffset 0 endOffset 10 width 57.78: "Picas (pc)"
+        RenderSVGText {text} at (20,187) size 59x14 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 59x14
+            chunk 1 text run 1 at (20.00,198.00) startOffset 0 endOffset 10 width 58.19: "6pc = 1 in"
+        RenderSVGText {text} at (230,189) size 60x14 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 60x14
+            chunk 1 text run 1 at (230.00,200.00) startOffset 0 endOffset 10 width 59.27: "Picas (pc)"
         RenderSVGPath {rect} at (20,260) size 96x1 [fill={[type=SOLID] [color=#000000]}] [x=20.00] [y=200.00] [width=96.00] [height=1.00]
     RenderSVGContainer {g} at (10,314) size 227x33
       RenderSVGText {text} at (10,314) size 227x33 contains 1 chunk(s)
index 7e90a6e18caaa4a5574851376a3f4da3450636b7..59135ab6b7fd40e8a9626ba8f818155f3fa1e519 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 bd143405ce616ce4819380972ef8a146506e7101..c53b0e6d4431c37dbad348061c97e9dd5b9b13d9 100644 (file)
@@ -2,9 +2,9 @@ layer at (0,0) size 480x360
   RenderView at (0,0) size 480x360
 layer at (0,0) size 480x360
   RenderSVGRoot {svg} at (0,0) size 480x360
-    RenderSVGContainer {g} at (50,10) size 28x260
+    RenderSVGContainer {g} at (50,10) size 25x260
       RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-      RenderSVGContainer {g} at (50,10) size 28x260
+      RenderSVGContainer {g} at (50,10) size 25x260
         RenderSVGText {text} at (50,10) size 25x50 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,0) size 25x50
             chunk 1 text run 1 at (50.00,50.00) startOffset 0 endOffset 1 width 25.00: "a"
@@ -14,9 +14,9 @@ layer at (0,0) size 480x360
         RenderSVGText {text} at (50,150) size 25x50 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,0) size 25x50
             chunk 1 text run 1 at (50.00,190.00) startOffset 0 endOffset 1 width 25.00: "a"
-        RenderSVGText {text} at (50,220) size 28x50 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 28x50
-            chunk 1 text run 1 at (50.00,260.00) startOffset 0 endOffset 1 width 28.00: "a"
+        RenderSVGText {text} at (50,220) size 25x50 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 25x50
+            chunk 1 text run 1 at (50.00,260.00) startOffset 0 endOffset 1 width 25.00: "a"
     RenderSVGText {text} at (10,304) size 284x46 contains 1 chunk(s)
       RenderSVGInlineText {#text} at (0,0) size 284x46
         chunk 1 text run 1 at (10.00,340.00) startOffset 0 endOffset 17 width 284.00: "$Revision: 1.10 $"
index ae23f6b8493db11f7a182537525c2ec60851ed29..f149ef19107e20b80d7835d6eabbaf9f0793e06c 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/W3C-SVG-1.1/fonts-glyph-04-t-expected.png and b/LayoutTests/platform/mac/svg/W3C-SVG-1.1/fonts-glyph-04-t-expected.png differ
index 9f62844159e6ccfd001c0136992736e25ec05dd6..7b6895f10a57272e389b4c472c0aef8a959a5f6a 100644 (file)
@@ -2,11 +2,11 @@ layer at (0,0) size 480x360
   RenderView at (0,0) size 480x360
 layer at (0,0) size 480x360
   RenderSVGRoot {svg} at (0,0) size 480x360
-    RenderSVGContainer {g} at (100,60) size 61x150
+    RenderSVGContainer {g} at (100,60) size 64x150
       RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-      RenderSVGText {text} at (100,60) size 61x50 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,0) size 61x50
-          chunk 1 text run 1 at (100.00,100.00) startOffset 0 endOffset 3 width 61.00: "ffl"
+      RenderSVGText {text} at (100,60) size 64x50 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 64x50
+          chunk 1 text run 1 at (100.00,100.00) startOffset 0 endOffset 3 width 64.00: "ffl"
       RenderSVGText {text} at (100,160) size 25x50 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 25x50
           chunk 1 text run 1 at (100.00,200.00) startOffset 0 endOffset 3 width 25.00: "ffl"
index 79cff5eef8c78c27da2350c155397e414ff820c1..60efc8e71324bd18975abe57313af0a5984d3887 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 8ea07b5eb7678505072d9856e09f5f4dbc63a981..3d5f910f8e2f638341fff4f7245b16d132ff0796 100644 (file)
@@ -3,16 +3,16 @@ layer at (0,0) size 480x360
 layer at (0,0) size 480x360
   RenderSVGRoot {svg} at (0,0) size 480x360
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-    RenderSVGContainer {g} at (17,33) size 451x222 [transform={m=((1.00,0.00)(0.00,1.50)) t=(0.00,0.00)}]
+    RenderSVGContainer {g} at (17,33) size 450x222 [transform={m=((1.00,0.00)(0.00,1.50)) t=(0.00,0.00)}]
       RenderSVGResourceLinearGradient {linearGradient} [id="Gradient"] [gradientUnits=userSpaceOnUse] [start=(10,10)] [end=(440,10)]
         RenderSVGGradientStop {stop} [offset=0.00] [color=#0000FF]
         RenderSVGGradientStop {stop} [offset=1.00] [color=#FF0000]
-      RenderSVGText {text} at (20,22) size 448x57 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,0) size 448x57
-          chunk 1 text run 1 at (20.00,70.00) startOffset 0 endOffset 16 width 447.91: "Gradient on fill"
+      RenderSVGText {text} at (20,22) size 447x57 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 447x57
+          chunk 1 text run 1 at (20.00,70.00) startOffset 0 endOffset 16 width 446.28: "Gradient on fill"
       RenderSVGText {text} at (20,121) size 430x46 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 430x46
-          chunk 1 text run 1 at (20.00,160.00) startOffset 0 endOffset 18 width 429.20: "Gradient on stroke"
+          chunk 1 text run 1 at (20.00,160.00) startOffset 0 endOffset 18 width 429.88: "Gradient on stroke"
     RenderSVGText {text} at (40,117) size 342x36 contains 1 chunk(s)
       RenderSVGInlineText {#text} at (0,0) size 342x36
         chunk 1 text run 1 at (40.00,145.00) startOffset 0 endOffset 30 width 342.00: "Linear gradient on filled text"
index e4dcf3086b12c1474001571adf31a92cc75b30a9..92379afdba697346ab9db555cc889f69e18bfd8c 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/W3C-SVG-1.1/text-altglyph-01-b-expected.png and b/LayoutTests/platform/mac/svg/W3C-SVG-1.1/text-altglyph-01-b-expected.png differ
index ce5951ffd362c568c805b7d59dc19a42c98568da..f685bbc2ce1cd23e5288188b683ccd6e49b29332 100644 (file)
@@ -11,26 +11,26 @@ layer at (0,0) size 480x360
           chunk 1 text run 1 at (5.00,90.00) startOffset 0 endOffset 32 width 463.00: "and many-to-many chars to glyphs"
       RenderSVGHiddenContainer {defs} at (0,0) size 0x0
       RenderSVGContainer {g} at (45,125) size 398x165
-        RenderSVGText {text} at (140,130) size 198x75 contains 1 chunk(s)
-          RenderSVGTSpan {altGlyph} at (0,0) size 43x75
-            RenderSVGInlineText {#text} at (0,0) size 43x75
-              chunk 1 text run 1 at (140.00,190.00) startOffset 0 endOffset 1 width 43.00: "H"
+        RenderSVGText {text} at (140,130) size 188x75 contains 1 chunk(s)
+          RenderSVGTSpan {altGlyph} at (0,0) size 38x75
+            RenderSVGInlineText {#text} at (0,0) size 38x75
+              chunk 1 text run 1 at (140.00,190.00) startOffset 0 endOffset 1 width 37.50: "H"
           RenderSVGInlineText {#text} at (0,0) size 0x0
           RenderSVGTSpan {altGlyph} at (0,0) size 38x75
-            RenderSVGInlineText {#text} at (43,0) size 38x75
-              chunk 1 text run 1 at (183.00,190.00) startOffset 0 endOffset 1 width 37.50: "A"
+            RenderSVGInlineText {#text} at (37,0) size 38x75
+              chunk 1 text run 1 at (177.50,190.00) startOffset 0 endOffset 1 width 37.50: "A"
           RenderSVGInlineText {#text} at (0,0) size 0x0
-          RenderSVGTSpan {altGlyph} at (0,0) size 41x75
-            RenderSVGInlineText {#text} at (80,0) size 41x75
-              chunk 1 text run 1 at (220.50,190.00) startOffset 0 endOffset 1 width 40.00: "P"
+          RenderSVGTSpan {altGlyph} at (0,0) size 38x75
+            RenderSVGInlineText {#text} at (75,0) size 38x75
+              chunk 1 text run 1 at (215.00,190.00) startOffset 0 endOffset 1 width 37.50: "P"
           RenderSVGInlineText {#text} at (0,0) size 0x0
-          RenderSVGTSpan {altGlyph} at (0,0) size 41x75
-            RenderSVGInlineText {#text} at (120,0) size 41x75
-              chunk 1 text run 1 at (260.50,190.00) startOffset 0 endOffset 1 width 40.00: "P"
+          RenderSVGTSpan {altGlyph} at (0,0) size 38x75
+            RenderSVGInlineText {#text} at (112,0) size 38x75
+              chunk 1 text run 1 at (252.50,190.00) startOffset 0 endOffset 1 width 37.50: "P"
           RenderSVGInlineText {#text} at (0,0) size 0x0
           RenderSVGTSpan {altGlyph} at (0,0) size 38x75
-            RenderSVGInlineText {#text} at (160,0) size 38x75
-              chunk 1 text run 1 at (300.50,190.00) startOffset 0 endOffset 1 width 37.50: "Y"
+            RenderSVGInlineText {#text} at (150,0) size 38x75
+              chunk 1 text run 1 at (290.00,190.00) startOffset 0 endOffset 1 width 37.50: "Y"
           RenderSVGInlineText {#text} at (0,0) size 0x0
         RenderSVGText {text} at (50,210) size 113x75 contains 1 chunk(s)
           RenderSVGTSpan {altGlyph} at (0,0) size 38x75
index 2eafefad3f6aab87e3ca1f0bfd71db9dca710acc..ec0851a05c6bad8bdaeec8eae9859c68ad40b11e 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 7ab4a525d4679ec5fb5e76e005bc520a9d294f70..1a3a088295647b16bef3460c8e4629d6da25b113 100644 (file)
@@ -1,8 +1,8 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
 layer at (0,0) size 450x500
-  RenderSVGRoot {svg} at (28,15) size 395x388
-    RenderSVGContainer {g} at (28,15) size 395x388
+  RenderSVGRoot {svg} at (28,15) size 396x388
+    RenderSVGContainer {g} at (28,15) size 396x388
       RenderSVGText {text} at (136,15) size 178x19 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 178x19
           chunk 1 (middle anchor) text run 1 at (136.50,30.00) startOffset 0 endOffset 27 width 177.00: "Gradient and filter on text"
@@ -24,25 +24,25 @@ layer at (0,0) size 450x500
       RenderSVGText {text} at (44,112) size 152x60 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 152x60
           chunk 1 (middle anchor) text run 1 at (44.00,160.00) startOffset 0 endOffset 5 width 152.00: "BATIK"
-      RenderSVGText {text} at (253,112) size 154x60 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,0) size 154x60
-          chunk 1 (middle anchor) text run 1 at (253.42,160.00) startOffset 0 endOffset 5 width 153.15: "BATIK"
+      RenderSVGText {text} at (252,112) size 156x60 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 156x60
+          chunk 1 (middle anchor) text run 1 at (252.94,160.00) startOffset 0 endOffset 5 width 154.11: "BATIK"
       RenderSVGText {text} at (44,212) size 152x60 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 152x60
           chunk 1 (middle anchor) text run 1 at (44.00,260.00) startOffset 0 endOffset 5 width 152.00: "BATIK"
-      RenderSVGText {text} at (253,212) size 154x60 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,0) size 154x60
-          chunk 1 (middle anchor) text run 1 at (253.42,260.00) startOffset 0 endOffset 5 width 153.15: "BATIK"
+      RenderSVGText {text} at (252,212) size 156x60 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 156x60
+          chunk 1 (middle anchor) text run 1 at (252.94,260.00) startOffset 0 endOffset 5 width 154.11: "BATIK"
       RenderSVGText {text} at (44,312) size 152x60 contains 1 chunk(s)
         [filter="dropShadow"] RenderSVGResourceFilter {filter} at (28.80,306) size 182.40x72
         RenderSVGInlineText {#text} at (0,0) size 152x60
           [filter="dropShadow"] RenderSVGResourceFilter {filter} at (0,0) size 0x0
           chunk 1 (middle anchor) text run 1 at (44.00,360.00) startOffset 0 endOffset 5 width 152.00: "BATIK"
-      RenderSVGText {text} at (253,312) size 154x60 contains 1 chunk(s)
-        [filter="dropShadow"] RenderSVGResourceFilter {filter} at (237.60,306) size 184.80x72
-        RenderSVGInlineText {#text} at (0,0) size 154x60
+      RenderSVGText {text} at (252,312) size 156x60 contains 1 chunk(s)
+        [filter="dropShadow"] RenderSVGResourceFilter {filter} at (236.40,306) size 187.20x72
+        RenderSVGInlineText {#text} at (0,0) size 156x60
           [filter="dropShadow"] RenderSVGResourceFilter {filter} at (0,0) size 0x0
-          chunk 1 (middle anchor) text run 1 at (253.42,360.00) startOffset 0 endOffset 5 width 153.15: "BATIK"
+          chunk 1 (middle anchor) text run 1 at (252.94,360.00) startOffset 0 endOffset 5 width 154.11: "BATIK"
       RenderSVGText {text} at (87,389) size 66x14 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 66x14
           chunk 1 (middle anchor) text run 1 at (87.50,400.00) startOffset 0 endOffset 13 width 65.00: "(System font)"
index 6571eb4a30cc8046d3b67850402c7b842907a237..8ca64f21c85c156b513d1d355af761a7ee943fcb 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 83af6cb2734fd4b90f5df9d7149e273a15b39bae..42b1a553c0af2480a74697e6cafbd355d823b8b6 100644 (file)
@@ -38,18 +38,18 @@ layer at (0,0) size 450x500
         RenderSVGInlineText {#text} at (0,0) size 0x0
       RenderSVGText {text} at (263,92) size 148x80 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,20) size 37x60
-          chunk 1 (middle anchor) text run 1 at (263.90,160.00) startOffset 0 endOffset 1 width 35.35: "B"
+          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 19x31
           RenderSVGInlineText {#text} at (36,23) size 19x31
-            chunk 1 (middle anchor) text run 1 at (299.25,140.00) startOffset 0 endOffset 1 width 18.01: "A"
+            chunk 1 (middle anchor) text run 1 at (299.26,140.00) startOffset 0 endOffset 1 width 17.79: "A"
         RenderSVGInlineText {#text} at (54,0) size 33x60
-          chunk 1 (middle anchor) text run 1 at (317.26,140.00) startOffset 0 endOffset 1 width 32.37: "T"
+          chunk 1 (middle anchor) text run 1 at (317.05,140.00) startOffset 0 endOffset 1 width 32.58: "T"
         RenderSVGTSpan {tspan} at (0,0) size 12x46
           RenderSVGInlineText {#text} at (86,11) size 12x46
-            chunk 1 (middle anchor) text run 1 at (349.64,140.00) startOffset 0 endOffset 1 width 11.11: "I"
+            chunk 1 (middle anchor) text run 1 at (349.63,140.00) startOffset 0 endOffset 1 width 11.11: "I"
         RenderSVGTSpan {tspan} at (0,0) size 55x69
           RenderSVGInlineText {#text} at (93,2) size 55x69
-            chunk 1 (middle anchor) text run 1 at (360.75,140.00) startOffset 0 endOffset 1 width 35.35: "K"
+            chunk 1 (middle anchor) text run 1 at (360.74,140.00) startOffset 0 endOffset 1 width 35.57: "K"
         RenderSVGInlineText {#text} at (0,0) size 0x0
       RenderSVGText {text} at (54,192) size 146x80 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,20) size 36x60
@@ -68,18 +68,18 @@ layer at (0,0) size 450x500
         RenderSVGInlineText {#text} at (0,0) size 0x0
       RenderSVGText {text} at (263,192) size 148x80 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,20) size 37x60
-          chunk 1 (middle anchor) text run 1 at (263.90,260.00) startOffset 0 endOffset 1 width 35.35: "B"
+          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 19x31
           RenderSVGInlineText {#text} at (36,23) size 19x31
-            chunk 1 (middle anchor) text run 1 at (299.25,240.00) startOffset 0 endOffset 1 width 18.01: "A"
+            chunk 1 (middle anchor) text run 1 at (299.26,240.00) startOffset 0 endOffset 1 width 17.79: "A"
         RenderSVGInlineText {#text} at (54,0) size 33x60
-          chunk 1 (middle anchor) text run 1 at (317.26,240.00) startOffset 0 endOffset 1 width 32.37: "T"
+          chunk 1 (middle anchor) text run 1 at (317.05,240.00) startOffset 0 endOffset 1 width 32.58: "T"
         RenderSVGTSpan {tspan} at (0,0) size 12x46
           RenderSVGInlineText {#text} at (86,11) size 12x46
-            chunk 1 (middle anchor) text run 1 at (349.64,240.00) startOffset 0 endOffset 1 width 11.11: "I"
+            chunk 1 (middle anchor) text run 1 at (349.63,240.00) startOffset 0 endOffset 1 width 11.11: "I"
         RenderSVGTSpan {tspan} at (0,0) size 55x69
           RenderSVGInlineText {#text} at (93,2) size 55x69
-            chunk 1 (middle anchor) text run 1 at (360.75,240.00) startOffset 0 endOffset 1 width 35.35: "K"
+            chunk 1 (middle anchor) text run 1 at (360.74,240.00) startOffset 0 endOffset 1 width 35.57: "K"
         RenderSVGInlineText {#text} at (0,0) size 0x0
       RenderSVGText {text} at (54,292) size 146x80 contains 1 chunk(s)
         [filter="dropShadow"] RenderSVGResourceFilter {filter} at (39.40,284) size 175.20x96
@@ -104,19 +104,19 @@ layer at (0,0) size 450x500
         [filter="dropShadow"] RenderSVGResourceFilter {filter} at (248.20,284) size 177.60x96
         RenderSVGInlineText {#text} at (0,20) size 37x60
           [filter="dropShadow"] RenderSVGResourceFilter {filter} at (0,0) size 0x0
-          chunk 1 (middle anchor) text run 1 at (263.90,360.00) startOffset 0 endOffset 1 width 35.35: "B"
+          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 19x31
           RenderSVGInlineText {#text} at (36,23) size 19x31
-            chunk 1 (middle anchor) text run 1 at (299.25,340.00) startOffset 0 endOffset 1 width 18.01: "A"
+            chunk 1 (middle anchor) text run 1 at (299.26,340.00) startOffset 0 endOffset 1 width 17.79: "A"
         RenderSVGInlineText {#text} at (54,0) size 33x60
           [filter="dropShadow"] RenderSVGResourceFilter {filter} at (0,0) size 0x0
-          chunk 1 (middle anchor) text run 1 at (317.26,340.00) startOffset 0 endOffset 1 width 32.37: "T"
+          chunk 1 (middle anchor) text run 1 at (317.05,340.00) startOffset 0 endOffset 1 width 32.58: "T"
         RenderSVGTSpan {tspan} at (0,0) size 12x46
           RenderSVGInlineText {#text} at (86,11) size 12x46
-            chunk 1 (middle anchor) text run 1 at (349.64,340.00) startOffset 0 endOffset 1 width 11.11: "I"
+            chunk 1 (middle anchor) text run 1 at (349.63,340.00) startOffset 0 endOffset 1 width 11.11: "I"
         RenderSVGTSpan {tspan} at (0,0) size 55x69
           RenderSVGInlineText {#text} at (93,2) size 55x69
-            chunk 1 (middle anchor) text run 1 at (360.75,340.00) startOffset 0 endOffset 1 width 35.35: "K"
+            chunk 1 (middle anchor) text run 1 at (360.74,340.00) startOffset 0 endOffset 1 width 35.57: "K"
         RenderSVGInlineText {#text} at (0,0) size 0x0
           [filter="dropShadow"] RenderSVGResourceFilter {filter} at (0,0) size 0x0
       RenderSVGText {text} at (87,389) size 66x14 contains 1 chunk(s)
index 7af0bd44f26fc19ff8e5735983394e8af46393ab..25864b1f62a46ca8e0b2a8347c1f94ca184efd20 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/batik/text/xmlSpace-expected.png and b/LayoutTests/platform/mac/svg/batik/text/xmlSpace-expected.png differ
index c710c358f6f9a54b9c36a01eb46ceec7cd8eba37..3fa10c954419984d397c1da808223e1b4f6504f9 100644 (file)
@@ -6,23 +6,23 @@ layer at (0,0) size 450x500
       RenderSVGInlineText {#text} at (0,0) size 190x19
         chunk 1 (middle anchor) text run 1 at (130.00,40.00) startOffset 0 endOffset 26 width 190.00: "Test of xml:space handling"
     RenderSVGContainer {g} at (10,55) size 435x325
-      RenderSVGText {text} at (10,55) size 38x25 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,0) size 38x25
-          chunk 1 text run 1 at (10.00,75.00) startOffset 0 endOffset 2 width 25.00: "X "
-          chunk 1 text run 1 at (35.00,75.00) startOffset 0 endOffset 1 width 13.00: "X"
+      RenderSVGText {text} at (10,55) size 36x25 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 36x25
+          chunk 1 text run 1 at (10.00,75.00) startOffset 0 endOffset 2 width 24.00: "X "
+          chunk 1 text run 1 at (34.00,75.00) startOffset 0 endOffset 1 width 12.00: "X"
       RenderSVGText {text} at (120,67) size 85x10 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 85x10
           chunk 1 text run 1 at (120.00,75.00) startOffset 0 endOffset 17 width 85.00: "no xml:space attr"
-      RenderSVGText {text} at (10,80) size 38x25 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,0) size 38x25
-          chunk 1 text run 1 at (10.00,100.00) startOffset 0 endOffset 2 width 25.00: "X "
-          chunk 1 text run 1 at (35.00,100.00) startOffset 0 endOffset 1 width 13.00: "X"
+      RenderSVGText {text} at (10,80) size 36x25 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 36x25
+          chunk 1 text run 1 at (10.00,100.00) startOffset 0 endOffset 2 width 24.00: "X "
+          chunk 1 text run 1 at (34.00,100.00) startOffset 0 endOffset 1 width 12.00: "X"
       RenderSVGText {text} at (120,92) size 95x10 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 95x10
           chunk 1 text run 1 at (120.00,100.00) startOffset 0 endOffset 19 width 95.00: "xml:space=\"default\""
-      RenderSVGText {text} at (10,130) size 98x25 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,0) size 98x25
-          chunk 1 text run 1 at (10.00,150.00) startOffset 0 endOffset 8 width 98.00: "  X  X  "
+      RenderSVGText {text} at (10,130) size 96x25 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 96x25
+          chunk 1 text run 1 at (10.00,150.00) startOffset 0 endOffset 8 width 96.00: "  X  X  "
         RenderSVGTSpan {tspan} at (0,0) size 0x0
       RenderSVGText {text} at (120,132) size 95x20 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 95x10
@@ -30,9 +30,9 @@ layer at (0,0) size 450x500
         RenderSVGTSpan {tspan} at (0,0) size 95x10
           RenderSVGInlineText {#text} at (0,10) size 95x10
             chunk 1 text run 1 at (120.00,149.60) startOffset 0 endOffset 19 width 95.00: "xml:space=\"default\""
-      RenderSVGText {text} at (10,155) size 74x25 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,0) size 74x25
-          chunk 1 text run 1 at (10.00,175.00) startOffset 0 endOffset 6 width 74.00: "  X  X"
+      RenderSVGText {text} at (10,155) size 72x25 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 72x25
+          chunk 1 text run 1 at (10.00,175.00) startOffset 0 endOffset 6 width 72.00: "  X  X"
         RenderSVGTSpan {tspan} at (0,0) size 0x0
           RenderSVGInlineText {#text} at (0,0) size 0x0
       RenderSVGText {text} at (120,157) size 95x20 contains 1 chunk(s)
@@ -41,9 +41,9 @@ layer at (0,0) size 450x500
         RenderSVGTSpan {tspan} at (0,0) size 95x10
           RenderSVGInlineText {#text} at (0,10) size 95x10
             chunk 1 text run 1 at (120.00,174.60) startOffset 0 endOffset 19 width 95.00: "xml:space=\"default\""
-      RenderSVGText {text} at (10,180) size 86x25 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,0) size 86x25
-          chunk 1 text run 1 at (10.00,200.00) startOffset 0 endOffset 7 width 86.00: "  X  X "
+      RenderSVGText {text} at (10,180) size 84x25 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 84x25
+          chunk 1 text run 1 at (10.00,200.00) startOffset 0 endOffset 7 width 84.00: "  X  X "
         RenderSVGTSpan {tspan} at (0,0) size 0x0
           RenderSVGInlineText {#text} at (-10,-180) size 0x0
       RenderSVGText {text} at (120,182) size 95x20 contains 1 chunk(s)
@@ -52,100 +52,100 @@ layer at (0,0) size 450x500
         RenderSVGTSpan {tspan} at (0,0) size 95x10
           RenderSVGInlineText {#text} at (0,10) size 95x10
             chunk 1 text run 1 at (120.00,199.60) startOffset 0 endOffset 19 width 95.00: "xml:space=\"default\""
-      RenderSVGText {text} at (10,205) size 86x25 contains 1 chunk(s)
+      RenderSVGText {text} at (10,205) size 84x25 contains 1 chunk(s)
         RenderSVGTSpan {tspan} at (0,0) size 0x0
           RenderSVGInlineText {#text} at (0,0) size 0x0
-        RenderSVGInlineText {#text} at (0,0) size 86x25
-          chunk 1 text run 1 at (10.00,225.00) startOffset 0 endOffset 7 width 86.00: " X  X  "
+        RenderSVGInlineText {#text} at (0,0) size 84x25
+          chunk 1 text run 1 at (10.00,225.00) startOffset 0 endOffset 7 width 84.00: " X  X  "
       RenderSVGText {text} at (120,207) size 95x20 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 60x10
           chunk 1 text run 1 at (120.00,215.00) startOffset 0 endOffset 12 width 60.00: "tspan start "
         RenderSVGTSpan {tspan} at (0,0) size 95x10
           RenderSVGInlineText {#text} at (0,10) size 95x10
             chunk 1 text run 1 at (120.00,224.60) startOffset 0 endOffset 19 width 95.00: "xml:space=\"default\""
-      RenderSVGText {text} at (10,230) size 86x25 contains 1 chunk(s)
+      RenderSVGText {text} at (10,230) size 84x25 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 12x25
           chunk 1 text run 1 at (10.00,250.00) startOffset 0 endOffset 1 width 12.00: " "
         RenderSVGTSpan {tspan} at (0,0) size 0x0
           RenderSVGInlineText {#text} at (-10,-230) size 0x0
-        RenderSVGInlineText {#text} at (12,0) size 74x25
-          chunk 1 text run 1 at (22.00,250.00) startOffset 0 endOffset 6 width 74.00: "X  X  "
+        RenderSVGInlineText {#text} at (12,0) size 72x25
+          chunk 1 text run 1 at (22.00,250.00) startOffset 0 endOffset 6 width 72.00: "X  X  "
       RenderSVGText {text} at (120,232) size 95x20 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 85x10
           chunk 1 text run 1 at (120.00,240.00) startOffset 0 endOffset 17 width 85.00: "tspan near start "
         RenderSVGTSpan {tspan} at (0,0) size 95x10
           RenderSVGInlineText {#text} at (0,10) size 95x10
             chunk 1 text run 1 at (120.00,249.60) startOffset 0 endOffset 19 width 95.00: "xml:space=\"default\""
-      RenderSVGText {text} at (10,255) size 98x25 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,0) size 37x25
-          chunk 1 text run 1 at (10.00,275.00) startOffset 0 endOffset 3 width 37.00: "  X"
+      RenderSVGText {text} at (10,255) size 96x25 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 36x25
+          chunk 1 text run 1 at (10.00,275.00) startOffset 0 endOffset 3 width 36.00: "  X"
         RenderSVGTSpan {tspan} at (0,0) size 12x25
-          RenderSVGInlineText {#text} at (37,0) size 12x25
-            chunk 1 text run 1 at (47.00,275.00) startOffset 0 endOffset 1 width 12.00: " "
-        RenderSVGInlineText {#text} at (49,0) size 49x25
-          chunk 1 text run 1 at (59.00,275.00) startOffset 0 endOffset 4 width 49.00: " X  "
+          RenderSVGInlineText {#text} at (36,0) size 12x25
+            chunk 1 text run 1 at (46.00,275.00) startOffset 0 endOffset 1 width 12.00: " "
+        RenderSVGInlineText {#text} at (48,0) size 48x25
+          chunk 1 text run 1 at (58.00,275.00) startOffset 0 endOffset 4 width 48.00: " X  "
       RenderSVGText {text} at (120,257) size 95x20 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 95x10
           chunk 1 text run 1 at (120.00,265.00) startOffset 0 endOffset 19 width 95.00: "tspan middle front "
         RenderSVGTSpan {tspan} at (0,0) size 95x10
           RenderSVGInlineText {#text} at (0,10) size 95x10
             chunk 1 text run 1 at (120.00,274.60) startOffset 0 endOffset 19 width 95.00: "xml:space=\"default\""
-      RenderSVGText {text} at (10,280) size 86x25 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,0) size 49x25
-          chunk 1 text run 1 at (10.00,300.00) startOffset 0 endOffset 4 width 49.00: "  X "
+      RenderSVGText {text} at (10,280) size 84x25 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 48x25
+          chunk 1 text run 1 at (10.00,300.00) startOffset 0 endOffset 4 width 48.00: "  X "
         RenderSVGTSpan {tspan} at (0,0) size 0x0
           RenderSVGInlineText {#text} at (-10,-280) size 0x0
-        RenderSVGInlineText {#text} at (49,0) size 37x25
-          chunk 1 text run 1 at (59.00,300.00) startOffset 0 endOffset 3 width 37.00: "X  "
+        RenderSVGInlineText {#text} at (48,0) size 36x25
+          chunk 1 text run 1 at (58.00,300.00) startOffset 0 endOffset 3 width 36.00: "X  "
       RenderSVGText {text} at (120,282) size 95x20 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 85x10
           chunk 1 text run 1 at (120.00,290.00) startOffset 0 endOffset 17 width 85.00: "tspan middle end "
         RenderSVGTSpan {tspan} at (0,0) size 95x10
           RenderSVGInlineText {#text} at (0,10) size 95x10
             chunk 1 text run 1 at (120.00,299.60) startOffset 0 endOffset 19 width 95.00: "xml:space=\"default\""
-      RenderSVGText {text} at (10,305) size 98x25 contains 1 chunk(s)
+      RenderSVGText {text} at (10,305) size 96x25 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 12x25
           chunk 1 text run 1 at (10.00,325.00) startOffset 0 endOffset 1 width 12.00: " "
-        RenderSVGInlineText {#text} at (12,0) size 86x25
-          chunk 1 text run 1 at (22.00,325.00) startOffset 0 endOffset 7 width 86.00: " X  X  "
+        RenderSVGInlineText {#text} at (12,0) size 84x25
+          chunk 1 text run 1 at (22.00,325.00) startOffset 0 endOffset 7 width 84.00: " X  X  "
       RenderSVGText {text} at (120,307) size 80x20 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 80x10
           chunk 1 text run 1 at (120.00,315.00) startOffset 0 endOffset 16 width 80.00: "unknown element "
         RenderSVGTSpan {tspan} at (0,0) size 25x10
           RenderSVGInlineText {#text} at (0,10) size 25x10
             chunk 1 text run 1 at (120.00,324.60) startOffset 0 endOffset 5 width 25.00: "start"
-      RenderSVGText {text} at (10,330) size 98x25 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,0) size 49x25
-          chunk 1 text run 1 at (10.00,350.00) startOffset 0 endOffset 4 width 49.00: "  X "
-        RenderSVGInlineText {#text} at (49,0) size 49x25
-          chunk 1 text run 1 at (59.00,350.00) startOffset 0 endOffset 4 width 49.00: " X  "
+      RenderSVGText {text} at (10,330) size 96x25 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 48x25
+          chunk 1 text run 1 at (10.00,350.00) startOffset 0 endOffset 4 width 48.00: "  X "
+        RenderSVGInlineText {#text} at (48,0) size 48x25
+          chunk 1 text run 1 at (58.00,350.00) startOffset 0 endOffset 4 width 48.00: " X  "
       RenderSVGText {text} at (120,332) size 80x20 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 80x10
           chunk 1 text run 1 at (120.00,340.00) startOffset 0 endOffset 16 width 80.00: "unknown element "
         RenderSVGTSpan {tspan} at (0,0) size 30x10
           RenderSVGInlineText {#text} at (0,10) size 30x10
             chunk 1 text run 1 at (120.00,349.60) startOffset 0 endOffset 6 width 30.00: "middle"
-      RenderSVGText {text} at (10,355) size 98x25 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,0) size 86x25
-          chunk 1 text run 1 at (10.00,375.00) startOffset 0 endOffset 7 width 86.00: "  X  X "
-        RenderSVGInlineText {#text} at (86,0) size 12x25
-          chunk 1 text run 1 at (96.00,375.00) startOffset 0 endOffset 1 width 12.00: " "
+      RenderSVGText {text} at (10,355) size 96x25 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 84x25
+          chunk 1 text run 1 at (10.00,375.00) startOffset 0 endOffset 7 width 84.00: "  X  X "
+        RenderSVGInlineText {#text} at (84,0) size 12x25
+          chunk 1 text run 1 at (94.00,375.00) startOffset 0 endOffset 1 width 12.00: " "
       RenderSVGText {text} at (120,357) size 80x20 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 80x10
           chunk 1 text run 1 at (120.00,365.00) startOffset 0 endOffset 16 width 80.00: "unknown element "
         RenderSVGTSpan {tspan} at (0,0) size 15x10
           RenderSVGInlineText {#text} at (0,10) size 15x10
             chunk 1 text run 1 at (120.00,374.60) startOffset 0 endOffset 3 width 15.00: "end"
-      RenderSVGText {text} at (235,80) size 98x25 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,0) size 98x25
-          chunk 1 text run 1 at (235.00,100.00) startOffset 0 endOffset 8 width 98.00: "  X  X  "
+      RenderSVGText {text} at (235,80) size 96x25 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 96x25
+          chunk 1 text run 1 at (235.00,100.00) startOffset 0 endOffset 8 width 96.00: "  X  X  "
       RenderSVGText {text} at (345,92) size 100x10 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 100x10
           chunk 1 text run 1 at (345.00,100.00) startOffset 0 endOffset 20 width 100.00: "xml:space=\"preserve\""
-      RenderSVGText {text} at (235,130) size 38x25 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,0) size 38x25
-          chunk 1 text run 1 at (235.00,150.00) startOffset 0 endOffset 2 width 25.00: "X "
-          chunk 1 text run 1 at (260.00,150.00) startOffset 0 endOffset 1 width 13.00: "X"
+      RenderSVGText {text} at (235,130) size 36x25 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 36x25
+          chunk 1 text run 1 at (235.00,150.00) startOffset 0 endOffset 2 width 24.00: "X "
+          chunk 1 text run 1 at (259.00,150.00) startOffset 0 endOffset 1 width 12.00: "X"
         RenderSVGTSpan {tspan} at (0,0) size 0x0
       RenderSVGText {text} at (345,132) size 100x20 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 95x10
@@ -153,111 +153,111 @@ layer at (0,0) size 450x500
         RenderSVGTSpan {tspan} at (0,0) size 100x10
           RenderSVGInlineText {#text} at (0,10) size 100x10
             chunk 1 text run 1 at (345.00,149.60) startOffset 0 endOffset 20 width 100.00: "xml:space=\"preserve\""
-      RenderSVGText {text} at (235,155) size 62x25 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,0) size 38x25
-          chunk 1 text run 1 at (235.00,175.00) startOffset 0 endOffset 2 width 25.00: "X "
-          chunk 1 text run 1 at (260.00,175.00) startOffset 0 endOffset 1 width 13.00: "X"
+      RenderSVGText {text} at (235,155) size 60x25 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 36x25
+          chunk 1 text run 1 at (235.00,175.00) startOffset 0 endOffset 2 width 24.00: "X "
+          chunk 1 text run 1 at (259.00,175.00) startOffset 0 endOffset 1 width 12.00: "X"
         RenderSVGTSpan {tspan} at (0,0) size 24x25
-          RenderSVGInlineText {#text} at (38,0) size 24x25
-            chunk 1 text run 1 at (273.00,175.00) startOffset 0 endOffset 2 width 24.00: "  "
+          RenderSVGInlineText {#text} at (36,0) size 24x25
+            chunk 1 text run 1 at (271.00,175.00) startOffset 0 endOffset 2 width 24.00: "  "
       RenderSVGText {text} at (345,157) size 100x20 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 75x10
           chunk 1 text run 1 at (345.00,165.00) startOffset 0 endOffset 15 width 75.00: "tspan end 2spc "
         RenderSVGTSpan {tspan} at (0,0) size 100x10
           RenderSVGInlineText {#text} at (0,10) size 100x10
             chunk 1 text run 1 at (345.00,174.60) startOffset 0 endOffset 20 width 100.00: "xml:space=\"preserve\""
-      RenderSVGText {text} at (235,180) size 62x25 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,0) size 50x25
-          chunk 1 text run 1 at (235.00,200.00) startOffset 0 endOffset 2 width 25.00: "X "
-          chunk 1 text run 1 at (260.00,200.00) startOffset 0 endOffset 2 width 25.00: "X "
+      RenderSVGText {text} at (235,180) size 60x25 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 48x25
+          chunk 1 text run 1 at (235.00,200.00) startOffset 0 endOffset 2 width 24.00: "X "
+          chunk 1 text run 1 at (259.00,200.00) startOffset 0 endOffset 2 width 24.00: "X "
         RenderSVGTSpan {tspan} at (0,0) size 12x25
-          RenderSVGInlineText {#text} at (50,0) size 12x25
-            chunk 1 text run 1 at (285.00,200.00) startOffset 0 endOffset 1 width 12.00: " "
+          RenderSVGInlineText {#text} at (48,0) size 12x25
+            chunk 1 text run 1 at (283.00,200.00) startOffset 0 endOffset 1 width 12.00: " "
       RenderSVGText {text} at (345,182) size 100x20 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 50x10
           chunk 1 text run 1 at (345.00,190.00) startOffset 0 endOffset 10 width 50.00: "tspan end "
         RenderSVGTSpan {tspan} at (0,0) size 100x10
           RenderSVGInlineText {#text} at (0,10) size 100x10
             chunk 1 text run 1 at (345.00,199.60) startOffset 0 endOffset 20 width 100.00: "xml:space=\"preserve\""
-      RenderSVGText {text} at (235,205) size 50x25 contains 1 chunk(s)
+      RenderSVGText {text} at (235,205) size 48x25 contains 1 chunk(s)
         RenderSVGTSpan {tspan} at (0,0) size 12x25
           RenderSVGInlineText {#text} at (0,0) size 12x25
             chunk 1 text run 1 at (235.00,225.00) startOffset 0 endOffset 1 width 12.00: " "
-        RenderSVGInlineText {#text} at (12,0) size 38x25
-          chunk 1 text run 1 at (247.00,225.00) startOffset 1 endOffset 3 width 25.00: "X "
-          chunk 1 text run 1 at (272.00,225.00) startOffset 0 endOffset 1 width 13.00: "X"
+        RenderSVGInlineText {#text} at (12,0) size 36x25
+          chunk 1 text run 1 at (247.00,225.00) startOffset 1 endOffset 3 width 24.00: "X "
+          chunk 1 text run 1 at (271.00,225.00) startOffset 0 endOffset 1 width 12.00: "X"
       RenderSVGText {text} at (345,207) size 100x20 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 60x10
           chunk 1 text run 1 at (345.00,215.00) startOffset 0 endOffset 12 width 60.00: "tspan start "
         RenderSVGTSpan {tspan} at (0,0) size 100x10
           RenderSVGInlineText {#text} at (0,10) size 100x10
             chunk 1 text run 1 at (345.00,224.60) startOffset 0 endOffset 20 width 100.00: "xml:space=\"preserve\""
-      RenderSVGText {text} at (235,230) size 50x25 contains 1 chunk(s)
+      RenderSVGText {text} at (235,230) size 48x25 contains 1 chunk(s)
         RenderSVGTSpan {tspan} at (0,0) size 12x25
           RenderSVGInlineText {#text} at (0,0) size 12x25
             chunk 1 text run 1 at (235.00,250.00) startOffset 0 endOffset 1 width 12.00: " "
-        RenderSVGInlineText {#text} at (12,0) size 38x25
-          chunk 1 text run 1 at (247.00,250.00) startOffset 0 endOffset 2 width 25.00: "X "
-          chunk 1 text run 1 at (272.00,250.00) startOffset 0 endOffset 1 width 13.00: "X"
+        RenderSVGInlineText {#text} at (12,0) size 36x25
+          chunk 1 text run 1 at (247.00,250.00) startOffset 0 endOffset 2 width 24.00: "X "
+          chunk 1 text run 1 at (271.00,250.00) startOffset 0 endOffset 1 width 12.00: "X"
       RenderSVGText {text} at (345,232) size 100x20 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 85x10
           chunk 1 text run 1 at (345.00,240.00) startOffset 0 endOffset 17 width 85.00: "tspan near start "
         RenderSVGTSpan {tspan} at (0,0) size 100x10
           RenderSVGInlineText {#text} at (0,10) size 100x10
             chunk 1 text run 1 at (345.00,249.60) startOffset 0 endOffset 20 width 100.00: "xml:space=\"preserve\""
-      RenderSVGText {text} at (235,255) size 38x25 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,0) size 13x25
-          chunk 1 text run 1 at (235.00,275.00) startOffset 0 endOffset 1 width 13.00: "X"
+      RenderSVGText {text} at (235,255) size 36x25 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 12x25
+          chunk 1 text run 1 at (235.00,275.00) startOffset 0 endOffset 1 width 12.00: "X"
         RenderSVGTSpan {tspan} at (0,0) size 12x25
-          RenderSVGInlineText {#text} at (13,0) size 12x25
-            chunk 1 text run 1 at (248.00,275.00) startOffset 0 endOffset 1 width 12.00: " "
-        RenderSVGInlineText {#text} at (25,0) size 13x25
-          chunk 1 text run 1 at (260.00,275.00) startOffset 1 endOffset 2 width 13.00: "X"
+          RenderSVGInlineText {#text} at (12,0) size 12x25
+            chunk 1 text run 1 at (247.00,275.00) startOffset 0 endOffset 1 width 12.00: " "
+        RenderSVGInlineText {#text} at (24,0) size 12x25
+          chunk 1 text run 1 at (259.00,275.00) startOffset 1 endOffset 2 width 12.00: "X"
       RenderSVGText {text} at (345,257) size 100x20 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 95x10
           chunk 1 text run 1 at (345.00,265.00) startOffset 0 endOffset 19 width 95.00: "tspan middle front "
         RenderSVGTSpan {tspan} at (0,0) size 100x10
           RenderSVGInlineText {#text} at (0,10) size 100x10
             chunk 1 text run 1 at (345.00,274.60) startOffset 0 endOffset 20 width 100.00: "xml:space=\"preserve\""
-      RenderSVGText {text} at (235,280) size 50x25 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,0) size 25x25
-          chunk 1 text run 1 at (235.00,300.00) startOffset 0 endOffset 2 width 25.00: "X "
+      RenderSVGText {text} at (235,280) size 48x25 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 24x25
+          chunk 1 text run 1 at (235.00,300.00) startOffset 0 endOffset 2 width 24.00: "X "
         RenderSVGTSpan {tspan} at (0,0) size 12x25
-          RenderSVGInlineText {#text} at (25,0) size 12x25
-            chunk 1 text run 1 at (260.00,300.00) startOffset 0 endOffset 1 width 12.00: " "
-        RenderSVGInlineText {#text} at (37,0) size 13x25
-          chunk 1 text run 1 at (272.00,300.00) startOffset 0 endOffset 1 width 13.00: "X"
+          RenderSVGInlineText {#text} at (24,0) size 12x25
+            chunk 1 text run 1 at (259.00,300.00) startOffset 0 endOffset 1 width 12.00: " "
+        RenderSVGInlineText {#text} at (36,0) size 12x25
+          chunk 1 text run 1 at (271.00,300.00) startOffset 0 endOffset 1 width 12.00: "X"
       RenderSVGText {text} at (345,282) size 100x20 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 85x10
           chunk 1 text run 1 at (345.00,290.00) startOffset 0 endOffset 17 width 85.00: "tspan middle end "
         RenderSVGTSpan {tspan} at (0,0) size 100x10
           RenderSVGInlineText {#text} at (0,10) size 100x10
             chunk 1 text run 1 at (345.00,299.60) startOffset 0 endOffset 20 width 100.00: "xml:space=\"preserve\""
-      RenderSVGText {text} at (235,305) size 38x25 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,0) size 38x25
-          chunk 1 text run 1 at (235.00,325.00) startOffset 0 endOffset 2 width 25.00: "X "
-          chunk 1 text run 1 at (260.00,325.00) startOffset 0 endOffset 1 width 13.00: "X"
+      RenderSVGText {text} at (235,305) size 36x25 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 36x25
+          chunk 1 text run 1 at (235.00,325.00) startOffset 0 endOffset 2 width 24.00: "X "
+          chunk 1 text run 1 at (259.00,325.00) startOffset 0 endOffset 1 width 12.00: "X"
       RenderSVGText {text} at (345,307) size 80x20 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 80x10
           chunk 1 text run 1 at (345.00,315.00) startOffset 0 endOffset 16 width 80.00: "unknown element "
         RenderSVGTSpan {tspan} at (0,0) size 25x10
           RenderSVGInlineText {#text} at (0,10) size 25x10
             chunk 1 text run 1 at (345.00,324.60) startOffset 0 endOffset 5 width 25.00: "start"
-      RenderSVGText {text} at (235,330) size 38x25 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,0) size 25x25
-          chunk 1 text run 1 at (235.00,350.00) startOffset 0 endOffset 2 width 25.00: "X "
-        RenderSVGInlineText {#text} at (25,0) size 13x25
-          chunk 1 text run 1 at (260.00,350.00) startOffset 0 endOffset 1 width 13.00: "X"
+      RenderSVGText {text} at (235,330) size 36x25 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 24x25
+          chunk 1 text run 1 at (235.00,350.00) startOffset 0 endOffset 2 width 24.00: "X "
+        RenderSVGInlineText {#text} at (24,0) size 12x25
+          chunk 1 text run 1 at (259.00,350.00) startOffset 0 endOffset 1 width 12.00: "X"
       RenderSVGText {text} at (345,332) size 80x20 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 80x10
           chunk 1 text run 1 at (345.00,340.00) startOffset 0 endOffset 16 width 80.00: "unknown element "
         RenderSVGTSpan {tspan} at (0,0) size 30x10
           RenderSVGInlineText {#text} at (0,10) size 30x10
             chunk 1 text run 1 at (345.00,349.60) startOffset 0 endOffset 6 width 30.00: "middle"
-      RenderSVGText {text} at (236,355) size 38x25 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,0) size 38x25
-          chunk 1 text run 1 at (236.00,375.00) startOffset 0 endOffset 2 width 25.00: "X "
-          chunk 1 text run 1 at (261.00,375.00) startOffset 0 endOffset 1 width 13.00: "X"
+      RenderSVGText {text} at (236,355) size 36x25 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 36x25
+          chunk 1 text run 1 at (236.00,375.00) startOffset 0 endOffset 2 width 24.00: "X "
+          chunk 1 text run 1 at (260.00,375.00) startOffset 0 endOffset 1 width 12.00: "X"
         RenderSVGInlineText {#text} at (0,0) size 0x0
       RenderSVGText {text} at (345,357) size 80x20 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 80x10
index c36427f5b944ce3bdc027f7c58489a713a04d0c3..46f98110de8fedb4af6745796a1a33882a6537c0 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/custom/glyph-selection-lang-attribute-expected.png and b/LayoutTests/platform/mac/svg/custom/glyph-selection-lang-attribute-expected.png differ
index ee7be3140dd801a62247577ff9058b35cc64bd6e..75d75244217f44a59c0ec3313bbfe4297a8a3f76 100644 (file)
@@ -3,36 +3,36 @@ layer at (0,0) size 800x600
 layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (0,0) size 800x600
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-    RenderSVGContainer {g} at (83,16) size 47x551
+    RenderSVGContainer {g} at (83,16) size 42x551
       RenderSVGText {text} at (50,10) size 25x50 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 25x50
-          chunk 1 text run 1 at (50.00,50.00) startOffset 0 endOffset 1 width 24.90: "a"
+          chunk 1 text run 1 at (50.00,50.00) startOffset 0 endOffset 1 width 25.00: "a"
       RenderSVGText {text} at (50,80) size 25x50 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 25x50
-          chunk 1 text run 1 at (50.00,120.00) startOffset 0 endOffset 1 width 24.90: "a"
-      RenderSVGText {text} at (50,150) size 28x50 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,0) size 28x50
-          chunk 1 text run 1 at (50.00,190.00) startOffset 0 endOffset 1 width 27.60: "a"
-      RenderSVGText {text} at (50,220) size 28x50 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,0) size 28x50
-          chunk 1 text run 1 at (50.00,260.00) startOffset 0 endOffset 1 width 27.60: "a"
-      RenderSVGText {text} at (50,290) size 28x50 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,0) size 28x50
-          chunk 1 text run 1 at (50.00,330.00) startOffset 0 endOffset 1 width 27.60: "a"
+          chunk 1 text run 1 at (50.00,120.00) startOffset 0 endOffset 1 width 25.00: "a"
+      RenderSVGText {text} at (50,150) size 25x50 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 25x50
+          chunk 1 text run 1 at (50.00,190.00) startOffset 0 endOffset 1 width 25.00: "a"
+      RenderSVGText {text} at (50,220) size 25x50 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 25x50
+          chunk 1 text run 1 at (50.00,260.00) startOffset 0 endOffset 1 width 25.00: "a"
+      RenderSVGText {text} at (50,290) size 25x50 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 25x50
+          chunk 1 text run 1 at (50.00,330.00) startOffset 0 endOffset 1 width 25.00: "a"
     RenderSVGContainer {g} at (250,16) size 42x551 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,0.00)}]
       RenderSVGText {text} at (50,10) size 25x50 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 25x50
-          chunk 1 text run 1 at (50.00,50.00) startOffset 0 endOffset 1 width 24.90: "a"
+          chunk 1 text run 1 at (50.00,50.00) startOffset 0 endOffset 1 width 25.00: "a"
       RenderSVGText {text} at (50,80) size 25x50 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 25x50
-          chunk 1 text run 1 at (50.00,120.00) startOffset 0 endOffset 1 width 24.90: "a"
+          chunk 1 text run 1 at (50.00,120.00) startOffset 0 endOffset 1 width 25.00: "a"
       RenderSVGText {text} at (50,150) size 25x50 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 25x50
-          chunk 1 text run 1 at (50.00,190.00) startOffset 0 endOffset 1 width 24.90: "a"
+          chunk 1 text run 1 at (50.00,190.00) startOffset 0 endOffset 1 width 25.00: "a"
       RenderSVGText {text} at (50,220) size 25x50 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 25x50
-          chunk 1 text run 1 at (50.00,260.00) startOffset 0 endOffset 1 width 24.90: "a"
+          chunk 1 text run 1 at (50.00,260.00) startOffset 0 endOffset 1 width 25.00: "a"
       RenderSVGText {text} at (50,290) size 25x50 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 25x50
-          chunk 1 text run 1 at (50.00,330.00) startOffset 0 endOffset 1 width 24.90: "a"
+          chunk 1 text run 1 at (50.00,330.00) startOffset 0 endOffset 1 width 25.00: "a"
     RenderSVGPath {rect} at (0,0) size 800x600 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=478.00] [height=358.00]
diff --git a/LayoutTests/platform/mac/svg/custom/svg-fonts-fallback-expected.png b/LayoutTests/platform/mac/svg/custom/svg-fonts-fallback-expected.png
deleted file mode 100644 (file)
index bcab762..0000000
Binary files a/LayoutTests/platform/mac/svg/custom/svg-fonts-fallback-expected.png and /dev/null differ
diff --git a/LayoutTests/platform/mac/svg/custom/svg-fonts-fallback-expected.txt b/LayoutTests/platform/mac/svg/custom/svg-fonts-fallback-expected.txt
deleted file mode 100644 (file)
index fb0d8d4..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x450
-  RenderBlock {html} at (0,0) size 800x450
-    RenderBody {body} at (8,16) size 784x418
-      RenderBlock {p} at (0,0) size 784x92
-        RenderInline {span} at (0,0) size 87x46
-          RenderText {#text} at (0,0) size 87x46
-            text run at (0,0) width 87: "a \x{BE2} o"
-        RenderBR {br} at (87,22) size 0x18
-        RenderInline {span} at (0,0) size 87x46
-          RenderText {#text} at (0,46) size 87x46
-            text run at (0,46) width 87: "a \x{BE2} o"
-        RenderText {#text} at (0,0) size 0x0
-      RenderBlock {hr} at (0,108) size 784x2 [border: (1px inset #000000)]
-      RenderBlock {p} at (0,126) size 784x56
-        RenderInline {span} at (0,0) size 90x52
-          RenderText {#text} at (0,2) size 90x52
-            text run at (0,2) width 90: "a \x{BE2} o"
-        RenderBR {br} at (89,30) size 1x18
-      RenderBlock {hr} at (0,198) size 784x2 [border: (1px inset #000000)]
-      RenderBlock {p} at (0,216) size 784x112
-        RenderInline {span} at (0,0) size 93x52
-          RenderText {#text} at (0,2) size 93x52
-            text run at (0,2) width 93: "a \x{BE2} o"
-        RenderBR {br} at (92,30) size 1x18
-        RenderInline {span} at (0,0) size 93x52
-          RenderText {#text} at (0,58) size 93x52
-            text run at (0,58) width 93: "a \x{BE2} o"
-        RenderText {#text} at (0,0) size 0x0
-      RenderBlock {hr} at (0,344) size 784x2 [border: (1px inset #000000)]
-      RenderBlock {p} at (0,362) size 784x56
-        RenderInline {span} at (0,0) size 73x52
-          RenderText {#text} at (0,2) size 73x52
-            text run at (0,2) width 73: "a \x{BE2} o"
-        RenderBR {br} at (72,30) size 1x18
diff --git a/LayoutTests/platform/mac/svg/custom/svg-fonts-segmented-expected.png b/LayoutTests/platform/mac/svg/custom/svg-fonts-segmented-expected.png
deleted file mode 100644 (file)
index 8538b87..0000000
Binary files a/LayoutTests/platform/mac/svg/custom/svg-fonts-segmented-expected.png and /dev/null differ
diff --git a/LayoutTests/platform/mac/svg/custom/svg-fonts-segmented-expected.txt b/LayoutTests/platform/mac/svg/custom/svg-fonts-segmented-expected.txt
deleted file mode 100644 (file)
index 5b1b639..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x136
-  RenderBlock {html} at (0,0) size 800x136
-    RenderBody {body} at (8,40) size 784x56
-      RenderBlock {p} at (0,0) size 784x56
-        RenderText {#text} at (0,2) size 257x52
-          text run at (0,2) width 257: "ABCdefoooO"
index eec819e4c8fbc943d845db158606392369d9fcaf..71939876417d625a2c97103f2aa1697cd340ee57 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/custom/svg-fonts-with-no-element-reference-expected.png and b/LayoutTests/platform/mac/svg/custom/svg-fonts-with-no-element-reference-expected.png differ
index e5863bf5964f02e288a9455d7619745900a90e56..955f091146e68ad2dfc4b4b959df9f4f7c91407d 100644 (file)
@@ -4,8 +4,8 @@ layer at (0,0) size 800x96
   RenderBlock {HTML} at (0,0) size 800x96
     RenderBody {BODY} at (8,18) size 784x60
       RenderBlock {P} at (0,0) size 784x21
-        RenderText {#text} at (0,1) size 277x19
-          text run at (0,1) width 277: "This text should be rendered with a first font."
+        RenderText {#text} at (0,1) size 275x19
+          text run at (0,1) width 275: "This text should be rendered with a first font."
       RenderBlock {P} at (0,39) size 784x21
-        RenderText {#text} at (0,1) size 285x19
-          text run at (0,1) width 285: "This text should be rendered with a second font."
+        RenderText {#text} at (0,1) size 284x19
+          text run at (0,1) width 284: "This text should be rendered with a second font."
index 61b2479d46d9ecb867ed222f228b9c80b19fd872..ed457da5b0be53570491654470e66013375d2285 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/custom/svg-fonts-without-missing-glyph-expected.png and b/LayoutTests/platform/mac/svg/custom/svg-fonts-without-missing-glyph-expected.png differ
index 911d859bc3dedab33e59544f656d96fb4af0d925..34a3ba5152cf498e660f97886fe88166993bcba6 100644 (file)
@@ -13,17 +13,17 @@ layer at (0,0) size 800x283
         RenderText {#text} at (0,0) size 506x18
           text run at (0,0) width 506: "Following text should be rendered as usual. Only \"A\" has a glyph in SVG Font."
       RenderBlock {p} at (0,92) size 784x18
-        RenderText {#text} at (0,1) size 35x16
-          text run at (0,1) width 35: "XXA"
+        RenderText {#text} at (0,1) size 37x16
+          text run at (0,1) width 37: "XXA"
       RenderBlock {p} at (0,126) size 784x18
-        RenderText {#text} at (0,1) size 35x16
-          text run at (0,1) width 35: "XAX"
+        RenderText {#text} at (0,1) size 37x16
+          text run at (0,1) width 37: "XAX"
       RenderBlock {p} at (0,160) size 784x18
-        RenderText {#text} at (0,1) size 35x16
-          text run at (0,1) width 35: "AXX"
+        RenderText {#text} at (0,1) size 37x16
+          text run at (0,1) width 37: "AXX"
       RenderBlock {p} at (0,194) size 784x18
-        RenderText {#text} at (0,1) size 33x16
-          text run at (0,1) width 33: "XXX"
+        RenderText {#text} at (0,1) size 36x16
+          text run at (0,1) width 36: "XXX"
       RenderBlock {p} at (0,228) size 784x18
         RenderText {#text} at (0,1) size 39x16
           text run at (0,1) width 39: "AAA"
diff --git a/LayoutTests/platform/mac/svg/custom/svg-fonts-word-spacing-expected.png b/LayoutTests/platform/mac/svg/custom/svg-fonts-word-spacing-expected.png
deleted file mode 100644 (file)
index e03cf27..0000000
Binary files a/LayoutTests/platform/mac/svg/custom/svg-fonts-word-spacing-expected.png and /dev/null differ
diff --git a/LayoutTests/platform/mac/svg/custom/svg-fonts-word-spacing-expected.txt b/LayoutTests/platform/mac/svg/custom/svg-fonts-word-spacing-expected.txt
deleted file mode 100644 (file)
index 6e327c3..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  RenderBlock {HTML} at (0,0) size 800x600
-    RenderBody {BODY} at (8,8) size 784x574
-      RenderBlock (anonymous) at (0,0) size 784x18
-        RenderText {#text} at (0,0) size 72x18
-          text run at (0,0) width 72: "no spacing:"
-      RenderBlock {P} at (0,36) size 784x20
-        RenderText {#text} at (0,1) size 70x18
-          text run at (0,1) width 70: "abc abc abc"
-      RenderBlock (anonymous) at (0,74) size 784x18
-        RenderText {#text} at (0,0) size 294x18
-          text run at (0,0) width 294: "word-spacing: 100px, all should look the same"
-      RenderBlock {P} at (0,110) size 784x20
-        RenderText {#text} at (0,1) size 270x18
-          text run at (0,1) width 270: "abc abc abc"
-      RenderBlock {P} at (0,148) size 784x20
-        RenderText {#text} at (0,1) size 126x18
-          text run at (0,1) width 126: "abc "
-        RenderInline {SPAN} at (0,0) size 14x18
-          RenderText {#text} at (125,1) size 14x18
-            text run at (125,1) width 14: "ab"
-        RenderText {#text} at (138,1) size 132x18
-          text run at (138,1) width 132: "c abc"
-      RenderBlock {P} at (0,186) size 784x20
-        RenderText {#text} at (0,1) size 126x18
-          text run at (0,1) width 126: "abc "
-        RenderInline {SPAN} at (0,0) size 8x18
-          RenderText {#text} at (125,1) size 8x18
-            text run at (125,1) width 8: "a"
-        RenderInline {SPAN} at (0,0) size 7x18
-          RenderText {#text} at (132,1) size 7x18
-            text run at (132,1) width 7: "b"
-        RenderText {#text} at (138,1) size 132x18
-          text run at (138,1) width 132: "c abc"
-      RenderBlock {P} at (0,224) size 784x20
-        RenderText {#text} at (0,1) size 126x18
-          text run at (0,1) width 126: "abc "
-        RenderInline {SPAN} at (0,0) size 8x18
-          RenderText {#text} at (125,1) size 8x18
-            text run at (125,1) width 8: "a"
-        RenderText {#text} at (132,1) size 7x18
-          text run at (132,1) width 7: "b"
-        RenderInline {SPAN} at (0,0) size 7x18
-          RenderText {#text} at (138,1) size 7x18
-            text run at (138,1) width 7: "c"
-        RenderText {#text} at (244,1) size 26x18
-          text run at (244,1) width 26: " abc"
-      RenderBlock {P} at (0,262) size 784x20
-        RenderText {#text} at (0,1) size 133x18
-          text run at (0,1) width 133: "abc a"
-        RenderInline {SPAN} at (0,0) size 7x18
-          RenderText {#text} at (132,1) size 7x18
-            text run at (132,1) width 7: "b"
-        RenderInline {SPAN} at (0,0) size 7x18
-          RenderText {#text} at (138,1) size 7x18
-            text run at (138,1) width 7: "c"
-        RenderText {#text} at (244,1) size 26x18
-          text run at (244,1) width 26: " abc"
-      RenderBlock {P} at (0,300) size 784x20
-        RenderText {#text} at (0,1) size 133x18
-          text run at (0,1) width 133: "abc a"
-        RenderInline {SPAN} at (0,0) size 7x18
-          RenderText {#text} at (132,1) size 7x18
-            text run at (132,1) width 7: "b"
-        RenderText {#text} at (138,1) size 132x18
-          text run at (138,1) width 132: "c abc"
-      RenderBlock {P} at (0,338) size 784x20
-        RenderText {#text} at (0,1) size 126x18
-          text run at (0,1) width 126: "abc "
-        RenderInline {SPAN} at (0,0) size 1x18
-        RenderText {#text} at (125,1) size 126x18
-          text run at (125,1) width 126: "abc "
-        RenderInline {SPAN} at (0,0) size 1x18
-        RenderText {#text} at (250,1) size 20x18
-          text run at (250,1) width 20: "abc"
index 3a373c77d812f29cd45b74352736a18e22b08400..09310d21589d0ae9bafbc916f5e1e45c5308e61a 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEConvolveMatrixElement-dom-preserveAlpha-attr-expected.png and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEConvolveMatrixElement-dom-preserveAlpha-attr-expected.png differ
index a2b192fd6b490461ada46b8bd32dfe653b59f9a7..a4362ddcad469bb0fd5c3423aa49a5ad598bbcc8 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEConvolveMatrixElement-svgdom-preserveAlpha-prop-expected.png and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGFEConvolveMatrixElement-svgdom-preserveAlpha-prop-expected.png differ
index aec823639e75cf2f935336d01fba487063b6a0e0..8de6a065d957a22390485b1c3a3272c9dca678bb 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/foreignObject/text-tref-02-b-expected.png and b/LayoutTests/platform/mac/svg/foreignObject/text-tref-02-b-expected.png differ
index cc34e52048a11ff0810c671e28946e7671b45eb4..334915ed647d74f72098d587e4d6ed195bad3a76 100644 (file)
@@ -26,11 +26,11 @@ layer at (0,0) size 800x600
               RenderSVGInlineText {#text} at (0,0) size 42x19
                 chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 5 width 41.00: "Hello"
           RenderText {#text} at (0,0) size 0x0
-    RenderSVGContainer {g} at (16,523) size 376x56
-      RenderSVGText {text} at (10,314) size 225x33 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,0) size 225x33
-          chunk 1 text run 1 at (10.00,340.00) startOffset 0 endOffset 2 width 40.64: "$R"
-          chunk 1 text run 2 at (50.26,340.00) startOffset 2 endOffset 3 width 17.68: "e"
-          chunk 1 text run 3 at (67.46,340.00) startOffset 3 endOffset 12 width 116.64: "vision: 1"
-          chunk 1 text run 4 at (181.73,340.00) startOffset 12 endOffset 16 width 53.04: ".5 $"
+    RenderSVGContainer {g} at (16,523) size 379x56
+      RenderSVGText {text} at (10,314) size 227x33 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 227x33
+          chunk 1 text run 1 at (10.00,340.00) startOffset 0 endOffset 2 width 40.90: "$R"
+          chunk 1 text run 2 at (50.51,340.00) startOffset 2 endOffset 3 width 17.79: "e"
+          chunk 1 text run 3 at (67.82,340.00) startOffset 3 endOffset 12 width 117.38: "vision: 1"
+          chunk 1 text run 4 at (182.83,340.00) startOffset 12 endOffset 16 width 53.38: ".5 $"
     RenderSVGPath {rect} at (0,0) size 800x600 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=478.00] [height=358.00]
index 6998586faa96ea3742c438ba92dce9c725c287a2..742e80871dfef89fe3e74aae1f018d04f1e9011e 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 a9369ce6c03c67f3897360c37199c57ce54611cf..bd503e2bd4d15d9f165eb5a0a6805e569d86ed9f 100644 (file)
@@ -11,26 +11,26 @@ layer at (0,0) size 800x600
           chunk 1 text run 1 at (5.00,90.00) startOffset 0 endOffset 32 width 463.20: "and many-to-many chars to glyphs"
       RenderSVGHiddenContainer {defs} at (0,0) size 0x0
       RenderSVGContainer {g} at (75,208) size 664x276
-        RenderSVGText {text} at (140,130) size 199x75 contains 1 chunk(s)
-          RenderSVGTSpan {altGlyph} at (0,0) size 44x75
-            RenderSVGInlineText {#text} at (0,0) size 44x75
-              chunk 1 text run 1 at (140.00,190.00) startOffset 0 endOffset 1 width 43.20: "H"
+        RenderSVGText {text} at (140,130) size 188x75 contains 1 chunk(s)
+          RenderSVGTSpan {altGlyph} at (0,0) size 38x75
+            RenderSVGInlineText {#text} at (0,0) size 38x75
+              chunk 1 text run 1 at (140.00,190.00) startOffset 0 endOffset 1 width 37.50: "H"
           RenderSVGInlineText {#text} at (0,0) size 0x0
           RenderSVGTSpan {altGlyph} at (0,0) size 38x75
-            RenderSVGInlineText {#text} at (43,0) size 38x75
-              chunk 1 text run 1 at (183.20,190.00) startOffset 0 endOffset 1 width 37.50: "A"
+            RenderSVGInlineText {#text} at (37,0) size 38x75
+              chunk 1 text run 1 at (177.50,190.00) startOffset 0 endOffset 1 width 37.50: "A"
           RenderSVGInlineText {#text} at (0,0) size 0x0
-          RenderSVGTSpan {altGlyph} at (0,0) size 41x75
-            RenderSVGInlineText {#text} at (80,0) size 41x75
-              chunk 1 text run 1 at (220.70,190.00) startOffset 0 endOffset 1 width 40.20: "P"
+          RenderSVGTSpan {altGlyph} at (0,0) size 38x75
+            RenderSVGInlineText {#text} at (75,0) size 38x75
+              chunk 1 text run 1 at (215.00,190.00) startOffset 0 endOffset 1 width 37.50: "P"
           RenderSVGInlineText {#text} at (0,0) size 0x0
-          RenderSVGTSpan {altGlyph} at (0,0) size 42x75
-            RenderSVGInlineText {#text} at (120,0) size 42x75
-              chunk 1 text run 1 at (260.90,190.00) startOffset 0 endOffset 1 width 40.20: "P"
+          RenderSVGTSpan {altGlyph} at (0,0) size 38x75
+            RenderSVGInlineText {#text} at (112,0) size 38x75
+              chunk 1 text run 1 at (252.50,190.00) startOffset 0 endOffset 1 width 37.50: "P"
           RenderSVGInlineText {#text} at (0,0) size 0x0
           RenderSVGTSpan {altGlyph} at (0,0) size 38x75
-            RenderSVGInlineText {#text} at (161,0) size 38x75
-              chunk 1 text run 1 at (301.10,190.00) startOffset 0 endOffset 1 width 37.50: "Y"
+            RenderSVGInlineText {#text} at (150,0) size 38x75
+              chunk 1 text run 1 at (290.00,190.00) startOffset 0 endOffset 1 width 37.50: "Y"
           RenderSVGInlineText {#text} at (0,0) size 0x0
         RenderSVGText {text} at (50,210) size 113x75 contains 1 chunk(s)
           RenderSVGTSpan {altGlyph} at (0,0) size 38x75
diff --git a/LayoutTests/platform/mac/svg/text/text-overflow-ellipsis-svgfont-expected.png b/LayoutTests/platform/mac/svg/text/text-overflow-ellipsis-svgfont-expected.png
deleted file mode 100644 (file)
index 778086f..0000000
Binary files a/LayoutTests/platform/mac/svg/text/text-overflow-ellipsis-svgfont-expected.png and /dev/null differ
diff --git a/LayoutTests/platform/mac/svg/text/text-overflow-ellipsis-svgfont-expected.txt b/LayoutTests/platform/mac/svg/text/text-overflow-ellipsis-svgfont-expected.txt
deleted file mode 100644 (file)
index 23bb235..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x120
-  RenderBlock {HTML} at (0,0) size 800x120
-    RenderBody {BODY} at (8,8) size 784x92
-      RenderBlock (anonymous) at (0,0) size 784x72
-        RenderText {#text} at (0,0) size 640x18
-          text run at (0,0) width 640: "This test checks that the text-overflow: ellipsis property is handled correctly when using an SVG font."
-        RenderBR {BR} at (640,0) size 0x18
-        RenderBR {BR} at (0,18) size 0x18
-        RenderText {#text} at (0,36) size 517x18
-          text run at (0,36) width 517: "Pass if some text is shown followed by an ellipsis (NOT just the ellipsis by itself). "
-        RenderBR {BR} at (517,36) size 0x18
-        RenderBR {BR} at (0,54) size 0x18
-layer at (8,80) size 182x20 clip at (9,81) size 180x18 scrollWidth 334
-  RenderBlock {DIV} at (0,72) size 182x20 [border: (1px solid #000000)]
-    RenderText {#text} at (1,2) size 334x16
-      text run at (1,2) width 334: "abc abc abc abc abc abc abc abc abc abc"
index 0b13bf6644d1d5348d149ba9b82c982e6cd38e4d..c836c30aba244dbc8b67068a33dcde23b86747cd 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 668852cd0177257924754503130bd9f650b668d1..060b5b22a807cec60d88d4db849effd84c81c2dc 100644 (file)
@@ -23,7 +23,7 @@ layer at (0,0) size 800x600
               RenderSVGPath {rect} at (285,60) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
           RenderSVGText {text} at (0,-20) size 60x25 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,0) size 60x25
-              chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 4 width 59.40: "1234"
+              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
         RenderSVGPath {rect} at (0,0) size 7x7 [fill={[type=SOLID] [color=#000000]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
       RenderSVGContainer {g} at (116,100) size 259x42 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,80.00)}]
@@ -47,10 +47,10 @@ layer at (0,0) size 800x600
             RenderSVGPath {rect} at (343,126) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
         RenderSVGText {text} at (20,-20) size 75x25 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,0) size 75x25
-            chunk 1 text run 1 at (20.00,0.00) startOffset 0 endOffset 1 width 14.85: "1"
-            chunk 1 text run 1 at (40.00,0.00) startOffset 0 endOffset 1 width 14.85: "2"
-            chunk 1 text run 1 at (60.00,0.00) startOffset 0 endOffset 1 width 14.85: "3"
-            chunk 1 text run 1 at (80.00,0.00) startOffset 0 endOffset 1 width 14.85: "4"
+            chunk 1 text run 1 at (20.00,0.00) startOffset 0 endOffset 1 width 15.00: "1"
+            chunk 1 text run 1 at (40.00,0.00) startOffset 0 endOffset 1 width 15.00: "2"
+            chunk 1 text run 1 at (60.00,0.00) startOffset 0 endOffset 1 width 15.00: "3"
+            chunk 1 text run 1 at (80.00,0.00) startOffset 0 endOffset 1 width 15.00: "4"
       RenderSVGContainer {g} at (88,166) size 302x43 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,120.00)}]
         RenderSVGText {text} at (-77,-15) size 48x20 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,0) size 48x20
@@ -75,10 +75,10 @@ layer at (0,0) size 800x600
             RenderSVGPath {rect} at (376,193) size 14x14 [fill={[type=SOLID] [color=#FF0000]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
         RenderSVGText {text} at (20,-20) size 75x25 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,0) size 75x25
-            chunk 1 text run 1 at (20.00,0.00) startOffset 0 endOffset 1 width 14.85: "1"
-            chunk 1 text run 1 at (40.00,0.00) startOffset 0 endOffset 1 width 14.85: "2"
-            chunk 1 text run 1 at (60.00,0.00) startOffset 0 endOffset 1 width 14.85: "3"
-            chunk 1 text run 1 at (80.00,0.00) startOffset 0 endOffset 1 width 14.85: "4"
+            chunk 1 text run 1 at (20.00,0.00) startOffset 0 endOffset 1 width 15.00: "1"
+            chunk 1 text run 1 at (40.00,0.00) startOffset 0 endOffset 1 width 15.00: "2"
+            chunk 1 text run 1 at (60.00,0.00) startOffset 0 endOffset 1 width 15.00: "3"
+            chunk 1 text run 1 at (80.00,0.00) startOffset 0 endOffset 1 width 15.00: "4"
       RenderSVGContainer {g} at (83,233) size 284x42 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,160.00)}]
         RenderSVGText {text} at (-80,-15) size 51x20 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,0) size 51x20
@@ -100,9 +100,9 @@ layer at (0,0) size 800x600
             RenderSVGPath {rect} at (335,260) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
         RenderSVGText {text} at (20,-20) size 70x25 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,0) size 70x25
-            chunk 1 text run 1 at (20.00,0.00) startOffset 0 endOffset 1 width 14.85: "1"
-            chunk 1 text run 1 at (40.00,0.00) startOffset 0 endOffset 1 width 14.85: "2"
-            chunk 1 text run 1 at (60.00,0.00) startOffset 0 endOffset 2 width 29.70: "34"
+            chunk 1 text run 1 at (20.00,0.00) startOffset 0 endOffset 1 width 15.00: "1"
+            chunk 1 text run 1 at (40.00,0.00) startOffset 0 endOffset 1 width 15.00: "2"
+            chunk 1 text run 1 at (60.00,0.00) startOffset 0 endOffset 2 width 30.00: "34"
       RenderSVGContainer {g} at (116,283) size 201x76 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,200.00)}]
         RenderSVGText {text} at (-60,-15) size 30x20 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,0) size 30x20
@@ -121,10 +121,10 @@ layer at (0,0) size 800x600
             RenderSVGPath {rect} at (285,343) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
         RenderSVGText {text} at (0,-30) size 60x45 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,0) size 60x45
-            chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 1 width 14.85: "1"
-            chunk 1 text run 1 at (14.85,-5.00) startOffset 0 endOffset 1 width 14.85: "2"
-            chunk 1 text run 1 at (29.70,5.00) startOffset 0 endOffset 1 width 14.85: "3"
-            chunk 1 text run 1 at (44.55,10.00) startOffset 0 endOffset 1 width 14.85: "4"
+            chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
+            chunk 1 text run 1 at (15.00,-5.00) startOffset 0 endOffset 1 width 15.00: "2"
+            chunk 1 text run 1 at (30.00,5.00) startOffset 0 endOffset 1 width 15.00: "3"
+            chunk 1 text run 1 at (45.00,10.00) startOffset 0 endOffset 1 width 15.00: "4"
       RenderSVGContainer {g} at (88,366) size 229x76 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,250.00)}]
         RenderSVGText {text} at (-77,-15) size 48x20 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,0) size 48x20
@@ -143,10 +143,10 @@ layer at (0,0) size 800x600
             RenderSVGPath {rect} at (285,426) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
         RenderSVGText {text} at (0,-30) size 60x45 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,0) size 60x45
-            chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 1 width 14.85: "1"
-            chunk 1 text run 1 at (14.85,-5.00) startOffset 0 endOffset 1 width 14.85: "2"
-            chunk 1 text run 1 at (29.70,5.00) startOffset 0 endOffset 1 width 14.85: "3"
-            chunk 1 text run 1 at (44.55,10.00) startOffset 0 endOffset 1 width 14.85: "4"
+            chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
+            chunk 1 text run 1 at (15.00,-5.00) startOffset 0 endOffset 1 width 15.00: "2"
+            chunk 1 text run 1 at (30.00,5.00) startOffset 0 endOffset 1 width 15.00: "3"
+            chunk 1 text run 1 at (45.00,10.00) startOffset 0 endOffset 1 width 15.00: "4"
       RenderSVGContainer {g} at (83,450) size 234x67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,300.00)}]
         RenderSVGText {text} at (-80,-15) size 51x20 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,0) size 51x20
@@ -165,9 +165,9 @@ layer at (0,0) size 800x600
             RenderSVGPath {rect} at (285,501) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
         RenderSVGText {text} at (0,-30) size 60x40 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,0) size 60x40
-            chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 1 width 14.85: "1"
-            chunk 1 text run 1 at (14.85,-5.00) startOffset 0 endOffset 1 width 14.85: "2"
-            chunk 1 text run 1 at (29.70,5.00) startOffset 0 endOffset 2 width 29.70: "34"
+            chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
+            chunk 1 text run 1 at (15.00,-5.00) startOffset 0 endOffset 1 width 15.00: "2"
+            chunk 1 text run 1 at (30.00,5.00) startOffset 0 endOffset 2 width 30.00: "34"
       RenderSVGContainer {g} at (395,83) size 362x342 [transform={m=((1.00,0.00)(0.00,1.00)) t=(220.00,0.00)}]
         RenderSVGContainer {g} at (461,83) size 281x76 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,80.00)}]
           RenderSVGText {text} at (-73,-15) size 43x20 contains 1 chunk(s)
@@ -190,10 +190,10 @@ layer at (0,0) size 800x600
               RenderSVGPath {rect} at (710,143) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
           RenderSVGText {text} at (20,-30) size 75x45 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,0) size 75x45
-              chunk 1 text run 1 at (20.00,-10.00) startOffset 0 endOffset 1 width 14.85: "1"
-              chunk 1 text run 1 at (40.00,-5.00) startOffset 0 endOffset 1 width 14.85: "2"
-              chunk 1 text run 1 at (60.00,5.00) startOffset 0 endOffset 1 width 14.85: "3"
-              chunk 1 text run 1 at (80.00,10.00) startOffset 0 endOffset 1 width 14.85: "4"
+              chunk 1 text run 1 at (20.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
+              chunk 1 text run 1 at (40.00,-5.00) startOffset 0 endOffset 1 width 15.00: "2"
+              chunk 1 text run 1 at (60.00,5.00) startOffset 0 endOffset 1 width 15.00: "3"
+              chunk 1 text run 1 at (80.00,10.00) startOffset 0 endOffset 1 width 15.00: "4"
         RenderSVGContainer {g} at (433,150) size 324x90 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,120.00)}]
           RenderSVGText {text} at (-90,-15) size 60x20 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,0) size 60x20
@@ -218,10 +218,10 @@ layer at (0,0) size 800x600
               RenderSVGPath {rect} at (743,226) size 14x14 [fill={[type=SOLID] [color=#FF0000]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
           RenderSVGText {text} at (20,-30) size 75x45 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,0) size 75x45
-              chunk 1 text run 1 at (20.00,-10.00) startOffset 0 endOffset 1 width 14.85: "1"
-              chunk 1 text run 1 at (40.00,-5.00) startOffset 0 endOffset 1 width 14.85: "2"
-              chunk 1 text run 1 at (60.00,5.00) startOffset 0 endOffset 1 width 14.85: "3"
-              chunk 1 text run 1 at (80.00,10.00) startOffset 0 endOffset 1 width 14.85: "4"
+              chunk 1 text run 1 at (20.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
+              chunk 1 text run 1 at (40.00,-5.00) startOffset 0 endOffset 1 width 15.00: "2"
+              chunk 1 text run 1 at (60.00,5.00) startOffset 0 endOffset 1 width 15.00: "3"
+              chunk 1 text run 1 at (80.00,10.00) startOffset 0 endOffset 1 width 15.00: "4"
         RenderSVGContainer {g} at (428,216) size 306x68 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,160.00)}]
           RenderSVGText {text} at (-93,-15) size 63x20 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,0) size 63x20
@@ -243,9 +243,9 @@ layer at (0,0) size 800x600
               RenderSVGPath {rect} at (701,268) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
           RenderSVGText {text} at (20,-30) size 70x40 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,0) size 70x40
-              chunk 1 text run 1 at (20.00,-10.00) startOffset 0 endOffset 1 width 14.85: "1"
-              chunk 1 text run 1 at (40.00,-5.00) startOffset 0 endOffset 1 width 14.85: "2"
-              chunk 1 text run 1 at (60.00,5.00) startOffset 0 endOffset 2 width 29.70: "34"
+              chunk 1 text run 1 at (20.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
+              chunk 1 text run 1 at (40.00,-5.00) startOffset 0 endOffset 1 width 15.00: "2"
+              chunk 1 text run 1 at (60.00,5.00) startOffset 0 endOffset 2 width 30.00: "34"
         RenderSVGContainer {g} at (395,283) size 347x67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,200.00)}]
           RenderSVGText {text} at (-113,-15) size 83x20 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,0) size 83x20
@@ -267,10 +267,10 @@ layer at (0,0) size 800x600
               RenderSVGPath {rect} at (710,335) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
           RenderSVGText {text} at (20,-30) size 75x40 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,0) size 75x40
-              chunk 1 text run 1 at (20.00,-10.00) startOffset 0 endOffset 1 width 14.85: "1"
-              chunk 1 text run 1 at (40.00,-5.00) startOffset 0 endOffset 1 width 14.85: "2"
-              chunk 1 text run 1 at (60.00,5.00) startOffset 0 endOffset 1 width 14.85: "3"
-              chunk 1 text run 1 at (80.00,5.00) startOffset 0 endOffset 1 width 14.85: "4"
+              chunk 1 text run 1 at (20.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
+              chunk 1 text run 1 at (40.00,-5.00) startOffset 0 endOffset 1 width 15.00: "2"
+              chunk 1 text run 1 at (60.00,5.00) startOffset 0 endOffset 1 width 15.00: "3"
+              chunk 1 text run 1 at (80.00,5.00) startOffset 0 endOffset 1 width 15.00: "4"
         RenderSVGContainer {g} at (395,350) size 339x75 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,240.00)}]
           RenderSVGText {text} at (-113,-15) size 83x20 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,0) size 83x20
@@ -292,10 +292,10 @@ layer at (0,0) size 800x600
               RenderSVGPath {rect} at (705,410) size 15x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
           RenderSVGText {text} at (20,-30) size 70x45 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,0) size 70x45
-              chunk 1 text run 1 at (20.00,-10.00) startOffset 0 endOffset 1 width 14.85: "1"
-              chunk 1 text run 1 at (40.00,-5.00) startOffset 0 endOffset 1 width 14.85: "2"
-              chunk 1 text run 1 at (60.00,5.00) startOffset 0 endOffset 1 width 14.85: "3"
-              chunk 1 text run 1 at (74.85,10.00) startOffset 0 endOffset 1 width 14.85: "4"
+              chunk 1 text run 1 at (20.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
+              chunk 1 text run 1 at (40.00,-5.00) startOffset 0 endOffset 1 width 15.00: "2"
+              chunk 1 text run 1 at (60.00,5.00) startOffset 0 endOffset 1 width 15.00: "3"
+              chunk 1 text run 1 at (75.00,10.00) startOffset 0 endOffset 1 width 15.00: "4"
     RenderSVGText {text} at (10,303) size 289x48 contains 1 chunk(s)
       RenderSVGInlineText {#text} at (0,0) size 289x48
         chunk 1 text run 1 at (10.00,340.00) startOffset 0 endOffset 17 width 288.60: "$Revision: 1.13 $"
index 20bbfea2e2998ce0ff86a778ca2e855d3d903bde..6aa54a99874117ce7f6016d82866cc504ce0d7a1 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 bd51d90f014317ccce6254c11d55fbe04514bd79..eda101d2ad4d5bbbef8c0bc9fbeb2ca43f56e2df 100644 (file)
@@ -36,7 +36,7 @@ layer at (0,0) size 800x600
         RenderSVGText {text} at (0,255) size 47x20 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,0) size 47x20
             chunk 1 text run 1 at (0.00,270.00) startOffset 0 endOffset 7 width 46.20: "2.x 2.y"
-      RenderSVGContainer {g} at (186,13) size 241x537 [transform={m=((1.00,0.00)(0.00,1.00)) t=(150.00,40.00)}]
+      RenderSVGContainer {g} at (186,13) size 239x537 [transform={m=((1.00,0.00)(0.00,1.00)) t=(150.00,40.00)}]
         RenderSVGText {text} at (-38,-32) size 76x20 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,0) size 76x20
             chunk 1 (middle anchor) text run 1 at (-37.80,-17.00) startOffset 0 endOffset 11 width 75.60: "text-anchor"
@@ -44,15 +44,15 @@ layer at (0,0) size 800x600
           RenderSVGInlineText {#text} at (0,0) size 30x20
             chunk 1 (middle anchor) text run 1 at (-14.40,-3.00) startOffset 0 endOffset 5 width 28.80: "start"
         RenderSVGPath {line} at (248,83) size 4x467 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#000000]}] [x1=0.00] [y1=10.00] [x2=0.00] [y2=290.00]
-        RenderSVGContainer {g} at (243,91) size 184x424
+        RenderSVGContainer {g} at (243,91) size 182x424
           RenderSVGContainer {use} at (243,91) size 14x33
             RenderSVGContainer {g} at (243,91) size 14x33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,30.00)}]
               RenderSVGContainer {g} at (243,91) size 14x33
                 RenderSVGPath {line} at (248,91) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00]
                 RenderSVGPath {rect} at (243,110) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
-          RenderSVGText {text} at (0,20) size 62x13 contains 1 chunk(s)
-            RenderSVGInlineText {#text} at (0,0) size 62x13
-              chunk 1 text run 1 at (0.00,30.00) startOffset 0 endOffset 4 width 61.20: "1234"
+          RenderSVGText {text} at (0,20) size 60x13 contains 1 chunk(s)
+            RenderSVGInlineText {#text} at (0,0) size 60x13
+              chunk 1 text run 1 at (0.00,30.00) startOffset 0 endOffset 4 width 60.00: "1234"
           RenderSVGContainer {use} at (260,141) size 14x33
             RenderSVGContainer {g} at (260,141) size 14x33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,60.00)}]
               RenderSVGContainer {g} at (260,141) size 14x33
@@ -73,12 +73,12 @@ layer at (0,0) size 800x600
               RenderSVGContainer {g} at (310,141) size 14x33
                 RenderSVGPath {line} at (315,141) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00]
                 RenderSVGPath {rect} at (310,160) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
-          RenderSVGText {text} at (10,50) size 46x13 contains 1 chunk(s)
-            RenderSVGInlineText {#text} at (0,0) size 46x13
-              chunk 1 text run 1 at (10.00,60.00) startOffset 0 endOffset 1 width 15.30: "1"
-              chunk 1 text run 1 at (20.00,60.00) startOffset 0 endOffset 1 width 15.30: "2"
-              chunk 1 text run 1 at (30.00,60.00) startOffset 0 endOffset 1 width 15.30: "3"
-              chunk 1 text run 1 at (40.00,60.00) startOffset 0 endOffset 1 width 15.30: "4"
+          RenderSVGText {text} at (10,50) size 45x13 contains 1 chunk(s)
+            RenderSVGInlineText {#text} at (0,0) size 45x13
+              chunk 1 text run 1 at (10.00,60.00) startOffset 0 endOffset 1 width 15.00: "1"
+              chunk 1 text run 1 at (20.00,60.00) startOffset 0 endOffset 1 width 15.00: "2"
+              chunk 1 text run 1 at (30.00,60.00) startOffset 0 endOffset 1 width 15.00: "3"
+              chunk 1 text run 1 at (40.00,60.00) startOffset 0 endOffset 1 width 15.00: "4"
           RenderSVGContainer {use} at (260,191) size 14x33
             RenderSVGContainer {g} at (260,191) size 14x33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,90.00)}]
               RenderSVGContainer {g} at (260,191) size 14x33
@@ -89,11 +89,11 @@ layer at (0,0) size 800x600
               RenderSVGContainer {g} at (343,191) size 14x33
                 RenderSVGPath {line} at (348,191) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00]
                 RenderSVGPath {rect} at (343,210) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
-          RenderSVGText {text} at (10,80) size 96x13 contains 1 chunk(s)
-            RenderSVGInlineText {#text} at (0,0) size 96x13
-              chunk 1 text run 1 at (10.00,90.00) startOffset 0 endOffset 1 width 15.30: "1"
-              chunk 1 text run 1 at (60.00,90.00) startOffset 0 endOffset 3 width 45.90: "234"
-          RenderSVGContainer {g} at (243,225) size 111x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,120.00)}]
+          RenderSVGText {text} at (10,80) size 95x13 contains 1 chunk(s)
+            RenderSVGInlineText {#text} at (0,0) size 95x13
+              chunk 1 text run 1 at (10.00,90.00) startOffset 0 endOffset 1 width 15.00: "1"
+              chunk 1 text run 1 at (60.00,90.00) startOffset 0 endOffset 3 width 45.00: "234"
+          RenderSVGContainer {g} at (243,225) size 107x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,120.00)}]
             RenderSVGContainer {use} at (243,225) size 14x32
               RenderSVGContainer {g} at (243,225) size 14x32 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,-10.00)}]
                 RenderSVGContainer {g} at (243,225) size 14x32
@@ -114,13 +114,13 @@ layer at (0,0) size 800x600
                 RenderSVGContainer {g} at (318,258) size 14x32
                   RenderSVGPath {line} at (323,258) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00]
                   RenderSVGPath {rect} at (318,276) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
-            RenderSVGText {text} at (0,-20) size 62x33 contains 1 chunk(s)
-              RenderSVGInlineText {#text} at (0,0) size 62x33
-                chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 1 width 15.30: "1"
-                chunk 1 text run 1 at (15.30,-5.00) startOffset 0 endOffset 1 width 15.30: "2"
-                chunk 1 text run 1 at (30.60,5.00) startOffset 0 endOffset 1 width 15.30: "3"
-                chunk 1 text run 1 at (45.90,10.00) startOffset 0 endOffset 1 width 15.30: "4"
-          RenderSVGContainer {g} at (260,275) size 84x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,150.00)}]
+            RenderSVGText {text} at (0,-20) size 60x33 contains 1 chunk(s)
+              RenderSVGInlineText {#text} at (0,0) size 60x33
+                chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
+                chunk 1 text run 1 at (15.00,-5.00) startOffset 0 endOffset 1 width 15.00: "2"
+                chunk 1 text run 1 at (30.00,5.00) startOffset 0 endOffset 1 width 15.00: "3"
+                chunk 1 text run 1 at (45.00,10.00) startOffset 0 endOffset 1 width 15.00: "4"
+          RenderSVGContainer {g} at (260,275) size 82x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,150.00)}]
             RenderSVGContainer {use} at (260,275) size 14x32
               RenderSVGContainer {g} at (260,275) size 14x32 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,-10.00)}]
                 RenderSVGContainer {g} at (260,275) size 14x32
@@ -141,13 +141,13 @@ layer at (0,0) size 800x600
                 RenderSVGContainer {g} at (310,308) size 14x32
                   RenderSVGPath {line} at (315,308) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00]
                   RenderSVGPath {rect} at (310,326) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
-            RenderSVGText {text} at (10,-20) size 46x33 contains 1 chunk(s)
-              RenderSVGInlineText {#text} at (0,0) size 46x33
-                chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 1 width 15.30: "1"
-                chunk 1 text run 1 at (20.00,-5.00) startOffset 0 endOffset 1 width 15.30: "2"
-                chunk 1 text run 1 at (30.00,5.00) startOffset 0 endOffset 1 width 15.30: "3"
-                chunk 1 text run 1 at (40.00,10.00) startOffset 0 endOffset 1 width 15.30: "4"
-          RenderSVGContainer {g} at (260,325) size 100x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,180.00)}]
+            RenderSVGText {text} at (10,-20) size 45x33 contains 1 chunk(s)
+              RenderSVGInlineText {#text} at (0,0) size 45x33
+                chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
+                chunk 1 text run 1 at (20.00,-5.00) startOffset 0 endOffset 1 width 15.00: "2"
+                chunk 1 text run 1 at (30.00,5.00) startOffset 0 endOffset 1 width 15.00: "3"
+                chunk 1 text run 1 at (40.00,10.00) startOffset 0 endOffset 1 width 15.00: "4"
+          RenderSVGContainer {g} at (260,325) size 99x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,180.00)}]
             RenderSVGContainer {use} at (260,325) size 14x32
               RenderSVGContainer {g} at (260,325) size 14x32 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,-10.00)}]
                 RenderSVGContainer {g} at (260,325) size 14x32
@@ -168,13 +168,13 @@ layer at (0,0) size 800x600
                 RenderSVGContainer {g} at (326,358) size 14x32
                   RenderSVGPath {line} at (331,358) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00]
                   RenderSVGPath {rect} at (326,376) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
-            RenderSVGText {text} at (10,-20) size 56x33 contains 1 chunk(s)
-              RenderSVGInlineText {#text} at (0,0) size 56x33
-                chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 1 width 15.30: "1"
-                chunk 1 text run 1 at (20.00,-5.00) startOffset 0 endOffset 1 width 15.30: "2"
-                chunk 1 text run 1 at (35.30,5.00) startOffset 0 endOffset 1 width 15.30: "3"
-                chunk 1 text run 1 at (50.60,10.00) startOffset 0 endOffset 1 width 15.30: "4"
-          RenderSVGContainer {g} at (243,375) size 111x57 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,210.00)}]
+            RenderSVGText {text} at (10,-20) size 55x33 contains 1 chunk(s)
+              RenderSVGInlineText {#text} at (0,0) size 55x33
+                chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
+                chunk 1 text run 1 at (20.00,-5.00) startOffset 0 endOffset 1 width 15.00: "2"
+                chunk 1 text run 1 at (35.00,5.00) startOffset 0 endOffset 1 width 15.00: "3"
+                chunk 1 text run 1 at (50.00,10.00) startOffset 0 endOffset 1 width 15.00: "4"
+          RenderSVGContainer {g} at (243,375) size 107x57 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,210.00)}]
             RenderSVGContainer {use} at (243,375) size 14x32
               RenderSVGContainer {g} at (243,375) size 14x32 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,-10.00)}]
                 RenderSVGContainer {g} at (243,375) size 14x32
@@ -185,11 +185,11 @@ layer at (0,0) size 800x600
                 RenderSVGContainer {g} at (268,400) size 14x32
                   RenderSVGPath {line} at (273,400) size 4x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00]
                   RenderSVGPath {rect} at (268,418) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
-            RenderSVGText {text} at (0,-20) size 62x28 contains 1 chunk(s)
-              RenderSVGInlineText {#text} at (0,0) size 62x28
-                chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 1 width 15.30: "1"
-                chunk 1 text run 1 at (15.30,5.00) startOffset 0 endOffset 3 width 45.90: "234"
-          RenderSVGContainer {g} at (260,425) size 84x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,240.00)}]
+            RenderSVGText {text} at (0,-20) size 60x28 contains 1 chunk(s)
+              RenderSVGInlineText {#text} at (0,0) size 60x28
+                chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
+                chunk 1 text run 1 at (15.00,5.00) startOffset 0 endOffset 3 width 45.00: "234"
+          RenderSVGContainer {g} at (260,425) size 82x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,240.00)}]
             RenderSVGContainer {use} at (260,425) size 14x32
               RenderSVGContainer {g} at (260,425) size 14x32 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,-10.00)}]
                 RenderSVGContainer {g} at (260,425) size 14x32
@@ -210,13 +210,13 @@ layer at (0,0) size 800x600
                 RenderSVGContainer {g} at (310,433) size 14x32
                   RenderSVGPath {line} at (315,433) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00]
                   RenderSVGPath {rect} at (310,451) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
-            RenderSVGText {text} at (10,-20) size 46x18 contains 1 chunk(s)
-              RenderSVGInlineText {#text} at (0,0) size 46x18
-                chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 1 width 15.30: "1"
-                chunk 1 text run 1 at (20.00,-5.00) startOffset 0 endOffset 1 width 15.30: "2"
-                chunk 1 text run 1 at (30.00,-5.00) startOffset 0 endOffset 1 width 15.30: "3"
-                chunk 1 text run 1 at (40.00,-5.00) startOffset 0 endOffset 1 width 15.30: "4"
-          RenderSVGContainer {g} at (260,475) size 167x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,270.00)}]
+            RenderSVGText {text} at (10,-20) size 45x18 contains 1 chunk(s)
+              RenderSVGInlineText {#text} at (0,0) size 45x18
+                chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
+                chunk 1 text run 1 at (20.00,-5.00) startOffset 0 endOffset 1 width 15.00: "2"
+                chunk 1 text run 1 at (30.00,-5.00) startOffset 0 endOffset 1 width 15.00: "3"
+                chunk 1 text run 1 at (40.00,-5.00) startOffset 0 endOffset 1 width 15.00: "4"
+          RenderSVGContainer {g} at (260,475) size 165x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,270.00)}]
             RenderSVGContainer {use} at (260,475) size 14x32
               RenderSVGContainer {g} at (260,475) size 14x32 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,-10.00)}]
                 RenderSVGContainer {g} at (260,475) size 14x32
@@ -227,10 +227,10 @@ layer at (0,0) size 800x600
                 RenderSVGContainer {g} at (343,483) size 14x32
                   RenderSVGPath {line} at (348,483) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00]
                   RenderSVGPath {rect} at (343,501) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
-            RenderSVGText {text} at (10,-20) size 96x18 contains 1 chunk(s)
-              RenderSVGInlineText {#text} at (0,0) size 96x18
-                chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 1 width 15.30: "1"
-                chunk 1 text run 1 at (60.00,-5.00) startOffset 0 endOffset 3 width 45.90: "234"
+            RenderSVGText {text} at (10,-20) size 95x18 contains 1 chunk(s)
+              RenderSVGInlineText {#text} at (0,0) size 95x18
+                chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
+                chunk 1 text run 1 at (60.00,-5.00) startOffset 0 endOffset 3 width 45.00: "234"
       RenderSVGContainer {g} at (353,13) size 202x537 [transform={m=((1.00,0.00)(0.00,1.00)) t=(250.00,40.00)}]
         RenderSVGText {text} at (-38,-32) size 76x20 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,0) size 76x20
@@ -239,16 +239,16 @@ layer at (0,0) size 800x600
           RenderSVGInlineText {#text} at (0,0) size 48x20
             chunk 1 (middle anchor) text run 1 at (-23.10,-3.00) startOffset 0 endOffset 6 width 46.20: "middle"
         RenderSVGPath {line} at (415,83) size 4x467 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#000000]}] [x1=0.00] [y1=10.00] [x2=0.00] [y2=290.00]
-        RenderSVGContainer {use} at (365,91) size 190x424
-          RenderSVGContainer {g} at (365,91) size 190x424
-            RenderSVGContainer {g} at (365,91) size 190x424
+        RenderSVGContainer {use} at (366,91) size 189x424
+          RenderSVGContainer {g} at (366,91) size 189x424
+            RenderSVGContainer {g} at (366,91) size 189x424
               RenderSVGContainer {g} at (410,91) size 14x33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,30.00)}]
                 RenderSVGContainer {g} at (410,91) size 14x33
                   RenderSVGPath {line} at (415,91) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00]
                   RenderSVGPath {rect} at (410,110) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
-              RenderSVGText {text} at (-31,20) size 62x13 contains 1 chunk(s)
-                RenderSVGInlineText {#text} at (0,0) size 62x13
-                  chunk 1 (middle anchor) text run 1 at (-30.60,30.00) startOffset 0 endOffset 4 width 61.20: "1234"
+              RenderSVGText {text} at (-30,20) size 60x13 contains 1 chunk(s)
+                RenderSVGInlineText {#text} at (0,0) size 60x13
+                  chunk 1 (middle anchor) text run 1 at (-30.00,30.00) startOffset 0 endOffset 4 width 60.00: "1234"
               RenderSVGContainer {g} at (426,141) size 14x33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,60.00)}]
                 RenderSVGContainer {g} at (426,141) size 14x33
                   RenderSVGPath {line} at (431,141) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00]
@@ -267,10 +267,10 @@ layer at (0,0) size 800x600
                   RenderSVGPath {rect} at (476,160) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
               RenderSVGText {text} at (2,50) size 46x13 contains 1 chunk(s)
                 RenderSVGInlineText {#text} at (0,0) size 46x13
-                  chunk 1 (middle anchor) text run 1 at (2.35,60.00) startOffset 0 endOffset 1 width 15.30: "1"
-                  chunk 1 (middle anchor) text run 1 at (12.35,60.00) startOffset 0 endOffset 1 width 15.30: "2"
-                  chunk 1 (middle anchor) text run 1 at (22.35,60.00) startOffset 0 endOffset 1 width 15.30: "3"
-                  chunk 1 (middle anchor) text run 1 at (32.35,60.00) startOffset 0 endOffset 1 width 15.30: "4"
+                  chunk 1 (middle anchor) text run 1 at (2.50,60.00) startOffset 0 endOffset 1 width 15.00: "1"
+                  chunk 1 (middle anchor) text run 1 at (12.50,60.00) startOffset 0 endOffset 1 width 15.00: "2"
+                  chunk 1 (middle anchor) text run 1 at (22.50,60.00) startOffset 0 endOffset 1 width 15.00: "3"
+                  chunk 1 (middle anchor) text run 1 at (32.50,60.00) startOffset 0 endOffset 1 width 15.00: "4"
               RenderSVGContainer {g} at (426,191) size 14x33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,90.00)}]
                 RenderSVGContainer {g} at (426,191) size 14x33
                   RenderSVGPath {line} at (431,191) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00]
@@ -281,9 +281,9 @@ layer at (0,0) size 800x600
                   RenderSVGPath {rect} at (510,210) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
               RenderSVGText {text} at (2,80) size 81x13 contains 1 chunk(s)
                 RenderSVGInlineText {#text} at (0,0) size 81x13
-                  chunk 1 (middle anchor) text run 1 at (2.35,90.00) startOffset 0 endOffset 1 width 15.30: "1"
-                  chunk 1 (middle anchor) text run 1 at (37.05,90.00) startOffset 0 endOffset 3 width 45.90: "234"
-              RenderSVGContainer {g} at (403,225) size 104x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,120.00)}]
+                  chunk 1 (middle anchor) text run 1 at (2.50,90.00) startOffset 0 endOffset 1 width 15.00: "1"
+                  chunk 1 (middle anchor) text run 1 at (37.50,90.00) startOffset 0 endOffset 3 width 45.00: "234"
+              RenderSVGContainer {g} at (403,225) size 102x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,120.00)}]
                 RenderSVGContainer {g} at (410,225) size 14x32 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,-10.00)}]
                   RenderSVGContainer {g} at (410,225) size 14x32
                     RenderSVGPath {line} at (415,225) size 4x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00]
@@ -300,12 +300,12 @@ layer at (0,0) size 800x600
                   RenderSVGContainer {g} at (485,258) size 14x32
                     RenderSVGPath {line} at (490,258) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00]
                     RenderSVGPath {rect} at (485,276) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
-                RenderSVGText {text} at (-8,-20) size 62x33 contains 1 chunk(s)
-                  RenderSVGInlineText {#text} at (0,0) size 62x33
-                    chunk 1 (middle anchor) text run 1 at (-7.65,-10.00) startOffset 0 endOffset 1 width 15.30: "1"
-                    chunk 1 (middle anchor) text run 1 at (7.65,-5.00) startOffset 0 endOffset 1 width 15.30: "2"
-                    chunk 1 (middle anchor) text run 1 at (22.95,5.00) startOffset 0 endOffset 1 width 15.30: "3"
-                    chunk 1 (middle anchor) text run 1 at (38.25,10.00) startOffset 0 endOffset 1 width 15.30: "4"
+                RenderSVGText {text} at (-8,-20) size 61x33 contains 1 chunk(s)
+                  RenderSVGInlineText {#text} at (0,0) size 61x33
+                    chunk 1 (middle anchor) text run 1 at (-7.50,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
+                    chunk 1 (middle anchor) text run 1 at (7.50,-5.00) startOffset 0 endOffset 1 width 15.00: "2"
+                    chunk 1 (middle anchor) text run 1 at (22.50,5.00) startOffset 0 endOffset 1 width 15.00: "3"
+                    chunk 1 (middle anchor) text run 1 at (37.50,10.00) startOffset 0 endOffset 1 width 15.00: "4"
               RenderSVGContainer {g} at (420,275) size 77x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,150.00)}]
                 RenderSVGContainer {g} at (426,275) size 14x32 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,-10.00)}]
                   RenderSVGContainer {g} at (426,275) size 14x32
@@ -325,11 +325,11 @@ layer at (0,0) size 800x600
                     RenderSVGPath {rect} at (476,326) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
                 RenderSVGText {text} at (2,-20) size 46x33 contains 1 chunk(s)
                   RenderSVGInlineText {#text} at (0,0) size 46x33
-                    chunk 1 (middle anchor) text run 1 at (2.35,-10.00) startOffset 0 endOffset 1 width 15.30: "1"
-                    chunk 1 (middle anchor) text run 1 at (12.35,-5.00) startOffset 0 endOffset 1 width 15.30: "2"
-                    chunk 1 (middle anchor) text run 1 at (22.35,5.00) startOffset 0 endOffset 1 width 15.30: "3"
-                    chunk 1 (middle anchor) text run 1 at (32.35,10.00) startOffset 0 endOffset 1 width 15.30: "4"
-              RenderSVGContainer {g} at (420,325) size 95x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,180.00)}]
+                    chunk 1 (middle anchor) text run 1 at (2.50,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
+                    chunk 1 (middle anchor) text run 1 at (12.50,-5.00) startOffset 0 endOffset 1 width 15.00: "2"
+                    chunk 1 (middle anchor) text run 1 at (22.50,5.00) startOffset 0 endOffset 1 width 15.00: "3"
+                    chunk 1 (middle anchor) text run 1 at (32.50,10.00) startOffset 0 endOffset 1 width 15.00: "4"
+              RenderSVGContainer {g} at (420,325) size 94x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,180.00)}]
                 RenderSVGContainer {g} at (426,325) size 14x32 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,-10.00)}]
                   RenderSVGContainer {g} at (426,325) size 14x32
                     RenderSVGPath {line} at (431,325) size 4x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00]
@@ -346,13 +346,13 @@ layer at (0,0) size 800x600
                   RenderSVGContainer {g} at (493,358) size 14x32
                     RenderSVGPath {line} at (498,358) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00]
                     RenderSVGPath {rect} at (493,376) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
-                RenderSVGText {text} at (2,-20) size 57x33 contains 1 chunk(s)
-                  RenderSVGInlineText {#text} at (0,0) size 57x33
-                    chunk 1 (middle anchor) text run 1 at (2.35,-10.00) startOffset 0 endOffset 1 width 15.30: "1"
-                    chunk 1 (middle anchor) text run 1 at (12.35,-5.00) startOffset 0 endOffset 1 width 15.30: "2"
-                    chunk 1 (middle anchor) text run 1 at (27.65,5.00) startOffset 0 endOffset 1 width 15.30: "3"
-                    chunk 1 (middle anchor) text run 1 at (42.95,10.00) startOffset 0 endOffset 1 width 15.30: "4"
-              RenderSVGContainer {g} at (403,375) size 79x57 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,210.00)}]
+                RenderSVGText {text} at (2,-20) size 56x33 contains 1 chunk(s)
+                  RenderSVGInlineText {#text} at (0,0) size 56x33
+                    chunk 1 (middle anchor) text run 1 at (2.50,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
+                    chunk 1 (middle anchor) text run 1 at (12.50,-5.00) startOffset 0 endOffset 1 width 15.00: "2"
+                    chunk 1 (middle anchor) text run 1 at (27.50,5.00) startOffset 0 endOffset 1 width 15.00: "3"
+                    chunk 1 (middle anchor) text run 1 at (42.50,10.00) startOffset 0 endOffset 1 width 15.00: "4"
+              RenderSVGContainer {g} at (403,375) size 77x57 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,210.00)}]
                 RenderSVGContainer {g} at (410,375) size 14x32 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,-10.00)}]
                   RenderSVGContainer {g} at (410,375) size 14x32
                     RenderSVGPath {line} at (415,375) size 4x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00]
@@ -361,10 +361,10 @@ layer at (0,0) size 800x600
                   RenderSVGContainer {g} at (435,400) size 14x32
                     RenderSVGPath {line} at (440,400) size 4x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00]
                     RenderSVGPath {rect} at (435,418) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
-                RenderSVGText {text} at (-8,-20) size 47x28 contains 1 chunk(s)
-                  RenderSVGInlineText {#text} at (0,0) size 47x28
-                    chunk 1 (middle anchor) text run 1 at (-7.65,-10.00) startOffset 0 endOffset 1 width 15.30: "1"
-                    chunk 1 (middle anchor) text run 1 at (-7.65,5.00) startOffset 0 endOffset 3 width 45.90: "234"
+                RenderSVGText {text} at (-8,-20) size 46x28 contains 1 chunk(s)
+                  RenderSVGInlineText {#text} at (0,0) size 46x28
+                    chunk 1 (middle anchor) text run 1 at (-7.50,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
+                    chunk 1 (middle anchor) text run 1 at (-7.50,5.00) startOffset 0 endOffset 3 width 45.00: "234"
               RenderSVGContainer {g} at (420,425) size 77x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,240.00)}]
                 RenderSVGContainer {g} at (426,425) size 14x32 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,-10.00)}]
                   RenderSVGContainer {g} at (426,425) size 14x32
@@ -384,10 +384,10 @@ layer at (0,0) size 800x600
                     RenderSVGPath {rect} at (476,451) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
                 RenderSVGText {text} at (2,-20) size 46x18 contains 1 chunk(s)
                   RenderSVGInlineText {#text} at (0,0) size 46x18
-                    chunk 1 (middle anchor) text run 1 at (2.35,-10.00) startOffset 0 endOffset 1 width 15.30: "1"
-                    chunk 1 (middle anchor) text run 1 at (12.35,-5.00) startOffset 0 endOffset 1 width 15.30: "2"
-                    chunk 1 (middle anchor) text run 1 at (22.35,-5.00) startOffset 0 endOffset 1 width 15.30: "3"
-                    chunk 1 (middle anchor) text run 1 at (32.35,-5.00) startOffset 0 endOffset 1 width 15.30: "4"
+                    chunk 1 (middle anchor) text run 1 at (2.50,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
+                    chunk 1 (middle anchor) text run 1 at (12.50,-5.00) startOffset 0 endOffset 1 width 15.00: "2"
+                    chunk 1 (middle anchor) text run 1 at (22.50,-5.00) startOffset 0 endOffset 1 width 15.00: "3"
+                    chunk 1 (middle anchor) text run 1 at (32.50,-5.00) startOffset 0 endOffset 1 width 15.00: "4"
               RenderSVGContainer {g} at (420,475) size 135x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,270.00)}]
                 RenderSVGContainer {g} at (426,475) size 14x32 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,-10.00)}]
                   RenderSVGContainer {g} at (426,475) size 14x32
@@ -399,9 +399,9 @@ layer at (0,0) size 800x600
                     RenderSVGPath {rect} at (510,501) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
                 RenderSVGText {text} at (2,-20) size 81x18 contains 1 chunk(s)
                   RenderSVGInlineText {#text} at (0,0) size 81x18
-                    chunk 1 (middle anchor) text run 1 at (2.35,-10.00) startOffset 0 endOffset 1 width 15.30: "1"
-                    chunk 1 (middle anchor) text run 1 at (37.05,-5.00) startOffset 0 endOffset 3 width 45.90: "234"
-      RenderSVGContainer {g} at (480,13) size 210x537 [transform={m=((1.00,0.00)(0.00,1.00)) t=(350.00,40.00)}]
+                    chunk 1 (middle anchor) text run 1 at (2.50,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
+                    chunk 1 (middle anchor) text run 1 at (37.50,-5.00) startOffset 0 endOffset 3 width 45.00: "234"
+      RenderSVGContainer {g} at (483,13) size 207x537 [transform={m=((1.00,0.00)(0.00,1.00)) t=(350.00,40.00)}]
         RenderSVGText {text} at (-38,-32) size 76x20 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,0) size 76x20
             chunk 1 (middle anchor) text run 1 at (-37.80,-17.00) startOffset 0 endOffset 11 width 75.60: "text-anchor"
@@ -409,16 +409,16 @@ layer at (0,0) size 800x600
           RenderSVGInlineText {#text} at (0,0) size 24x20
             chunk 1 (middle anchor) text run 1 at (-12.00,-3.00) startOffset 0 endOffset 3 width 24.00: "end"
         RenderSVGPath {line} at (581,83) size 4x467 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#000000]}] [x1=0.00] [y1=10.00] [x2=0.00] [y2=290.00]
-        RenderSVGContainer {use} at (480,91) size 210x424
-          RenderSVGContainer {g} at (480,91) size 210x424
-            RenderSVGContainer {g} at (480,91) size 210x424
+        RenderSVGContainer {use} at (483,91) size 207x424
+          RenderSVGContainer {g} at (483,91) size 207x424
+            RenderSVGContainer {g} at (483,91) size 207x424
               RenderSVGContainer {g} at (576,91) size 14x33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,30.00)}]
                 RenderSVGContainer {g} at (576,91) size 14x33
                   RenderSVGPath {line} at (581,91) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00]
                   RenderSVGPath {rect} at (576,110) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
-              RenderSVGText {text} at (-62,20) size 62x13 contains 1 chunk(s)
-                RenderSVGInlineText {#text} at (0,0) size 62x13
-                  chunk 1 (end anchor) text run 1 at (-61.20,30.00) startOffset 0 endOffset 4 width 61.20: "1234"
+              RenderSVGText {text} at (-60,20) size 60x13 contains 1 chunk(s)
+                RenderSVGInlineText {#text} at (0,0) size 60x13
+                  chunk 1 (end anchor) text run 1 at (-60.00,30.00) startOffset 0 endOffset 4 width 60.00: "1234"
               RenderSVGContainer {g} at (593,141) size 14x33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,60.00)}]
                 RenderSVGContainer {g} at (593,141) size 14x33
                   RenderSVGPath {line} at (598,141) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00]
@@ -435,12 +435,12 @@ layer at (0,0) size 800x600
                 RenderSVGContainer {g} at (643,141) size 14x33
                   RenderSVGPath {line} at (648,141) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00]
                   RenderSVGPath {rect} at (643,160) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
-              RenderSVGText {text} at (-6,50) size 46x13 contains 1 chunk(s)
-                RenderSVGInlineText {#text} at (0,0) size 46x13
-                  chunk 1 (end anchor) text run 1 at (-5.30,60.00) startOffset 0 endOffset 1 width 15.30: "1"
-                  chunk 1 (end anchor) text run 1 at (4.70,60.00) startOffset 0 endOffset 1 width 15.30: "2"
-                  chunk 1 (end anchor) text run 1 at (14.70,60.00) startOffset 0 endOffset 1 width 15.30: "3"
-                  chunk 1 (end anchor) text run 1 at (24.70,60.00) startOffset 0 endOffset 1 width 15.30: "4"
+              RenderSVGText {text} at (-5,50) size 45x13 contains 1 chunk(s)
+                RenderSVGInlineText {#text} at (0,0) size 45x13
+                  chunk 1 (end anchor) text run 1 at (-5.00,60.00) startOffset 0 endOffset 1 width 15.00: "1"
+                  chunk 1 (end anchor) text run 1 at (5.00,60.00) startOffset 0 endOffset 1 width 15.00: "2"
+                  chunk 1 (end anchor) text run 1 at (15.00,60.00) startOffset 0 endOffset 1 width 15.00: "3"
+                  chunk 1 (end anchor) text run 1 at (25.00,60.00) startOffset 0 endOffset 1 width 15.00: "4"
               RenderSVGContainer {g} at (593,191) size 14x33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,90.00)}]
                 RenderSVGContainer {g} at (593,191) size 14x33
                   RenderSVGPath {line} at (598,191) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00]
@@ -449,11 +449,11 @@ layer at (0,0) size 800x600
                 RenderSVGContainer {g} at (676,191) size 14x33
                   RenderSVGPath {line} at (681,191) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00]
                   RenderSVGPath {rect} at (676,210) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
-              RenderSVGText {text} at (-6,80) size 66x13 contains 1 chunk(s)
-                RenderSVGInlineText {#text} at (0,0) size 66x13
-                  chunk 1 (end anchor) text run 1 at (-5.30,90.00) startOffset 0 endOffset 1 width 15.30: "1"
-                  chunk 1 (end anchor) text run 1 at (14.10,90.00) startOffset 0 endOffset 3 width 45.90: "234"
-              RenderSVGContainer {g} at (556,225) size 109x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,120.00)}]
+              RenderSVGText {text} at (-5,80) size 65x13 contains 1 chunk(s)
+                RenderSVGInlineText {#text} at (0,0) size 65x13
+                  chunk 1 (end anchor) text run 1 at (-5.00,90.00) startOffset 0 endOffset 1 width 15.00: "1"
+                  chunk 1 (end anchor) text run 1 at (15.00,90.00) startOffset 0 endOffset 3 width 45.00: "234"
+              RenderSVGContainer {g} at (558,225) size 107x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,120.00)}]
                 RenderSVGContainer {g} at (576,225) size 14x32 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,-10.00)}]
                   RenderSVGContainer {g} at (576,225) size 14x32
                     RenderSVGPath {line} at (581,225) size 4x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00]
@@ -470,13 +470,13 @@ layer at (0,0) size 800x600
                   RenderSVGContainer {g} at (651,258) size 14x32
                     RenderSVGPath {line} at (656,258) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00]
                     RenderSVGPath {rect} at (651,276) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
-                RenderSVGText {text} at (-16,-20) size 62x33 contains 1 chunk(s)
-                  RenderSVGInlineText {#text} at (0,0) size 62x33
-                    chunk 1 (end anchor) text run 1 at (-15.30,-10.00) startOffset 0 endOffset 1 width 15.30: "1"
-                    chunk 1 (end anchor) text run 1 at (0.00,-5.00) startOffset 0 endOffset 1 width 15.30: "2"
-                    chunk 1 (end anchor) text run 1 at (15.30,5.00) startOffset 0 endOffset 1 width 15.30: "3"
-                    chunk 1 (end anchor) text run 1 at (30.60,10.00) startOffset 0 endOffset 1 width 15.30: "4"
-              RenderSVGContainer {g} at (573,275) size 84x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,150.00)}]
+                RenderSVGText {text} at (-15,-20) size 60x33 contains 1 chunk(s)
+                  RenderSVGInlineText {#text} at (0,0) size 60x33
+                    chunk 1 (end anchor) text run 1 at (-15.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
+                    chunk 1 (end anchor) text run 1 at (0.00,-5.00) startOffset 0 endOffset 1 width 15.00: "2"
+                    chunk 1 (end anchor) text run 1 at (15.00,5.00) startOffset 0 endOffset 1 width 15.00: "3"
+                    chunk 1 (end anchor) text run 1 at (30.00,10.00) startOffset 0 endOffset 1 width 15.00: "4"
+              RenderSVGContainer {g} at (575,275) size 82x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,150.00)}]
                 RenderSVGContainer {g} at (593,275) size 14x32 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,-10.00)}]
                   RenderSVGContainer {g} at (593,275) size 14x32
                     RenderSVGPath {line} at (598,275) size 4x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00]
@@ -493,13 +493,13 @@ layer at (0,0) size 800x600
                   RenderSVGContainer {g} at (643,308) size 14x32
                     RenderSVGPath {line} at (648,308) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00]
                     RenderSVGPath {rect} at (643,326) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
-                RenderSVGText {text} at (-6,-20) size 46x33 contains 1 chunk(s)
-                  RenderSVGInlineText {#text} at (0,0) size 46x33
-                    chunk 1 (end anchor) text run 1 at (-5.30,-10.00) startOffset 0 endOffset 1 width 15.30: "1"
-                    chunk 1 (end anchor) text run 1 at (4.70,-5.00) startOffset 0 endOffset 1 width 15.30: "2"
-                    chunk 1 (end anchor) text run 1 at (14.70,5.00) startOffset 0 endOffset 1 width 15.30: "3"
-                    chunk 1 (end anchor) text run 1 at (24.70,10.00) startOffset 0 endOffset 1 width 15.30: "4"
-              RenderSVGContainer {g} at (573,325) size 101x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,180.00)}]
+                RenderSVGText {text} at (-5,-20) size 45x33 contains 1 chunk(s)
+                  RenderSVGInlineText {#text} at (0,0) size 45x33
+                    chunk 1 (end anchor) text run 1 at (-5.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
+                    chunk 1 (end anchor) text run 1 at (5.00,-5.00) startOffset 0 endOffset 1 width 15.00: "2"
+                    chunk 1 (end anchor) text run 1 at (15.00,5.00) startOffset 0 endOffset 1 width 15.00: "3"
+                    chunk 1 (end anchor) text run 1 at (25.00,10.00) startOffset 0 endOffset 1 width 15.00: "4"
+              RenderSVGContainer {g} at (575,325) size 99x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,180.00)}]
                 RenderSVGContainer {g} at (593,325) size 14x32 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,-10.00)}]
                   RenderSVGContainer {g} at (593,325) size 14x32
                     RenderSVGPath {line} at (598,325) size 4x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00]
@@ -516,13 +516,13 @@ layer at (0,0) size 800x600
                   RenderSVGContainer {g} at (660,358) size 14x32
                     RenderSVGPath {line} at (665,358) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00]
                     RenderSVGPath {rect} at (660,376) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
-                RenderSVGText {text} at (-6,-20) size 57x33 contains 1 chunk(s)
-                  RenderSVGInlineText {#text} at (0,0) size 57x33
-                    chunk 1 (end anchor) text run 1 at (-5.30,-10.00) startOffset 0 endOffset 1 width 15.30: "1"
-                    chunk 1 (end anchor) text run 1 at (4.70,-5.00) startOffset 0 endOffset 1 width 15.30: "2"
-                    chunk 1 (end anchor) text run 1 at (20.00,5.00) startOffset 0 endOffset 1 width 15.30: "3"
-                    chunk 1 (end anchor) text run 1 at (35.30,10.00) startOffset 0 endOffset 1 width 15.30: "4"
-              RenderSVGContainer {g} at (531,375) size 84x57 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,210.00)}]
+                RenderSVGText {text} at (-5,-20) size 55x33 contains 1 chunk(s)
+                  RenderSVGInlineText {#text} at (0,0) size 55x33
+                    chunk 1 (end anchor) text run 1 at (-5.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
+                    chunk 1 (end anchor) text run 1 at (5.00,-5.00) startOffset 0 endOffset 1 width 15.00: "2"
+                    chunk 1 (end anchor) text run 1 at (20.00,5.00) startOffset 0 endOffset 1 width 15.00: "3"
+                    chunk 1 (end anchor) text run 1 at (35.00,10.00) startOffset 0 endOffset 1 width 15.00: "4"
+              RenderSVGContainer {g} at (533,375) size 82x57 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,210.00)}]
                 RenderSVGContainer {g} at (576,375) size 14x32 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,-10.00)}]
                   RenderSVGContainer {g} at (576,375) size 14x32
                     RenderSVGPath {line} at (581,375) size 4x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00]
@@ -531,11 +531,11 @@ layer at (0,0) size 800x600
                   RenderSVGContainer {g} at (601,400) size 14x32
                     RenderSVGPath {line} at (606,400) size 4x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00]
                     RenderSVGPath {rect} at (601,418) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
-                RenderSVGText {text} at (-31,-20) size 47x28 contains 1 chunk(s)
-                  RenderSVGInlineText {#text} at (15,0) size 47x28
-                    chunk 1 (end anchor) text run 1 at (-15.30,-10.00) startOffset 0 endOffset 1 width 15.30: "1"
-                    chunk 1 (end anchor) text run 1 at (-30.60,5.00) startOffset 0 endOffset 3 width 45.90: "234"
-              RenderSVGContainer {g} at (573,425) size 84x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,240.00)}]
+                RenderSVGText {text} at (-30,-20) size 45x28 contains 1 chunk(s)
+                  RenderSVGInlineText {#text} at (15,0) size 45x28
+                    chunk 1 (end anchor) text run 1 at (-15.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
+                    chunk 1 (end anchor) text run 1 at (-30.00,5.00) startOffset 0 endOffset 3 width 45.00: "234"
+              RenderSVGContainer {g} at (575,425) size 82x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,240.00)}]
                 RenderSVGContainer {g} at (593,425) size 14x32 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,-10.00)}]
                   RenderSVGContainer {g} at (593,425) size 14x32
                     RenderSVGPath {line} at (598,425) size 4x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00]
@@ -552,13 +552,13 @@ layer at (0,0) size 800x600
                   RenderSVGContainer {g} at (643,433) size 14x32
                     RenderSVGPath {line} at (648,433) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00]
                     RenderSVGPath {rect} at (643,451) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
-                RenderSVGText {text} at (-6,-20) size 46x18 contains 1 chunk(s)
-                  RenderSVGInlineText {#text} at (0,0) size 46x18
-                    chunk 1 (end anchor) text run 1 at (-5.30,-10.00) startOffset 0 endOffset 1 width 15.30: "1"
-                    chunk 1 (end anchor) text run 1 at (4.70,-5.00) startOffset 0 endOffset 1 width 15.30: "2"
-                    chunk 1 (end anchor) text run 1 at (14.70,-5.00) startOffset 0 endOffset 1 width 15.30: "3"
-                    chunk 1 (end anchor) text run 1 at (24.70,-5.00) startOffset 0 endOffset 1 width 15.30: "4"
-              RenderSVGContainer {g} at (573,475) size 117x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,270.00)}]
+                RenderSVGText {text} at (-5,-20) size 45x18 contains 1 chunk(s)
+                  RenderSVGInlineText {#text} at (0,0) size 45x18
+                    chunk 1 (end anchor) text run 1 at (-5.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
+                    chunk 1 (end anchor) text run 1 at (5.00,-5.00) startOffset 0 endOffset 1 width 15.00: "2"
+                    chunk 1 (end anchor) text run 1 at (15.00,-5.00) startOffset 0 endOffset 1 width 15.00: "3"
+                    chunk 1 (end anchor) text run 1 at (25.00,-5.00) startOffset 0 endOffset 1 width 15.00: "4"
+              RenderSVGContainer {g} at (575,475) size 115x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,270.00)}]
                 RenderSVGContainer {g} at (593,475) size 14x32 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,-10.00)}]
                   RenderSVGContainer {g} at (593,475) size 14x32
                     RenderSVGPath {line} at (598,475) size 4x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00]
@@ -567,10 +567,10 @@ layer at (0,0) size 800x600
                   RenderSVGContainer {g} at (676,483) size 14x32
                     RenderSVGPath {line} at (681,483) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00]
                     RenderSVGPath {rect} at (676,501) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
-                RenderSVGText {text} at (-6,-20) size 66x18 contains 1 chunk(s)
-                  RenderSVGInlineText {#text} at (0,0) size 66x18
-                    chunk 1 (end anchor) text run 1 at (-5.30,-10.00) startOffset 0 endOffset 1 width 15.30: "1"
-                    chunk 1 (end anchor) text run 1 at (14.10,-5.00) startOffset 0 endOffset 3 width 45.90: "234"
+                RenderSVGText {text} at (-5,-20) size 65x18 contains 1 chunk(s)
+                  RenderSVGInlineText {#text} at (0,0) size 65x18
+                    chunk 1 (end anchor) text run 1 at (-5.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
+                    chunk 1 (end anchor) text run 1 at (15.00,-5.00) startOffset 0 endOffset 3 width 45.00: "234"
     RenderSVGText {text} at (10,313) size 269x48 contains 1 chunk(s)
       RenderSVGInlineText {#text} at (0,0) size 269x48
         chunk 1 text run 1 at (10.00,350.00) startOffset 0 endOffset 16 width 268.20: "$Revision: 1.8 $"
index bd9d3fca604011501eaa6e6b4c9141c6b0d72151..8b6e11f7ba7bd55f13ad6b109e649974b4101a1a 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 b08463ac8a17091a02c4c81f0418ea1a675bed7a..4d4d045b1fda8086113950d2d8997614a8b615d4 100644 (file)
@@ -50,14 +50,14 @@ layer at (0,0) size 800x600
               RenderSVGContainer {g} at (410,91) size 14x33
                 RenderSVGPath {line} at (415,91) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00]
                 RenderSVGPath {rect} at (410,110) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
-          RenderSVGText {text} at (10,-10) size 136x13 contains 1 chunk(s)
-            RenderSVGInlineText {#text} at (0,0) size 136x13
-              chunk 1 text run 1 at (10.00,0.00) startOffset 0 endOffset 2 width 15.30: "fi"
-              chunk 1 text run 1 at (40.00,0.00) startOffset 0 endOffset 1 width 15.30: "1"
-              chunk 1 text run 1 at (70.00,0.00) startOffset 0 endOffset 1 width 15.30: "2"
-              chunk 1 text run 1 at (100.00,0.00) startOffset 0 endOffset 1 width 15.30: "3"
-              chunk 1 text run 1 at (130.00,0.00) startOffset 0 endOffset 1 width 15.30: "4"
-        RenderSVGContainer {g} at (193,141) size 136x133 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,80.00)}]
+          RenderSVGText {text} at (10,-10) size 135x13 contains 1 chunk(s)
+            RenderSVGInlineText {#text} at (0,0) size 135x13
+              chunk 1 text run 1 at (10.00,0.00) startOffset 0 endOffset 2 width 15.00: "fi"
+              chunk 1 text run 1 at (40.00,0.00) startOffset 0 endOffset 1 width 15.00: "1"
+              chunk 1 text run 1 at (70.00,0.00) startOffset 0 endOffset 1 width 15.00: "2"
+              chunk 1 text run 1 at (100.00,0.00) startOffset 0 endOffset 1 width 15.00: "3"
+              chunk 1 text run 1 at (130.00,0.00) startOffset 0 endOffset 1 width 15.00: "4"
+        RenderSVGContainer {g} at (193,141) size 132x133 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,80.00)}]
           RenderSVGContainer {use} at (193,141) size 14x33
             RenderSVGContainer {g} at (193,141) size 14x33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,-10.00)}]
               RenderSVGContainer {g} at (193,141) size 14x33
@@ -88,13 +88,13 @@ layer at (0,0) size 800x600
               RenderSVGContainer {g} at (293,208) size 14x32
                 RenderSVGPath {line} at (298,208) size 4x26 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00]
                 RenderSVGPath {rect} at (293,226) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
-          RenderSVGText {text} at (0,-20) size 77x53 contains 1 chunk(s)
-            RenderSVGInlineText {#text} at (0,0) size 77x53
-              chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 2 width 15.30: "fi"
-              chunk 1 text run 1 at (15.30,0.00) startOffset 0 endOffset 1 width 15.30: "1"
-              chunk 1 text run 1 at (30.60,10.00) startOffset 0 endOffset 1 width 15.30: "2"
-              chunk 1 text run 1 at (45.90,20.00) startOffset 0 endOffset 1 width 15.30: "3"
-              chunk 1 text run 1 at (61.20,30.00) startOffset 0 endOffset 1 width 15.30: "4"
+          RenderSVGText {text} at (0,-20) size 75x53 contains 1 chunk(s)
+            RenderSVGInlineText {#text} at (0,0) size 75x53
+              chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 2 width 15.00: "fi"
+              chunk 1 text run 1 at (15.00,0.00) startOffset 0 endOffset 1 width 15.00: "1"
+              chunk 1 text run 1 at (30.00,10.00) startOffset 0 endOffset 1 width 15.00: "2"
+              chunk 1 text run 1 at (45.00,20.00) startOffset 0 endOffset 1 width 15.00: "3"
+              chunk 1 text run 1 at (60.00,30.00) startOffset 0 endOffset 1 width 15.00: "4"
         RenderSVGContainer {g} at (210,308) size 297x132 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,180.00)}]
           RenderSVGContainer {use} at (210,308) size 14x32
             RenderSVGContainer {g} at (210,308) size 14x32 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,-10.00)}]
@@ -126,13 +126,13 @@ layer at (0,0) size 800x600
               RenderSVGContainer {g} at (410,375) size 14x32
                 RenderSVGPath {line} at (415,375) size 4x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [x1=0.00] [y1=0.00] [x2=0.00] [y2=-15.00]
                 RenderSVGPath {rect} at (410,393) size 14x14 [fill={[type=SOLID] [color=#8888FF]}] [x=-4.00] [y=-4.00] [width=8.00] [height=8.00]
-          RenderSVGText {text} at (10,-20) size 136x53 contains 1 chunk(s)
-            RenderSVGInlineText {#text} at (0,0) size 136x53
-              chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 2 width 15.30: "fi"
-              chunk 1 text run 1 at (40.00,0.00) startOffset 0 endOffset 1 width 15.30: "1"
-              chunk 1 text run 1 at (70.00,10.00) startOffset 0 endOffset 1 width 15.30: "2"
-              chunk 1 text run 1 at (100.00,20.00) startOffset 0 endOffset 1 width 15.30: "3"
-              chunk 1 text run 1 at (130.00,30.00) startOffset 0 endOffset 1 width 15.30: "4"
+          RenderSVGText {text} at (10,-20) size 135x53 contains 1 chunk(s)
+            RenderSVGInlineText {#text} at (0,0) size 135x53
+              chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 2 width 15.00: "fi"
+              chunk 1 text run 1 at (40.00,0.00) startOffset 0 endOffset 1 width 15.00: "1"
+              chunk 1 text run 1 at (70.00,10.00) startOffset 0 endOffset 1 width 15.00: "2"
+              chunk 1 text run 1 at (100.00,20.00) startOffset 0 endOffset 1 width 15.00: "3"
+              chunk 1 text run 1 at (130.00,30.00) startOffset 0 endOffset 1 width 15.00: "4"
     RenderSVGText {text} at (10,303) size 269x48 contains 1 chunk(s)
       RenderSVGInlineText {#text} at (0,0) size 269x48
         chunk 1 text run 1 at (10.00,340.00) startOffset 0 endOffset 16 width 268.20: "$Revision: 1.9 $"
index e5cc51eeba6d621544d38f0a1be4ad684d643dc2..490054fccae6983a8e8d6413dbf05d3592d8cec0 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/transforms/text-with-mask-with-svg-transform-expected.png and b/LayoutTests/platform/mac/svg/transforms/text-with-mask-with-svg-transform-expected.png differ
index 23e6d98ed0f360e5e3b74f592eb0140313f324bd..379f9d01433472fb73efafbf93915996cb405b8d 100644 (file)
@@ -38,12 +38,12 @@ layer at (0,0) size 800x600
         RenderSVGPath {rect} at (21,270) size 158x104 [fill={[type=SOLID] [color=#FFFFFF] [opacity=0.20]}] [x=60.00] [y=225.00] [width=200.00] [height=25.00]
         RenderSVGPath {rect} at (11,288) size 158x104 [fill={[type=SOLID] [color=#FFFFFF]}] [x=60.00] [y=250.00] [width=200.00] [height=25.00]
         RenderSVGPath {rect} at (0,306) size 157x103 [fill={[type=SOLID] [color=#FFFFFF] [opacity=0.70]}] [x=60.00] [y=275.00] [width=200.00] [height=25.00]
-      RenderSVGText {text} at (60,202) size 127x112 contains 1 chunk(s)
+      RenderSVGText {text} at (60,202) size 126x112 contains 1 chunk(s)
         [masker="mask3"] RenderSVGResourceMasker {mask} at (60,200) size 200x100
-        RenderSVGInlineText {#text} at (0,0) size 127x112
+        RenderSVGInlineText {#text} at (0,0) size 126x112
           [masker="mask3"] RenderSVGResourceMasker {mask} at (60,200) size 200x100
-          chunk 1 text run 1 at (60.00,280.00) startOffset 0 endOffset 2 width 81.25: "SV"
-          chunk 1 text run 2 at (145.65,280.00) startOffset 2 endOffset 3 width 40.52: "G"
+          chunk 1 text run 1 at (60.00,280.00) startOffset 0 endOffset 2 width 80.96: "SV"
+          chunk 1 text run 2 at (145.36,280.00) startOffset 2 endOffset 3 width 40.37: "G"
       RenderSVGText {text} at (200,214) size 204x14 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 204x14
           chunk 1 text run 1 at (200.00,225.00) startOffset 0 endOffset 36 width 204.00: "Text with mask containing rectangles"
index 3a9898715d730d4c4dee83369711cd2b2d9f0b75..970ad6ee57d2df5b1bd7fc8b2de777cda2ba7bc9 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/wicd/test-rightsizing-b-expected.png and b/LayoutTests/platform/mac/svg/wicd/test-rightsizing-b-expected.png differ
index 04450135285abba1547861042827b30688aeec33..4351cec179e1c3557e71d4c2a2a7f2be65d37bd1 100644 (file)
@@ -22,7 +22,7 @@ layer at (0,0) size 785x842
                 RenderSVGContainer {g} at (38,86) size 218x123
                   RenderSVGText {text} at (26,59) size 148x83 contains 1 chunk(s)
                     RenderSVGInlineText {#text} at (0,0) size 148x83
-                      chunk 1 (middle anchor) text run 1 at (26.65,125.00) startOffset 0 endOffset 3 width 146.70: "SVG"
+                      chunk 1 (middle anchor) text run 1 at (26.72,125.00) startOffset 0 endOffset 3 width 146.56: "SVG"
           RenderText {#text} at (294,280) size 4x17
             text run at (294,280) width 4: " "
           RenderEmbeddedObject {object} at (298,147) size 147x147 [bgcolor=#FF0000]
@@ -34,9 +34,9 @@ layer at (0,0) size 785x842
                 RenderSVGPath {rect} at (0,0) size 147x147 [fill={[type=SOLID] [color=#5588FF]}] [x=-3000.00] [y=-1000.00] [width=6200.00] [height=2200.00]
                 RenderSVGPath {circle} at (0,0) size 147x147 [fill={[type=SOLID] [color=#0000FF]}] [cx=100.00] [cy=100.00] [r=100.00]
                 RenderSVGContainer {g} at (19,44) size 109x61
-                  RenderSVGText {text} at (27,60) size 146x82 contains 1 chunk(s)
-                    RenderSVGInlineText {#text} at (0,0) size 146x82
-                      chunk 1 (middle anchor) text run 1 at (27.36,125.00) startOffset 0 endOffset 3 width 145.28: "SVG"
+                  RenderSVGText {text} at (26,60) size 148x82 contains 1 chunk(s)
+                    RenderSVGInlineText {#text} at (0,0) size 148x82
+                      chunk 1 (middle anchor) text run 1 at (26.72,125.00) startOffset 0 endOffset 3 width 146.56: "SVG"
           RenderText {#text} at (445,280) size 4x17
             text run at (445,280) width 4: " "
           RenderEmbeddedObject {object} at (449,221) size 73x73 [bgcolor=#FF0000]
@@ -48,9 +48,9 @@ layer at (0,0) size 785x842
                 RenderSVGPath {rect} at (0,0) size 73x73 [fill={[type=SOLID] [color=#5588FF]}] [x=-3000.00] [y=-1000.00] [width=6200.00] [height=2200.00]
                 RenderSVGPath {circle} at (0,0) size 73x73 [fill={[type=SOLID] [color=#0000FF]}] [cx=100.00] [cy=100.00] [r=100.00]
                 RenderSVGContainer {g} at (9,21) size 55x31
-                  RenderSVGText {text} at (25,58) size 150x84 contains 1 chunk(s)
-                    RenderSVGInlineText {#text} at (0,0) size 150x84
-                      chunk 1 (middle anchor) text run 1 at (25.43,125.00) startOffset 0 endOffset 3 width 149.14: "SVG"
+                  RenderSVGText {text} at (26,58) size 148x84 contains 1 chunk(s)
+                    RenderSVGInlineText {#text} at (0,0) size 148x84
+                      chunk 1 (middle anchor) text run 1 at (26.72,125.00) startOffset 0 endOffset 3 width 146.56: "SVG"
           RenderText {#text} at (522,280) size 4x17
             text run at (522,280) width 4: " "
           RenderEmbeddedObject {object} at (526,258) size 36x36 [bgcolor=#FF0000]
@@ -62,9 +62,9 @@ layer at (0,0) size 785x842
                 RenderSVGPath {rect} at (0,0) size 36x36 [fill={[type=SOLID] [color=#5588FF]}] [x=-3000.00] [y=-1000.00] [width=6200.00] [height=2200.00]
                 RenderSVGPath {circle} at (0,0) size 36x36 [fill={[type=SOLID] [color=#0000FF]}] [cx=100.00] [cy=100.00] [r=100.00]
                 RenderSVGContainer {g} at (4,10) size 28x16
-                  RenderSVGText {text} at (24,57) size 152x86 contains 1 chunk(s)
-                    RenderSVGInlineText {#text} at (0,0) size 152x86
-                      chunk 1 (middle anchor) text run 1 at (24.39,125.00) startOffset 0 endOffset 3 width 151.22: "SVG"
+                  RenderSVGText {text} at (26,57) size 148x86 contains 1 chunk(s)
+                    RenderSVGInlineText {#text} at (0,0) size 148x86
+                      chunk 1 (middle anchor) text run 1 at (26.72,125.00) startOffset 0 endOffset 3 width 146.56: "SVG"
           RenderText {#text} at (0,0) size 0x0
         RenderBlock {p} at (0,366) size 678x64
           RenderText {#text} at (0,0) size 672x32
index cdb72b9f7e54265f5b92245ad6507d5639b7b5b9..f05358dd7200c4f31fcaad54e66af7ae13d9e48f 100644 (file)
@@ -29,7 +29,6 @@
                 d="M236 106v1344h-177v106h361v-659q54 100 137.5 147.5t206.5 47.5q196 0 320 -155t124 -405t-124 -405.5t-320 -155.5q-123 0 -206.5 47.5t-137.5 147.5v-166h-361v106h177zM420 479q0 -192 73.5 -292.5t213.5 -100.5q141 0 213.5 113t72.5 333q0 221 -72.5 333t-213.5 112q-140 0 -213.5 -101t-73.5 -292v-105z" />
             <glyph glyph-name="c" unicode="c" horiz-adv-x="1147"
                 d="M1053 319q-39 -170 -150 -259t-287 -89q-232 0 -373 153.5t-141 407.5q0 255 141 407.5t373 152.5q101 0 201 -23.5t201 -71.5v-272h-107q-21 140 -91.5 204t-201.5 64q-149 0 -225 -115.5t-76 -345.5t75.5 -346t225.5 -116q119 0 190 62t97 187h148z" />
-            <glyph glyph-name="ellipsis" unicode="&#x2026;" horiz-adv-x="1638" d="M133 0v268h279v-268h-279zM680 0v268h278v-268h-278zM1225 0v268h278v-268h-278z" />
         </font>
     </defs>
-</svg>
+</svg>
\ No newline at end of file
diff --git a/LayoutTests/svg/custom/svg-fonts-fallback.xhtml b/LayoutTests/svg/custom/svg-fonts-fallback.xhtml
deleted file mode 100644 (file)
index cd9f8c4..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<title>SVG Font Test</title>
-<style>
-@font-face {
-    font-family: 'TestFont1';
-    src: url('#TestFont1') format(svg);
-}
-
-@font-face {
-    font-family: 'TestFont2';
-    src: url('#TestFont2') format(svg);
-}
-
-@font-face {
-    font-family: 'TestFont3';
-    src: url('#TestFont3') format(svg);
-}
-</style>
-</head>
-<body>
-<svg xmlns="http://www.w3.org/2000/svg" style="display: none">
-    <defs>
-        <font id="TestFont1">
-            <font-face font-family="TestFont1" font-weight="normal" font-style="normal" font-variant="normal" font-stretch="normal" units-per-em="2048.000000" x-height="987.500000" cap-height="1558.500000" ascent="2127.000000" descent="532.000000"/>
-            <missing-glyph d="M 0.000000 0.000000 L 987.500000 0.000000 L 987.500000 1558.500000 L 0.000000 1558.500000 Z M 0.000000 0.000000 " horiz-adv-x="987.500000"/>        
-            <glyph unicode="a" d="M 860.000000 974.000000 L 1086.000000 974.000000 L 1086.000000 0.000000 L 860.000000 0.000000 L 860.000000 102.000000 C 767.332886 15.332900 667.667175 -28.000000 561.000000 -28.000000 C 426.332672 -28.000000 315.000427 20.666180 227.000000 118.000000 C 139.666229 217.333832 96.000000 341.332581 96.000000 490.000000 C 96.000000 636.000732 139.666229 757.666199 227.000000 855.000000 C 314.333771 952.333801 423.666016 1001.000000 555.000000 1001.000000 C 668.333923 1001.000000 769.999573 954.333801 860.000000 861.000000 Z M 326.000000 490.000000 C 326.000000 396.666199 350.999756 320.666962 401.000000 262.000000 C 452.333588 202.666367 516.999634 173.000000 595.000000 173.000000 C 678.333740 173.000000 745.666382 201.666382 797.000000 259.000000 C 848.333618 318.333618 874.000000 393.666199 874.000000 485.000000 C 874.000000 576.333801 848.333618 651.666382 797.000000 711.000000 C 745.666382 769.000305 679.000427 798.000000 597.000000 798.000000 C 519.666260 798.000000 455.000275 768.666931 403.000000 710.000000 C 351.666412 650.666382 326.000000 577.333740 326.000000 490.000000 Z M 1228.000000 0.000000 " horiz-adv-x="1228"/>
-            <glyph unicode=" " d="M 632.000000 0.000000 " horiz-adv-x="632"/>
-        </font>
-
-        <!-- Same as TestFont1, but without a missing-glyph element and one additional glyph -->
-        <font id="TestFont2">
-            <font-face font-family="TestFont2" font-weight="normal" font-style="normal" font-variant="normal" font-stretch="normal" units-per-em="2048.000000" x-height="987.500000" cap-height="1558.500000" ascent="2127.000000" descent="532.000000"/>
-            <glyph unicode="a" d="M 860.000000 974.000000 L 1086.000000 974.000000 L 1086.000000 0.000000 L 860.000000 0.000000 L 860.000000 102.000000 C 767.332886 15.332900 667.667175 -28.000000 561.000000 -28.000000 C 426.332672 -28.000000 315.000427 20.666180 227.000000 118.000000 C 139.666229 217.333832 96.000000 341.332581 96.000000 490.000000 C 96.000000 636.000732 139.666229 757.666199 227.000000 855.000000 C 314.333771 952.333801 423.666016 1001.000000 555.000000 1001.000000 C 668.333923 1001.000000 769.999573 954.333801 860.000000 861.000000 Z M 326.000000 490.000000 C 326.000000 396.666199 350.999756 320.666962 401.000000 262.000000 C 452.333588 202.666367 516.999634 173.000000 595.000000 173.000000 C 678.333740 173.000000 745.666382 201.666382 797.000000 259.000000 C 848.333618 318.333618 874.000000 393.666199 874.000000 485.000000 C 874.000000 576.333801 848.333618 651.666382 797.000000 711.000000 C 745.666382 769.000305 679.000427 798.000000 597.000000 798.000000 C 519.666260 798.000000 455.000275 768.666931 403.000000 710.000000 C 351.666412 650.666382 326.000000 577.333740 326.000000 490.000000 Z M 1228.000000 0.000000 " horiz-adv-x="1228"/>
-            <glyph unicode="o" d="M 96.000000 494.000000 C 96.000000 634.667358 146.332825 754.332825 247.000000 853.000000 C 347.667175 951.667175 470.332611 1001.000000 615.000000 1001.000000 C 760.334045 1001.000000 883.666138 951.333801 985.000000 852.000000 C 1085.000488 752.666199 1135.000000 630.667419 1135.000000 486.000000 C 1135.000000 339.999268 1084.667114 217.667160 984.000000 119.000000 C 882.666138 20.999510 758.334045 -28.000000 611.000000 -28.000000 C 464.999268 -28.000000 342.667145 21.999500 244.000000 122.000000 C 145.332840 220.667160 96.000000 344.665924 96.000000 494.000000 Z M 326.000000 490.000000 C 326.000000 392.666168 351.999725 315.666962 404.000000 259.000000 C 457.333588 201.666382 527.666260 173.000000 615.000000 173.000000 C 703.000427 173.000000 773.333069 201.333054 826.000000 258.000000 C 878.666931 314.666962 905.000000 390.332855 905.000000 485.000000 C 905.000000 579.667114 878.666931 655.333069 826.000000 712.000000 C 772.666382 769.333618 702.333740 798.000000 615.000000 798.000000 C 528.999573 798.000000 459.333588 769.333618 406.000000 712.000000 C 352.666412 654.666382 326.000000 580.667114 326.000000 490.000000 Z M 1231.000000 0.000000 " horiz-adv-x="1231"/>
-            <glyph unicode=" " d="M 632.000000 0.000000 " horiz-adv-x="632"/>
-        </font>
-
-        <!-- Same as TestFont1, but with one additional glyph -->
-        <font id="TestFont3">
-            <font-face font-family="TestFont3" font-weight="normal" font-style="normal" font-variant="normal" font-stretch="normal" units-per-em="2048.000000" x-height="987.500000" cap-height="1558.500000" ascent="2127.000000" descent="532.000000"/>
-            <missing-glyph d="M 0.000000 0.000000 L 987.500000 0.000000 L 987.500000 1558.500000 L 0.000000 1558.500000 Z M 0.000000 0.000000 " horiz-adv-x="987.500000"/>        
-            <glyph unicode="a" d="M 860.000000 974.000000 L 1086.000000 974.000000 L 1086.000000 0.000000 L 860.000000 0.000000 L 860.000000 102.000000 C 767.332886 15.332900 667.667175 -28.000000 561.000000 -28.000000 C 426.332672 -28.000000 315.000427 20.666180 227.000000 118.000000 C 139.666229 217.333832 96.000000 341.332581 96.000000 490.000000 C 96.000000 636.000732 139.666229 757.666199 227.000000 855.000000 C 314.333771 952.333801 423.666016 1001.000000 555.000000 1001.000000 C 668.333923 1001.000000 769.999573 954.333801 860.000000 861.000000 Z M 326.000000 490.000000 C 326.000000 396.666199 350.999756 320.666962 401.000000 262.000000 C 452.333588 202.666367 516.999634 173.000000 595.000000 173.000000 C 678.333740 173.000000 745.666382 201.666382 797.000000 259.000000 C 848.333618 318.333618 874.000000 393.666199 874.000000 485.000000 C 874.000000 576.333801 848.333618 651.666382 797.000000 711.000000 C 745.666382 769.000305 679.000427 798.000000 597.000000 798.000000 C 519.666260 798.000000 455.000275 768.666931 403.000000 710.000000 C 351.666412 650.666382 326.000000 577.333740 326.000000 490.000000 Z M 1228.000000 0.000000 " horiz-adv-x="1228"/>
-            <glyph unicode="o" d="M 96.000000 494.000000 C 96.000000 634.667358 146.332825 754.332825 247.000000 853.000000 C 347.667175 951.667175 470.332611 1001.000000 615.000000 1001.000000 C 760.334045 1001.000000 883.666138 951.333801 985.000000 852.000000 C 1085.000488 752.666199 1135.000000 630.667419 1135.000000 486.000000 C 1135.000000 339.999268 1084.667114 217.667160 984.000000 119.000000 C 882.666138 20.999510 758.334045 -28.000000 611.000000 -28.000000 C 464.999268 -28.000000 342.667145 21.999500 244.000000 122.000000 C 145.332840 220.667160 96.000000 344.665924 96.000000 494.000000 Z M 326.000000 490.000000 C 326.000000 392.666168 351.999725 315.666962 404.000000 259.000000 C 457.333588 201.666382 527.666260 173.000000 615.000000 173.000000 C 703.000427 173.000000 773.333069 201.333054 826.000000 258.000000 C 878.666931 314.666962 905.000000 390.332855 905.000000 485.000000 C 905.000000 579.667114 878.666931 655.333069 826.000000 712.000000 C 772.666382 769.333618 702.333740 798.000000 615.000000 798.000000 C 528.999573 798.000000 459.333588 769.333618 406.000000 712.000000 C 352.666412 654.666382 326.000000 580.667114 326.000000 490.000000 Z M 1231.000000 0.000000 " horiz-adv-x="1231"/>
-            <glyph unicode=" " d="M 632.000000 0.000000 " horiz-adv-x="632"/>
-        </font>
-
-    </defs>
-</svg>
-<!-- Both rows should look identical -->
-<p>
-    <!-- Should render as 'a <stroked_box> o' -->
-    <span style='font-size: 40px; '>a &#xbe2; o</span><br/>
-    <span style='font-family: NotExistant; font-size: 40px; '>a &#xbe2; o</span>
-</p>
-<hr/>
-
-<!-- Should render as 'a <filled_box> o' using the SVG Font -->
-<p>
-    <span style='font-family: TestFont1; font-size: 40px; '>a &#xbe2; o</span><br/>
-</p>
-<hr/>
-
-<!-- Both rows should look identical -->
-<p>
-    <!-- 'a', ' ', 'o' from TestFont3, '&#xbe2;' rendered using <missing-glyph> --> 
-    <span style='font-family: TestFont3; font-size: 40px; '>a &#xbe2; o</span><br/>
-
-    <!-- 'a', ' ' from TestFont1, 'o' from TestFont2, '&#xbe2;' rendered using <missing-glyph> from TestFont1 --> 
-    <span style='font-family: TestFont1, TestFont2; font-size: 40px; '>a &#xbe2; o</span>
-</p>
-<hr/>
-
-<!-- Should render as 'a  o' -->
-<p>
-    <!-- 'a', ' ', 'o' from TestFont2, '&#xbe2;' can't be rendered, as none of the default fonts defines it -->
-    <span style='font-family: TestFont2; font-size: 40px; '>a &#xbe2; o</span><br/>
-</p>
-
-</body>
-</html>
diff --git a/LayoutTests/svg/custom/svg-fonts-segmented.xhtml b/LayoutTests/svg/custom/svg-fonts-segmented.xhtml
deleted file mode 100644 (file)
index 4288964..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<title>SVG Font Test</title>
-<style>
-/* Construct a font where glyph A-Z comes from Times, a-z from Courier, and 'o' from a SVG Font */
-@font-face {
-    font-family: 'TestFont';
-    src: local('Times');
-    unicode-range: U+0041-005A; /* 'A' - 'Z' */
-}
-
-@font-face {
-    font-family: 'TestFont';
-    src: local('Courier New');
-    unicode-range: U+0061-007A; /* 'a' - 'z' */
-}
-
-@font-face {
-    font-family: 'TestFont';
-    src: url('#TestFont') format(svg);
-    unicode-range: U+6F; /* 'o' */
-}
-</style>
-</head>
-<body>
-<svg xmlns="http://www.w3.org/2000/svg" style="display: none">
-    <defs>
-        <font id="TestFont">
-            <font-face font-family="TestFont" font-weight="normal" font-style="normal" font-variant="normal" font-stretch="normal" units-per-em="2048.000000" x-height="987.500000" cap-height="1558.500000" ascent="2127.000000" descent="532.000000"/>
-            <missing-glyph d="M 0.000000 0.000000 L 987.500000 0.000000 L 987.500000 1558.500000 L 0.000000 1558.500000 Z M 0.000000 0.000000 " horiz-adv-x="987.500000"/>        
-            <glyph unicode="a" d="M 860.000000 974.000000 L 1086.000000 974.000000 L 1086.000000 0.000000 L 860.000000 0.000000 L 860.000000 102.000000 C 767.332886 15.332900 667.667175 -28.000000 561.000000 -28.000000 C 426.332672 -28.000000 315.000427 20.666180 227.000000 118.000000 C 139.666229 217.333832 96.000000 341.332581 96.000000 490.000000 C 96.000000 636.000732 139.666229 757.666199 227.000000 855.000000 C 314.333771 952.333801 423.666016 1001.000000 555.000000 1001.000000 C 668.333923 1001.000000 769.999573 954.333801 860.000000 861.000000 Z M 326.000000 490.000000 C 326.000000 396.666199 350.999756 320.666962 401.000000 262.000000 C 452.333588 202.666367 516.999634 173.000000 595.000000 173.000000 C 678.333740 173.000000 745.666382 201.666382 797.000000 259.000000 C 848.333618 318.333618 874.000000 393.666199 874.000000 485.000000 C 874.000000 576.333801 848.333618 651.666382 797.000000 711.000000 C 745.666382 769.000305 679.000427 798.000000 597.000000 798.000000 C 519.666260 798.000000 455.000275 768.666931 403.000000 710.000000 C 351.666412 650.666382 326.000000 577.333740 326.000000 490.000000 Z M 1228.000000 0.000000 " horiz-adv-x="1228"/>
-            <glyph unicode="o" d="M 96.000000 494.000000 C 96.000000 634.667358 146.332825 754.332825 247.000000 853.000000 C 347.667175 951.667175 470.332611 1001.000000 615.000000 1001.000000 C 760.334045 1001.000000 883.666138 951.333801 985.000000 852.000000 C 1085.000488 752.666199 1135.000000 630.667419 1135.000000 486.000000 C 1135.000000 339.999268 1084.667114 217.667160 984.000000 119.000000 C 882.666138 20.999510 758.334045 -28.000000 611.000000 -28.000000 C 464.999268 -28.000000 342.667145 21.999500 244.000000 122.000000 C 145.332840 220.667160 96.000000 344.665924 96.000000 494.000000 Z M 326.000000 490.000000 C 326.000000 392.666168 351.999725 315.666962 404.000000 259.000000 C 457.333588 201.666382 527.666260 173.000000 615.000000 173.000000 C 703.000427 173.000000 773.333069 201.333054 826.000000 258.000000 C 878.666931 314.666962 905.000000 390.332855 905.000000 485.000000 C 905.000000 579.667114 878.666931 655.333069 826.000000 712.000000 C 772.666382 769.333618 702.333740 798.000000 615.000000 798.000000 C 528.999573 798.000000 459.333588 769.333618 406.000000 712.000000 C 352.666412 654.666382 326.000000 580.667114 326.000000 490.000000 Z M 1231.000000 0.000000 " horiz-adv-x="1231"/>
-            <glyph unicode=" " d="M 632.000000 0.000000 " horiz-adv-x="632"/>
-        </font>
-    </defs>
-</svg>
-
-<!-- 'ABC' should be rendered using Times, 'def' using Courier, 'o' using the SVG Font, and 'O' again by Times -->
-<p style='font-family: TestFont; font-size: 40px; '>ABCdefoooO</p>
-
-</body>
-</html>
diff --git a/LayoutTests/svg/custom/svg-fonts-word-spacing.html b/LayoutTests/svg/custom/svg-fonts-word-spacing.html
deleted file mode 100644 (file)
index 724dd16..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<html>
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
-
-    <title>Font Face Demo</title>
-    <style type="text/css" media="screen">
-        @font-face {
-            font-family: 'SVGraffiti';
-            src: url("resources/graffiti.svg#SVGraffiti") format(svg)
-        }
-        p.testStyle {font-size: 18px; line-height:normal;font-family: 'SVGraffiti', sans-serif; white-space: nowrap}
-      </style>
-    </head>
-
-    <body>
-      no spacing:
-      <p class="testStyle">abc abc abc</p>
-      word-spacing: 100px, all should look the same
-      <p class="testStyle" style="word-spacing: 100px">abc abc abc</p>
-      <p class="testStyle" style="word-spacing: 100px">abc <span>ab</span>c abc</p>
-      <p class="testStyle" style="word-spacing: 100px">abc <span>a</span><span>b</span>c abc</p>
-      <p class="testStyle" style="word-spacing: 100px">abc <span>a</span>b<span>c</span> abc</p>
-      <p class="testStyle" style="word-spacing: 100px">abc a<span>b</span><span>c</span> abc</p>
-      <p class="testStyle" style="word-spacing: 100px">abc a<span>b</span>c abc</p>
-      <p class="testStyle" style="word-spacing: 100px">abc <span></span>abc <span></span>abc</p>
-    </div>
-  </body>
-</html>
diff --git a/LayoutTests/svg/text/select-text-svgfont-expected.txt b/LayoutTests/svg/text/select-text-svgfont-expected.txt
deleted file mode 100644 (file)
index c44ab74..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-This test checks that individual characters can be selected correctly when using an SVG font.
-aaaaaaaaaa
-PASS
diff --git a/LayoutTests/svg/text/select-text-svgfont.html b/LayoutTests/svg/text/select-text-svgfont.html
deleted file mode 100644 (file)
index 9f23391..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<title>Test for per-character selection with SVG font</title>
-<style>
-
-@font-face {
-    font-family: 'ABCFont';
-    src: local('☺'), url('../custom/resources/ABCFont.svg#ABCFont') format('svg');
-    font-weight: normal;
-    font-style: normal;
-}
-
-.svgfont {
-    font-family: 'ABCFont';
-}
-
-.pass {
-    background: #0f0;
-}
-
-.fail { 
-    background: #f00;
-}
-
-</style>
-</head>
-<body>
-This test checks that individual characters can be selected correctly when using an SVG font.
-<div>
-       <span id="text" class="svgfont">aaaaaaaaaa</span>
-</div>
-<div id="passfail">
-</div>
-<script type="text/javascript">
-function runTest() {
-    var text = document.getElementById('text');
-
-    if (!window.layoutTestController)
-        return;
-
-    var textWidth = text.offsetWidth;
-    var estCharWidth = textWidth / 10;
-    eventSender.mouseMoveTo(text.offsetLeft + (estCharWidth * 3) + 2, text.offsetTop + text.offsetHeight / 2);
-    eventSender.leapForward(200);
-    eventSender.mouseDown();
-    eventSender.mouseMoveTo(text.offsetLeft + (estCharWidth * 3) + 2, text.offsetTop + text.offsetHeight / 2);
-    eventSender.leapForward(200);
-    eventSender.mouseMoveTo(text.offsetLeft + (estCharWidth * 6) + 2, text.offsetTop + text.offsetHeight / 2);
-    eventSender.leapForward(200);
-    eventSender.mouseUp();
-    verify();
-}
-
-function verify() {
-    var text = document.getElementById('text');
-
-    if (!window.layoutTestController)
-        return;
-
-    var range = window.getSelection().getRangeAt(0);
-    if (range.startOffset === 3 && range.endOffset === 6)
-       return pass("PASS");
-
-    return fail("FAIL: range was [" + range.startOffset + ", " + range.endOffset + "]; expected [3, 6]");
-}
-
-function pass(message) {
-    log(true, message);
-}
-
-function fail(message) {
-    log(false, message);
-}
-
-function log(passed, message) {
-    var passfail = document.getElementById('passfail');
-    passfail.innerHTML = message;
-    passfail.className = (passed ? "pass" : "fail");
-    layoutTestController.dumpAsText();
-}
-
-runTest();
-</script>
-</body>
-</html>
diff --git a/LayoutTests/svg/text/text-overflow-ellipsis-svgfont.html b/LayoutTests/svg/text/text-overflow-ellipsis-svgfont.html
deleted file mode 100644 (file)
index a141441..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<title>Test for text-overflow: ellipsis using SVG font</title>
-<style>
-
-@font-face {
-    font-family: 'ABCFont';
-    src: local('☺'), url('../../svg/custom/resources/ABCFont.svg#ABCFont') format('svg');
-    font-weight: normal;
-    font-style: normal;
-}
-
-.ellipsis {
-    width: 180px;
-    margin: 0 0 20px 0;
-    border: 1px solid black;
-    text-overflow: ellipsis;
-    overflow: hidden;
-    white-space: nowrap;
-}
-
-.svgfont {
-       font-family: 'ABCFont';
-}
-</style>
-</head>
-<body>
-
-This test checks that the text-overflow: ellipsis property is handled correctly when using an SVG font.<br><br>
-
-Pass if some text is shown followed by an ellipsis (NOT just the ellipsis by itself).
-<br><br>
-
-<div class="ellipsis svgfont">
-       abc abc abc abc abc abc abc abc abc abc
-</div>
-
-</body>
-</html>
index afc1d88fd2c0b6419f21dd107dc6b13f58249d30..801ed845b17ce052c0e7ef92a6a062a6e96dff7e 100644 (file)
@@ -1,3 +1,12 @@
+2011-06-20  Kenneth Russell  <kbr@google.com>
+
+        Unreviewed.
+
+        Rolled out r89233 and r89235 because of crashes in http/tests/misc/acid3.html on Snow Leopard and other platforms
+        https://bugs.webkit.org/show_bug.cgi?id=63022
+
+        * wtf/Platform.h:
+
 2011-06-18  Anders Carlsson  <andersca@apple.com>
 
         Reviewed by Darin Adler.
index 051c9887dfabe8822682d2dd6ba3e26eb58399fc..9c599290d8311525e733743e48e4824c0b02e979 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc.  All rights reserved.
  * Copyright (C) 2007-2009 Torch Mobile, Inc.
  * Copyright (C) Research In Motion Limited 2010. All rights reserved.
  *
index 6c9809cd5cdd8e721499494af437188cea2dd798..cc0cf17f6793b1cd423afff6a8437569be5fffdf 100644 (file)
@@ -1,3 +1,80 @@
+2011-06-20  Kenneth Russell  <kbr@google.com>
+
+        Unreviewed.
+
+        Rolled out r89233 and r89235 because of crashes in http/tests/misc/acid3.html on Snow Leopard and other platforms
+        https://bugs.webkit.org/show_bug.cgi?id=63022
+
+        * features.pri:
+        * page/DOMWindow.idl:
+        * platform/graphics/Font.cpp:
+        (WebCore::Font::drawText):
+        (WebCore::Font::drawEmphasisMarks):
+        (WebCore::Font::width):
+        (WebCore::Font::selectionRectForText):
+        (WebCore::Font::offsetForPosition):
+        (WebCore::Font::codePath):
+        * platform/graphics/Font.h:
+        * platform/graphics/FontFallbackList.h:
+        * platform/graphics/FontFastPath.cpp:
+        (WebCore::Font::glyphDataForCharacter):
+        (WebCore::Font::getEmphasisMarkGlyphData):
+        (WebCore::Font::drawGlyphBuffer):
+        * platform/graphics/FontMetrics.h:
+        * platform/graphics/GlyphPageTreeNode.cpp:
+        (WebCore::fill):
+        * platform/graphics/SVGGlyph.h:
+        (WebCore::SVGGlyph::SVGGlyph):
+        (WebCore::SVGGlyph::operator==):
+        * platform/graphics/SimpleFontData.cpp:
+        (WebCore::SimpleFontData::SimpleFontData):
+        * platform/graphics/SimpleFontData.h:
+        (WebCore::SimpleFontData::widthForGlyph):
+        * platform/graphics/TextRun.h:
+        * platform/graphics/WidthIterator.cpp:
+        (WebCore::WidthIterator::advance):
+        * platform/graphics/WidthIterator.h:
+        * platform/graphics/chromium/SimpleFontDataChromiumWin.cpp:
+        (WebCore::scaleEmToUnits):
+        * platform/graphics/mac/SimpleFontDataMac.mm:
+        (WebCore::scaleEmToUnits):
+        * platform/graphics/win/SimpleFontDataCGWin.cpp:
+        (WebCore::scaleEmToUnits):
+        * rendering/svg/SVGTextMetrics.cpp:
+        (WebCore::SVGTextMetrics::SVGTextMetrics):
+        (WebCore::constructTextRun):
+        (WebCore::SVGTextMetrics::measureCharacterRange):
+        * rendering/svg/SVGTextMetrics.h:
+        * rendering/svg/SVGTextRunRenderingContext.cpp:
+        (WebCore::convertEmUnitToPixel):
+        (WebCore::isVerticalWritingMode):
+        (WebCore::firstParentRendererForNonTextNode):
+        (WebCore::referencingRenderObjectFromRun):
+        (WebCore::SVGTextRunWalker::SVGTextRunWalker):
+        (WebCore::SVGTextRunWalker::walk):
+        (WebCore::floatWidthUsingSVGFontCallback):
+        (WebCore::floatWidthMissingGlyphCallback):
+        (WebCore::floatWidthOfSubStringUsingSVGFont):
+        (WebCore::SVGTextRunRenderingContext::floatWidthUsingSVGFont):
+        (WebCore::drawTextUsingSVGFontCallback):
+        (WebCore::drawTextMissingGlyphCallback):
+        (WebCore::SVGTextRunRenderingContext::drawTextUsingSVGFont):
+        (WebCore::SVGTextRunRenderingContext::selectionRectForTextUsingSVGFont):
+        (WebCore::SVGTextRunRenderingContext::offsetForPositionForTextUsingSVGFont):
+        * rendering/svg/SVGTextRunRenderingContext.h:
+        * svg/SVGAltGlyphElement.cpp:
+        (WebCore::SVGAltGlyphElement::glyphElement):
+        * svg/SVGAltGlyphElement.h:
+        * svg/SVGFontData.cpp:
+        (WebCore::SVGFontData::initializeFontData):
+        * svg/SVGFontData.h:
+        * svg/SVGFontElement.cpp:
+        (WebCore::SVGFontElement::registerLigaturesInGlyphCache):
+        (WebCore::SVGFontElement::ensureGlyphCache):
+        * svg/SVGGlyphMap.h:
+        (WebCore::SVGGlyphMap::addGlyphByUnicodeString):
+        * svg/svgtags.in:
+
 2011-06-20  Scott Byer  <scottbyer@chromium.org>
 
         Reviewed by Adam Barth.
index f719a5af082d8d18f8cc1b02b84ff05b528239d1..27bb2669ffd19bc85ef13bc8471dca2836fcf3f5 100644 (file)
@@ -37,12 +37,6 @@ contains(CONFIG, use_system_icu) {
     DEFINES -= WTF_USE_ICU_UNICODE
 }
 
-isEmpty(HAVE_QRAWFONT) {
-    # We have to disable SVG Fonts, which rely on the fast path.
-    DEFINES -= ENABLE_SVG_FONTS=1
-    DEFINES += ENABLE_SVG_FONTS=0
-}
-
 contains(DEFINES, ENABLE_SINGLE_THREADED=1) {
     DEFINES+=ENABLE_DATABASE=0 ENABLE_DOM_STORAGE=0 ENABLE_ICONDATABASE=0 ENABLE_WORKERS=0 ENABLE_SHARED_WORKERS=0
 }
index 9170b62cd174dc9721f8970c9e0d682bd7571d41..45ac21eff5ae62a2372606c02ce4472b025eca59 100644 (file)
@@ -20,7 +20,7 @@
  * 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.
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
 module window {
index 3b5595db647c00871dc7ce4b3558ade4e7837f34..e1d6dccb817c05f790840a491989a81dd04569b5 100644 (file)
@@ -135,6 +135,13 @@ void Font::drawText(GraphicsContext* context, const TextRun& run, const FloatPoi
     
     to = (to == -1 ? run.length() : to);
 
+#if ENABLE(SVG_FONTS)
+    if (TextRun::RenderingContext* renderingContext = run.renderingContext()) {
+        renderingContext->drawTextUsingSVGFont(*this, context, run, point, from, to);
+        return;
+    }
+#endif
+
     CodePath codePathToUse = codePath(run);
 
 #if PLATFORM(QT) && HAVE(QRAWFONT)
@@ -156,6 +163,12 @@ void Font::drawEmphasisMarks(GraphicsContext* context, const TextRun& run, const
     if (to < 0)
         to = run.length();
 
+#if ENABLE(SVG_FONTS)
+    // FIXME: Implement for SVG fonts.
+    if (primaryFont()->isSVGFont())
+        return;
+#endif
+
     if (codePath(run) != Complex)
         drawEmphasisMarksForSimpleText(context, run, mark, point, from, to);
     else
@@ -164,6 +177,11 @@ void Font::drawEmphasisMarks(GraphicsContext* context, const TextRun& run, const
 
 float Font::width(const TextRun& run, HashSet<const SimpleFontData*>* fallbackFonts, GlyphOverflow* glyphOverflow) const
 {
+#if ENABLE(SVG_FONTS)
+    if (TextRun::RenderingContext* renderingContext = run.renderingContext())
+        return renderingContext->floatWidthUsingSVGFont(*this, run);
+#endif
+
     CodePath codePathToUse = codePath(run);
     if (codePathToUse != Complex) {
         // If the complex text implementation cannot return fallback fonts, avoid
@@ -175,11 +193,13 @@ float Font::width(const TextRun& run, HashSet<const SimpleFontData*>* fallbackFo
     return floatWidthForComplexText(run, fallbackFonts, glyphOverflow);
 }
 
-float Font::width(const TextRun& run, int& charsConsumed, String& glyphName) const
+float Font::width(const TextRun& run, int extraCharsAvailable, int& charsConsumed, String& glyphName) const
 {
 #if ENABLE(SVG_FONTS)
     if (TextRun::RenderingContext* renderingContext = run.renderingContext())
-        return renderingContext->floatWidthUsingSVGFont(*this, run, charsConsumed, glyphName);
+        return renderingContext->floatWidthUsingSVGFont(*this, run, extraCharsAvailable, charsConsumed, glyphName);
+#else
+    UNUSED_PARAM(extraCharsAvailable);
 #endif
 
     charsConsumed = run.length();
@@ -193,6 +213,11 @@ float Font::width(const TextRun& run, int& charsConsumed, String& glyphName) con
 
 FloatRect Font::selectionRectForText(const TextRun& run, const FloatPoint& point, int h, int from, int to) const
 {
+#if ENABLE(SVG_FONTS)
+    if (TextRun::RenderingContext* renderingContext = run.renderingContext())
+        return renderingContext->selectionRectForTextUsingSVGFont(*this, run, point, h, from, to);
+#endif
     to = (to == -1 ? run.length() : to);
 
     if (codePath(run) != Complex)
@@ -203,6 +228,11 @@ FloatRect Font::selectionRectForText(const TextRun& run, const FloatPoint& point
 
 int Font::offsetForPosition(const TextRun& run, float x, bool includePartialGlyphs) const
 {
+#if ENABLE(SVG_FONTS)
+    if (TextRun::RenderingContext* renderingContext = run.renderingContext())
+        return renderingContext->offsetForPositionForTextUsingSVGFont(*this, run, x, includePartialGlyphs);
+#endif
+
     if (codePath(run) != Complex)
         return offsetForPositionForSimpleText(run, x, includePartialGlyphs);
 
@@ -248,11 +278,6 @@ Font::CodePath Font::codePath(const TextRun& run) const
     if (s_codePath != Auto)
         return s_codePath;
 
-#if ENABLE(SVG_FONTS)
-    if (run.renderingContext())
-        return Simple;
-#endif
-
 #if PLATFORM(QT) && !HAVE(QRAWFONT)
     if (run.expansion() || run.rtl() || isSmallCaps() || wordSpacing() || letterSpacing())
         return Complex;
index 8d831259fa09a23fc8ea834e14a1167f1868ee5b..2e963455c009bab02b8ac7949f0bf4bc14518309 100644 (file)
@@ -97,7 +97,7 @@ public:
     void drawEmphasisMarks(GraphicsContext*, const TextRun&, const AtomicString& mark, const FloatPoint&, int from = 0, int to = -1) const;
 
     float width(const TextRun&, HashSet<const SimpleFontData*>* fallbackFonts = 0, GlyphOverflow* = 0) const;
-    float width(const TextRun&, int& charsConsumed, String& glyphName) const;
+    float width(const TextRun&, int extraCharsAvailable, int& charsConsumed, String& glyphName) const;
 
     int offsetForPosition(const TextRun&, float position, bool includePartialGlyphs) const;
     FloatRect selectionRectForText(const TextRun&, const FloatPoint&, int h, int from = 0, int to = -1) const;
@@ -139,7 +139,6 @@ public:
     const SimpleFontData* primaryFont() const;
     const FontData* fontDataAt(unsigned) const;
     GlyphData glyphDataForCharacter(UChar32, bool mirror, FontDataVariant = AutoVariant) const;
-    std::pair<GlyphData, GlyphPage*> glyphDataAndPageForCharacter(UChar32, bool mirror, FontDataVariant = AutoVariant) const;
     bool primaryFontHasGlyphForCharacter(UChar32) const;
 
     static bool isCJKIdeograph(UChar32);
@@ -186,7 +185,6 @@ private:
     FloatRect selectionRectForComplexText(const TextRun&, const FloatPoint&, int h, int from, int to) const;
 
     friend struct WidthIterator;
-    friend class SVGTextRunRenderingContext;
 
 public:
     // Useful for debugging the different font rendering code paths.
@@ -214,7 +212,6 @@ public:
     static String normalizeSpaces(const UChar*, unsigned length);
 
     bool needsTranscoding() const { return m_needsTranscoding; }
-    FontFallbackList* fontList() const { return m_fontList.get(); }
 
 private:
     bool loadingCustomFonts() const
index 0159b8fc629f924cb7b451608f20c064ffbf9c5f..e18477cbb7a162b6ace190e29bb161d55d5cb626 100644 (file)
@@ -52,15 +52,7 @@ public:
     FontSelector* fontSelector() const { return m_fontSelector.get(); }
     unsigned generation() const { return m_generation; }
 
-    typedef HashMap<int, GlyphPageTreeNode*> GlyphPages;
-    GlyphPageTreeNode* glyphPageZero() const { return m_pageZero; }
-    const GlyphPages& glyphPages() const { return m_pages; }
-
 private:
-    friend class SVGTextRunRenderingContext;
-    void setGlyphPageZero(GlyphPageTreeNode* pageZero) { m_pageZero = pageZero; }
-    void setGlyphPages(const GlyphPages& pages) { m_pages = pages; }
-
     FontFallbackList();
 
     const SimpleFontData* primarySimpleFontData(const Font* f)
@@ -79,7 +71,7 @@ private:
     void releaseFontData();
 
     mutable Vector<pair<const FontData*, bool>, 1> m_fontList;
-    mutable GlyphPages m_pages;
+    mutable HashMap<int, GlyphPageTreeNode*> m_pages;
     mutable GlyphPageTreeNode* m_pageZero;
     mutable const SimpleFontData* m_cachedPrimarySimpleFontData;
     RefPtr<FontSelector> m_fontSelector;
index efc330c5513493b73dda4f5b48a03d333f554a04..a706a3a89a1eb9c72f82d0ecc3c57c8562b3a2a4 100644 (file)
@@ -42,16 +42,11 @@ using namespace std;
 namespace WebCore {
 
 GlyphData Font::glyphDataForCharacter(UChar32 c, bool mirror, FontDataVariant variant) const
-{
-    return glyphDataAndPageForCharacter(c, mirror, variant).first;
-}
-
-std::pair<GlyphData, GlyphPage*> Font::glyphDataAndPageForCharacter(UChar32 c, bool mirror, FontDataVariant variant) const
 {
     ASSERT(isMainThread());
 
     if (variant == AutoVariant) {
-        if (m_fontDescription.smallCaps() && !primaryFont()->isSVGFont()) {
+        if (m_fontDescription.smallCaps()) {
             UChar32 upperC = toUpper(c);
             if (upperC != c) {
                 c = upperC;
@@ -84,7 +79,7 @@ std::pair<GlyphData, GlyphPage*> Font::glyphDataAndPageForCharacter(UChar32 c, b
             if (page) {
                 GlyphData data = page->glyphDataForCharacter(c);
                 if (data.fontData && (data.fontData->platformData().orientation() == Horizontal || data.fontData->isTextOrientationFallback()))
-                    return make_pair(data, page);
+                    return data;
 
                 if (data.fontData) {
                     if (isCJKIdeographOrSymbol(c)) {
@@ -98,37 +93,37 @@ std::pair<GlyphData, GlyphPage*> Font::glyphDataAndPageForCharacter(UChar32 c, b
                         if (m_fontDescription.textOrientation() == TextOrientationVerticalRight) {
                             const SimpleFontData* verticalRightFontData = data.fontData->verticalRightOrientationFontData();
                             GlyphPageTreeNode* verticalRightNode = GlyphPageTreeNode::getRootChild(verticalRightFontData, pageNumber);
-                            GlyphPage* verticalRightPage = verticalRightNode->page();
+                            const GlyphPage* verticalRightPage = verticalRightNode->page();
                             if (verticalRightPage) {
                                 GlyphData verticalRightData = verticalRightPage->glyphDataForCharacter(c);
                                 // If the glyphs are distinct, we will make the assumption that the font has a vertical-right glyph baked
                                 // into it.
                                 if (data.glyph != verticalRightData.glyph)
-                                    return make_pair(data, page);
+                                    return data;
                                 // The glyphs are identical, meaning that we should just use the horizontal glyph.
                                 if (verticalRightData.fontData)
-                                    return make_pair(verticalRightData, verticalRightPage);
+                                    return verticalRightData;
                             }
                         } else if (m_fontDescription.textOrientation() == TextOrientationUpright) {
                             const SimpleFontData* uprightFontData = data.fontData->uprightOrientationFontData();
                             GlyphPageTreeNode* uprightNode = GlyphPageTreeNode::getRootChild(uprightFontData, pageNumber);
-                            GlyphPage* uprightPage = uprightNode->page();
+                            const GlyphPage* uprightPage = uprightNode->page();
                             if (uprightPage) {
                                 GlyphData uprightData = uprightPage->glyphDataForCharacter(c);
                                 // If the glyphs are the same, then we know we can just use the horizontal glyph rotated vertically to be upright.
                                 if (data.glyph == uprightData.glyph)
-                                    return make_pair(data, page);
+                                    return data;
                                 // The glyphs are distinct, meaning that the font has a vertical-right glyph baked into it. We can't use that
                                 // glyph, so we fall back to the upright data and use the horizontal glyph.
                                 if (uprightData.fontData)
-                                    return make_pair(uprightData, uprightPage);
+                                    return uprightData;
                             }
                         }
 
                         // Shouldn't be possible to even reach this point.
                         ASSERT_NOT_REACHED();
                     }
-                    return make_pair(data, page);
+                    return data;
                 }
 
                 if (node->isSystemFallback())
@@ -153,19 +148,19 @@ std::pair<GlyphData, GlyphPage*> Font::glyphDataAndPageForCharacter(UChar32 c, b
                     // But if it does, we will just render the capital letter big.
                     const SimpleFontData* variantFontData = data.fontData->variantFontData(m_fontDescription, variant);
                     if (!variantFontData)
-                        return make_pair(data, page);
+                        return data;
 
                     GlyphPageTreeNode* variantNode = GlyphPageTreeNode::getRootChild(variantFontData, pageNumber);
-                    GlyphPage* variantPage = variantNode->page();
+                    const GlyphPage* variantPage = variantNode->page();
                     if (variantPage) {
                         GlyphData data = variantPage->glyphDataForCharacter(c);
                         if (data.fontData)
-                            return make_pair(data, variantPage);
+                            return data;
                     }
 
                     // Do not attempt system fallback off the variantFontData. This is the very unlikely case that
                     // a font has the lowercase character but the small caps font does not have its uppercase version.
-                    return make_pair(variantFontData->missingGlyphData(), page);
+                    return variantFontData->missingGlyphData();
                 }
 
                 if (node->isSystemFallback())
@@ -217,13 +212,13 @@ std::pair<GlyphData, GlyphPage*> Font::glyphDataAndPageForCharacter(UChar32 c, b
             // So we just always set the glyph to be same as the character, and let GDI solve it.
             page->setGlyphDataForCharacter(c, c, characterFontData);
             characterFontData->setMaxGlyphPageTreeLevel(max(characterFontData->maxGlyphPageTreeLevel(), node->level()));
-            return make_pair(page->glyphDataForCharacter(c), page);
+            return page->glyphDataForCharacter(c);
 #else
             page->setGlyphDataForCharacter(c, data.glyph, data.fontData);
             data.fontData->setMaxGlyphPageTreeLevel(max(data.fontData->maxGlyphPageTreeLevel(), node->level()));
 #endif
         }
-        return make_pair(data, page);
+        return data;
     }
 
     // Even system fallback can fail; use the missing glyph in that case.
@@ -234,13 +229,13 @@ std::pair<GlyphData, GlyphPage*> Font::glyphDataAndPageForCharacter(UChar32 c, b
         // See comment about WINCE GDI handling near setGlyphDataForCharacter above.
         page->setGlyphDataForCharacter(c, c, data.fontData);
         data.fontData->setMaxGlyphPageTreeLevel(max(data.fontData->maxGlyphPageTreeLevel(), node->level()));
-        return make_pair(page->glyphDataForCharacter(c), page);
+        return page->glyphDataForCharacter(c);
 #else
         page->setGlyphDataForCharacter(c, data.glyph, data.fontData);
         data.fontData->setMaxGlyphPageTreeLevel(max(data.fontData->maxGlyphPageTreeLevel(), node->level()));
 #endif
     }
-    return make_pair(data, page);
+    return data;
 }
 
 bool Font::primaryFontHasGlyphForCharacter(UChar32 character) const
@@ -260,6 +255,12 @@ bool Font::getEmphasisMarkGlyphData(const AtomicString& mark, GlyphData& glyphDa
     if (mark.isEmpty())
         return false;
 
+#if ENABLE(SVG_FONTS)
+    // FIXME: Implement for SVG fonts.
+    if (primaryFont()->isSVGFont())
+        return false;
+#endif
+
     UChar32 character = mark[0];
 
     if (U16_IS_SURROGATE(character)) {
@@ -375,7 +376,7 @@ void Font::drawEmphasisMarksForSimpleText(GraphicsContext* context, const TextRu
     drawEmphasisMarks(context, run, glyphBuffer, mark, FloatPoint(point.x() + initialAdvance, point.y()));
 }
 
-void Font::drawGlyphBuffer(GraphicsContext* context, const TextRun& run, const GlyphBuffer& glyphBuffer, const FloatPoint& point) const
+void Font::drawGlyphBuffer(GraphicsContext* context, const TextRun&, const GlyphBuffer& glyphBuffer, const FloatPoint& point) const
 {   
     // Draw each contiguous run of glyphs that use the same font data.
     const SimpleFontData* fontData = glyphBuffer.fontDataAt(0);
@@ -384,20 +385,11 @@ void Font::drawGlyphBuffer(GraphicsContext* context, const TextRun& run, const G
     float nextX = startPoint.x();
     int lastFrom = 0;
     int nextGlyph = 0;
-#if ENABLE(SVG_FONTS)
-    TextRun::RenderingContext* renderingContext = run.renderingContext();
-#endif
     while (nextGlyph < glyphBuffer.size()) {
         const SimpleFontData* nextFontData = glyphBuffer.fontDataAt(nextGlyph);
         FloatSize nextOffset = glyphBuffer.offsetAt(nextGlyph);
-
         if (nextFontData != fontData || nextOffset != offset) {
-#if ENABLE(SVG_FONTS)
-            if (renderingContext && fontData->isSVGFont())
-                renderingContext->drawSVGGlyphs(context, run, fontData, glyphBuffer, lastFrom, nextGlyph - lastFrom, startPoint);
-            else
-#endif
-                drawGlyphs(context, fontData, glyphBuffer, lastFrom, nextGlyph - lastFrom, startPoint);
+            drawGlyphs(context, fontData, glyphBuffer, lastFrom, nextGlyph - lastFrom, startPoint);
 
             lastFrom = nextGlyph;
             fontData = nextFontData;
@@ -408,12 +400,7 @@ void Font::drawGlyphBuffer(GraphicsContext* context, const TextRun& run, const G
         nextGlyph++;
     }
 
-#if ENABLE(SVG_FONTS)
-    if (renderingContext && fontData->isSVGFont())
-        renderingContext->drawSVGGlyphs(context, run, fontData, glyphBuffer, lastFrom, nextGlyph - lastFrom, startPoint);
-    else
-#endif
-        drawGlyphs(context, fontData, glyphBuffer, lastFrom, nextGlyph - lastFrom, startPoint);
+    drawGlyphs(context, fontData, glyphBuffer, lastFrom, nextGlyph - lastFrom, startPoint);
 }
 
 inline static float offsetToMiddleOfGlyph(const SimpleFontData* fontData, Glyph glyph)
index 5fe408bb67114d361a8735425ba7db1cc60e9578..367f004daebeb60a10cdaed0bcc8eb1d4c5ba613 100644 (file)
@@ -122,11 +122,6 @@ private:
     float m_xHeight;
 };
 
-static inline float scaleEmToUnits(float x, unsigned unitsPerEm)
-{
-    return unitsPerEm ? x / unitsPerEm : x;
-}
-
 } // namespace WebCore
 
 #endif // FontMetrics_h
index 87e93fd98ff8def094816a52434e9005e899959d..3cf3067080f1c25ef461d942539c1804c9d925a9 100644 (file)
@@ -126,11 +126,14 @@ GlyphPageTreeNode::~GlyphPageTreeNode()
 
 static bool fill(GlyphPage* pageToFill, unsigned offset, unsigned length, UChar* buffer, unsigned bufferLength, const SimpleFontData* fontData)
 {
-#if ENABLE(SVG_FONTS)
-    if (SimpleFontData::AdditionalFontData* additionalFontData = fontData->fontData())
-        return additionalFontData->fillSVGGlyphPage(pageToFill, offset, length, buffer, bufferLength, fontData);
-#endif
-    return pageToFill->fill(offset, length, buffer, bufferLength, fontData);
+    if (!fontData->isSVGFont())
+        return pageToFill->fill(offset, length, buffer, bufferLength, fontData);
+
+    // SVG Fonts do not use the glyph page cache. Zero fill the glyph
+    // positions and return false to indicate the glyphs were not found.
+    for (unsigned i = 0; i < length; ++i)
+        pageToFill->setGlyphDataForIndex(offset + i, 0, 0);
+    return false;
 }
 
 void GlyphPageTreeNode::initializePage(const FontData* fontData, unsigned pageNumber)
index 272811bb6be64fe5e4ca6813a3afda7470c16cb6..91960b6c16d1b94358bc257f0a7ad22292527a57 100644 (file)
@@ -51,7 +51,7 @@ struct SVGGlyph {
     };
 
     SVGGlyph()
-        : isPartOfLigature(false)
+        : isValid(false)
         , orientation(Both)
         , arabicForm(None)
         , priority(0)
@@ -73,7 +73,7 @@ struct SVGGlyph {
 
     bool operator==(const SVGGlyph& other) const
     {
-        return isPartOfLigature == other.isPartOfLigature
+        return isValid == other.isValid
             && orientation == other.orientation
             && arabicForm == other.arabicForm
             && tableEntry == other.tableEntry
@@ -86,7 +86,7 @@ struct SVGGlyph {
             && languages == other.languages;
     }
 
-    bool isPartOfLigature : 1;
+    bool isValid : 1;
 
     unsigned orientation : 2; // Orientation
     unsigned arabicForm : 3; // ArabicForm
index 28e9ae14ec560a20c268d3dce85a915a6c91e782..6ac4b5e712c2d8dd4b40c4269af97f8d2495dd23 100644 (file)
@@ -56,8 +56,8 @@ SimpleFontData::SimpleFontData(const FontPlatformData& platformData, bool isCust
     platformCharWidthInit();
 }
 
-SimpleFontData::SimpleFontData(PassOwnPtr<AdditionalFontData> fontData, float fontSize, bool syntheticBold, bool syntheticItalic)
-    : m_platformData(FontPlatformData(fontSize, syntheticBold, syntheticItalic))
+SimpleFontData::SimpleFontData(PassOwnPtr<AdditionalFontData> fontData, int size, bool syntheticBold, bool syntheticItalic)
+    : m_platformData(FontPlatformData(size, syntheticBold, syntheticItalic))
     , m_fontData(fontData)
     , m_treatAsFixedPitch(false)
     , m_isCustomFont(true)
@@ -66,7 +66,7 @@ SimpleFontData::SimpleFontData(PassOwnPtr<AdditionalFontData> fontData, float fo
     , m_isBrokenIdeographFallback(false)
     , m_hasVerticalGlyphs(false)
 {
-    m_fontData->initializeFontData(this, fontSize);
+    m_fontData->initializeFontData(this, size);
 }
 
 #if !(PLATFORM(QT) && !HAVE(QRAWFONT))
index 9b11e497317d0c7330b8a150999687d90554c429..6fb191e0aea91ca452e9d0927dcc2ff0988b8f28 100644 (file)
@@ -64,7 +64,6 @@ namespace WebCore {
 
 class FontDescription;
 class SharedBuffer;
-struct WidthIterator;
 
 enum FontDataVariant { AutoVariant, NormalVariant, SmallCapsVariant, EmphasisMarkVariant, BrokenIdeographVariant };
 enum Pitch { UnknownPitch, FixedPitch, VariablePitch };
@@ -75,18 +74,15 @@ public:
         WTF_MAKE_FAST_ALLOCATED;
     public:
         virtual ~AdditionalFontData() { }
-
-        virtual void initializeFontData(SimpleFontData*, float fontSize) = 0;
-        virtual float widthForSVGGlyph(Glyph, float fontSize) const = 0;
-        virtual bool fillSVGGlyphPage(GlyphPage*, unsigned offset, unsigned length, UChar* buffer, unsigned bufferLength, const SimpleFontData*) const = 0;
-        virtual bool applySVGGlyphSelection(WidthIterator&, GlyphData&, bool mirror, int currentCharacter, unsigned& advanceLength) const = 0;
+    
+        virtual void initializeFontData(SimpleFontData*, int) = 0;
     };
 
     // Used to create platform fonts.
     SimpleFontData(const FontPlatformData&, bool isCustomFont = false, bool isLoading = false, bool isTextOrientationFallback = false);
 
     // Used to create SVG Fonts.
-    SimpleFontData(PassOwnPtr<AdditionalFontData>, float fontSize, bool syntheticBold, bool syntheticItalic);
+    SimpleFontData(PassOwnPtr<AdditionalFontData>, int size, bool syntheticBold, bool syntheticItalic);
 
     virtual ~SimpleFontData();
 
@@ -325,11 +321,7 @@ ALWAYS_INLINE float SimpleFontData::widthForGlyph(Glyph glyph) const
     if (width != cGlyphSizeUnknown)
         return width;
 
-    if (m_fontData)
-        width = m_fontData->widthForSVGGlyph(glyph, m_platformData.size());
-    else
-        width = platformWidthForGlyph(glyph);
-
+    width = platformWidthForGlyph(glyph);
     m_glyphToWidthMap.setMetricsForGlyph(glyph, width);
     return width;
 }
index e4d8fab8c95fa2cfc2cf5058121577a6728cb597..137206542ef0cc70f499c355d609c7723b4b21e9 100644 (file)
@@ -34,10 +34,6 @@ class FloatPoint;
 class FloatRect;
 class Font;
 class GraphicsContext;
-class GlyphBuffer;
-class SimpleFontData;
-struct GlyphData;
-struct WidthIterator;
 
 class TextRun {
 public:
@@ -121,9 +117,12 @@ public:
         virtual ~RenderingContext() { }
 
 #if ENABLE(SVG_FONTS)
-        virtual GlyphData glyphDataForCharacter(const Font&, const TextRun&, WidthIterator&, UChar32 character, bool mirror, int currentCharacter, unsigned& advanceLength) = 0;
-        virtual void drawSVGGlyphs(GraphicsContext*, const TextRun&, const SimpleFontData*, const GlyphBuffer&, int from, int to, const FloatPoint&) const = 0;
-        virtual float floatWidthUsingSVGFont(const Font&, const TextRun&, int& charsConsumed, String& glyphName) const = 0;
+        // FIXME: Note that the SVG Font integration APIs will be more abstract and simpler once the SVG Fonts rewrite patch lands (59085).
+        virtual void drawTextUsingSVGFont(const Font&, GraphicsContext*, const TextRun&, const FloatPoint&, int from, int to) const = 0;
+        virtual float floatWidthUsingSVGFont(const Font&, const TextRun&) const = 0;
+        virtual float floatWidthUsingSVGFont(const Font&, const TextRun&, int extraCharsAvailable, int& charsConsumed, String& glyphName) const = 0;
+        virtual FloatRect selectionRectForTextUsingSVGFont(const Font&, const TextRun&, const FloatPoint&, int h, int from, int to) const = 0;
+        virtual int offsetForPositionForTextUsingSVGFont(const Font&, const TextRun&, float position, bool includePartialGlyphs) const = 0;
 #endif
     };
 
index acc2b613e353af9b55e75e71cb0692346a461e72..e396e4465e7eca2d3446acb4b5d8e9f048779175 100644 (file)
@@ -74,29 +74,14 @@ WidthIterator::WidthIterator(const Font* font, const TextRun& run, HashSet<const
     }
 }
 
-GlyphData WidthIterator::glyphDataForCharacter(UChar32 character, bool mirror, int currentCharacter, unsigned& advanceLength)
-{
-    ASSERT(m_font);
-
-#if ENABLE(SVG_FONTS)
-    if (TextRun::RenderingContext* renderingContext = m_run.renderingContext())
-        return renderingContext->glyphDataForCharacter(*m_font, m_run, *this, character, mirror, currentCharacter, advanceLength);
-#else
-    UNUSED_PARAM(currentCharacter);
-    UNUSED_PARAM(advanceLength);
-#endif
-
-    return m_font->glyphDataForCharacter(character, mirror);
-}
-
-unsigned WidthIterator::advance(int offset, GlyphBuffer* glyphBuffer)
+void WidthIterator::advance(int offset, GlyphBuffer* glyphBuffer)
 {
     if (offset > m_end)
         offset = m_end;
 
     int currentCharacter = m_currentCharacter;
     if (currentCharacter >= offset)
-        return 0;
+        return;
 
     const UChar* cp = m_run.data(currentCharacter);
 
@@ -138,8 +123,7 @@ unsigned WidthIterator::advance(int offset, GlyphBuffer* glyphBuffer)
             }
         }
 
-        unsigned advanceLength = clusterLength;
-        const GlyphData& glyphData = glyphDataForCharacter(c, rtl, currentCharacter, advanceLength);
+        const GlyphData& glyphData = m_font->glyphDataForCharacter(c, rtl);
         Glyph glyph = glyphData.glyph;
         const SimpleFontData* fontData = glyphData.fontData;
 
@@ -222,8 +206,8 @@ unsigned WidthIterator::advance(int offset, GlyphBuffer* glyphBuffer)
             glyph = 0;
 
         // Advance past the character we just dealt with.
-        cp += advanceLength;
-        currentCharacter += advanceLength;
+        cp += clusterLength;
+        currentCharacter += clusterLength;
 
         m_runWidthSoFar += width;
 
@@ -237,9 +221,7 @@ unsigned WidthIterator::advance(int offset, GlyphBuffer* glyphBuffer)
         }
     }
 
-    unsigned consumedCharacters = currentCharacter - m_currentCharacter;
     m_currentCharacter = currentCharacter;
-    return consumedCharacters;
 }
 
 bool WidthIterator::advanceOneCharacter(float& width, GlyphBuffer* glyphBuffer)
index 32472be6ceaef658424b97d30f4b32b6765d4b26..8cb89cf99453fb426f768a3bfb725c868be6391b 100644 (file)
@@ -22,9 +22,7 @@
 #ifndef WidthIterator_h
 #define WidthIterator_h
 
-#include "SVGGlyph.h"
 #include <wtf/HashSet.h>
-#include <wtf/Vector.h>
 #include <wtf/unicode/Unicode.h>
 
 namespace WebCore {
@@ -33,12 +31,11 @@ class Font;
 class GlyphBuffer;
 class SimpleFontData;
 class TextRun;
-struct GlyphData;
 
 struct WidthIterator {
     WidthIterator(const Font*, const TextRun&, HashSet<const SimpleFontData*>* fallbackFonts = 0, bool accountForGlyphBounds = false, bool forTextEmphasis = false);
 
-    unsigned advance(int to, GlyphBuffer* = 0);
+    void advance(int to, GlyphBuffer* = 0);
     bool advanceOneCharacter(float& width, GlyphBuffer* = 0);
 
     float maxGlyphBoundingBoxY() const { ASSERT(m_accountForGlyphBounds); return m_maxGlyphBoundingBoxY; }
@@ -46,15 +43,6 @@ struct WidthIterator {
     float firstGlyphOverflow() const { ASSERT(m_accountForGlyphBounds); return m_firstGlyphOverflow; }
     float lastGlyphOverflow() const { ASSERT(m_accountForGlyphBounds); return m_lastGlyphOverflow; }
 
-    const TextRun& run() const { return m_run; }
-    float runWidthSoFar() const { return m_runWidthSoFar; }
-
-#if ENABLE(SVG_FONTS)
-    String lastGlyphName() const { return m_lastGlyphName; }
-    void setLastGlyphName(const String& name) { m_lastGlyphName = name; }
-    Vector<SVGGlyph::ArabicForm>& arabicForms() { return m_arabicForms; }
-#endif
-
     const Font* m_font;
 
     const TextRun& m_run;
@@ -66,13 +54,7 @@ struct WidthIterator {
     float m_expansionPerOpportunity;
     bool m_isAfterExpansion;
 
-#if ENABLE(SVG_FONTS)
-    String m_lastGlyphName;
-    Vector<SVGGlyph::ArabicForm> m_arabicForms;
-#endif
-
 private:
-    GlyphData glyphDataForCharacter(UChar32, bool mirror, int currentCharacter, unsigned& advanceLength);
     UChar32 normalizeVoicingMarks(int currentCharacter);
 
     HashSet<const SimpleFontData*>* m_fallbackFonts;
index a6a27a9c35baafdc23c136c77bdb8bb832182e02..c251117e42ae5289c80a28b029b16f04904d7579 100644 (file)
 
 namespace WebCore {
 
+static inline float scaleEmToUnits(float x, int unitsPerEm)
+{
+    return unitsPerEm ? x / static_cast<float>(unitsPerEm) : x;
+}
+
 void SimpleFontData::platformInit()
 {
     if (!m_platformData.size()) {
index 71e98ce11499dcba5b08596bd8f02805116e9243..d968cb0c8dccdd82172b12a9a0b4fa5f6245f77a 100644 (file)
@@ -56,6 +56,7 @@ using namespace std;
 namespace WebCore {
   
 const float smallCapsFontSizeMultiplier = 0.7f;
+static inline float scaleEmToUnits(float x, unsigned unitsPerEm) { return x / unitsPerEm; }
 
 static bool fontHasVerticalGlyphs(CTFontRef ctFont)
 {
index 8a65fb8b0ac69c1a3797db93ff80a01b7ef142f7..12f1127ceffc0d05f4f02c7d370c5bdc21f73f38 100644 (file)
@@ -47,6 +47,8 @@ namespace WebCore {
 
 using std::max;
 
+static inline float scaleEmToUnits(float x, unsigned unitsPerEm) { return unitsPerEm ? x / static_cast<float>(unitsPerEm) : x; }
+
 void SimpleFontData::platformInit()
 {
     m_syntheticBoldOffset = m_platformData.syntheticBold() ? 1.0f : 0.f;
index cb1a9b482e4bab718b77501df3da5f6a33a2b254..035458485d0a9de20d9037b97702d443f66c0d06 100644 (file)
@@ -34,7 +34,7 @@ SVGTextMetrics::SVGTextMetrics()
 {
 }
 
-SVGTextMetrics::SVGTextMetrics(RenderSVGInlineText* textRenderer, const TextRun& run)
+SVGTextMetrics::SVGTextMetrics(RenderSVGInlineText* textRenderer, const TextRun& run, unsigned position, unsigned textLength)
 {
     ASSERT(textRenderer);
 
@@ -42,10 +42,12 @@ SVGTextMetrics::SVGTextMetrics(RenderSVGInlineText* textRenderer, const TextRun&
     ASSERT(scalingFactor);
 
     const Font& scaledFont = textRenderer->scaledFont();
+
+    int extraCharsAvailable = textLength - (position + run.length());
     int length = 0;
 
     // Calculate width/height using the scaled font, divide this result by the scalingFactor afterwards.
-    m_width = scaledFont.width(run, length, m_glyph.name) / scalingFactor;
+    m_width = scaledFont.width(run, extraCharsAvailable, length, m_glyph.name) / scalingFactor;
     m_height = scaledFont.fontMetrics().floatHeight() / scalingFactor;
 
     m_glyph.unicodeString = String(run.characters(), length);
@@ -89,17 +91,13 @@ static TextRun constructTextRun(RenderSVGInlineText* text, const UChar* characte
 
     // We handle letter & word spacing ourselves.
     run.disableSpacing();
-
-    // Propagate the maximum length of the characters buffer to the TextRun, even when we're only processing a substring.
-    run.setCharactersLength(text->textLength() - position);
-    ASSERT(run.charactersLength() >= run.length());
     return run;
 }
 
 SVGTextMetrics SVGTextMetrics::measureCharacterRange(RenderSVGInlineText* text, unsigned position, unsigned length)
 {
     ASSERT(text);
-    return SVGTextMetrics(text, constructTextRun(text, text->characters(), position, length));
+    return SVGTextMetrics(text, constructTextRun(text, text->characters(), position, length), position, text->textLength());
 }
 
 }
index 5825e4e845e4630aa2f38dbef49c67cb0b3abaaa..cb016b695284f46c47b54c1c71b3a3cbeff746d5 100644 (file)
@@ -66,7 +66,7 @@ private:
 
 private:
     SVGTextMetrics();
-    SVGTextMetrics(RenderSVGInlineText*, const TextRun&);
+    SVGTextMetrics(RenderSVGInlineText*, const TextRun&, unsigned position, unsigned textLength);
 
     float m_width;
     float m_height;
index 33acf92dc960e7fb503e110123d0ddd9ee013258..85b4448ddbf1b86c8e915817b0f9e12985ed6690 100644 (file)
 #include "config.h"
 
 #if ENABLE(SVG_FONTS)
-#include "SVGTextRunRenderingContext.h"
-
 #include "Font.h"
-#include "GlyphBuffer.h"
+
+#include "CSSFontSelector.h"
 #include "GraphicsContext.h"
 #include "RenderObject.h"
 #include "RenderSVGInlineText.h"
 #include "RenderSVGResourceSolidColor.h"
+#include "SVGAltGlyphElement.h"
 #include "SVGFontData.h"
 #include "SVGFontElement.h"
 #include "SVGFontFaceElement.h"
 #include "SVGGlyphElement.h"
+#include "SVGGlyphMap.h"
+#include "SVGMissingGlyphElement.h"
 #include "SVGNames.h"
-#include "WidthIterator.h"
+#include "SVGTextRunRenderingContext.h"
+#include "SimpleFontData.h"
+#include "XMLNames.h"
+
+using namespace WTF::Unicode;
 
 namespace WebCore {
 
+static inline float convertEmUnitToPixel(float fontSize, float unitsPerEm, float value)
+{
+    if (!unitsPerEm)
+        return 0.0f;
+
+    return value * fontSize / unitsPerEm;
+}
+
+static inline bool isVerticalWritingMode(const SVGRenderStyle* style)
+{
+    return style->writingMode() == WM_TBRL || style->writingMode() == WM_TB; 
+}
+
 static inline const SVGFontData* svgFontAndFontFaceElementForFontData(const SimpleFontData* fontData, SVGFontFaceElement*& fontFace, SVGFontElement*& font)
 {
     ASSERT(fontData);
@@ -56,10 +75,11 @@ static inline const SVGFontData* svgFontAndFontFaceElementForFontData(const Simp
 static inline RenderObject* firstParentRendererForNonTextNode(RenderObject* renderer)
 {
     ASSERT(renderer);
-    return renderer->isText() ? renderer->parent() : renderer;
+    RenderObject* newRenderer = renderer->isText() ? renderer->parent() : renderer;
+    return newRenderer;
 }
 
-static inline RenderObject* renderObjectFromRun(const TextRun& run)
+static inline RenderObject* referencingRenderObjectFromRun(const TextRun& run)
 {
     if (TextRun::RenderingContext* renderingContext = run.renderingContext())
         return static_cast<SVGTextRunRenderingContext*>(renderingContext)->renderer();
@@ -73,174 +93,353 @@ static inline RenderSVGResource* activePaintingResourceFromRun(const TextRun& ru
     return 0;
 }
 
-float SVGTextRunRenderingContext::floatWidthUsingSVGFont(const Font& font, const TextRun& run, int& charsConsumed, String& glyphName) const
+// Helper class to walk a text run. Lookup a SVGGlyph for each character
+// - also respecting possibly defined ligatures - and invoke a callback for each found glyph.
+template<typename SVGTextRunData>
+struct SVGTextRunWalker {
+    typedef bool (*SVGTextRunWalkerCallback)(const SVGGlyph&, SVGTextRunData&);
+    typedef void (*SVGTextRunWalkerMissingGlyphCallback)(const TextRun&, SVGTextRunData&);
+
+    SVGTextRunWalker(const SVGFontData* fontData, SVGFontElement* fontElement, SVGTextRunData& data,
+                     SVGTextRunWalkerCallback callback, SVGTextRunWalkerMissingGlyphCallback missingGlyphCallback)
+        : m_fontData(fontData)
+        , m_fontElement(fontElement)
+        , m_walkerData(data)
+        , m_walkerCallback(callback)
+        , m_walkerMissingGlyphCallback(missingGlyphCallback)
+    {
+    }
+
+    void walk(const TextRun& run, bool isVerticalText, const String& language, int from, int to)
+    {
+        if (from < 0 || to < 0 || from > to || from >= run.length() || to > run.length())
+            return;         
+
+        const String text = Font::normalizeSpaces(run.data(from), to - from);
+        Vector<SVGGlyph::ArabicForm> chars(charactersWithArabicForm(text, run.rtl()));
+
+        SVGGlyph identifier;
+        bool foundGlyph = false;
+        int characterLookupRange;
+        int endOfScanRange = to + m_walkerData.extraCharsAvailable;
+
+        RenderObject* renderObject = referencingRenderObjectFromRun(run);
+        RenderObject* parentRenderObject = firstParentRendererForNonTextNode(renderObject);
+
+        bool haveAltGlyph = false;
+        SVGGlyph altGlyphIdentifier;
+        Node* node = parentRenderObject->node();
+        if (node && node->hasTagName(SVGNames::altGlyphTag)) {
+            if (SVGGlyphElement* glyphElement = static_cast<SVGAltGlyphElement*>(node)->glyphElement()) {
+                haveAltGlyph = true;
+                altGlyphIdentifier = glyphElement->buildGlyphIdentifier();
+                altGlyphIdentifier.isValid = true;
+                altGlyphIdentifier.unicodeStringLength = to - from;
+            }
+        }
+
+        for (int i = from; i < to; ++i) {
+            // If characterLookupRange is > 0, then the font defined ligatures (length of unicode property value > 1).
+            // We have to check wheter the current character & the next character define a ligature. This needs to be
+            // extended to the n-th next character (where n is 'characterLookupRange'), to check for any possible ligature.
+            characterLookupRange = endOfScanRange - i;
+
+            String lookupString = Font::normalizeSpaces(run.data(i), characterLookupRange);
+
+            Vector<SVGGlyph> glyphs;
+            if (haveAltGlyph)
+                glyphs.append(altGlyphIdentifier);
+            else
+                m_fontElement->collectGlyphsForString(lookupString, glyphs);
+
+            Vector<SVGGlyph>::iterator it = glyphs.begin();
+            Vector<SVGGlyph>::iterator end = glyphs.end();
+            
+            for (; it != end; ++it) {
+                identifier = *it;
+                if (identifier.isValid && isCompatibleGlyph(identifier, isVerticalText, language, chars, i, i + identifier.unicodeStringLength)) {
+                    ASSERT(characterLookupRange > 0);
+                    i += identifier.unicodeStringLength - 1;
+                    m_walkerData.charsConsumed += identifier.unicodeStringLength;
+                    m_walkerData.glyphName = identifier.glyphName;
+
+                    foundGlyph = true;
+                    SVGGlyphElement::inheritUnspecifiedAttributes(identifier, m_fontData);
+                    break;
+                }
+            }
+
+            if (!foundGlyph) {
+                ++m_walkerData.charsConsumed;
+                if (SVGMissingGlyphElement* element = m_fontElement->firstMissingGlyphElement()) {
+                    // <missing-glyph> element support
+                    identifier = SVGGlyphElement::buildGenericGlyphIdentifier(element);
+                    SVGGlyphElement::inheritUnspecifiedAttributes(identifier, m_fontData);
+                    identifier.isValid = true;
+                } else {
+                    // Fallback to system font fallback
+                    TextRun subRun(run);
+                    subRun.setRenderingContext(0);
+                    subRun.setText(subRun.data(i), 1);
+
+                    (*m_walkerMissingGlyphCallback)(subRun, m_walkerData);
+                    continue;
+                }
+            }
+
+            if (!(*m_walkerCallback)(identifier, m_walkerData))
+                break;
+
+            foundGlyph = false;
+        }
+    }
+
+private:
+    const SVGFontData* m_fontData;
+    SVGFontElement* m_fontElement;
+    SVGTextRunData& m_walkerData;
+    SVGTextRunWalkerCallback m_walkerCallback;
+    SVGTextRunWalkerMissingGlyphCallback m_walkerMissingGlyphCallback;
+};
+
+// Callback & data structures to compute the width of text using SVG Fonts
+struct SVGTextRunWalkerMeasuredLengthData {
+    int at;
+    int from;
+    int to;
+    int extraCharsAvailable;
+    int charsConsumed;
+    String glyphName;
+
+    float scale;
+    float length;
+    const Font* font;
+};
+
+static bool floatWidthUsingSVGFontCallback(const SVGGlyph& identifier, SVGTextRunWalkerMeasuredLengthData& data)
+{
+    if (data.at >= data.from && data.at < data.to)
+        data.length += identifier.horizontalAdvanceX * data.scale;
+
+    data.at++;
+    return data.at < data.to;
+}
+
+static void floatWidthMissingGlyphCallback(const TextRun& run, SVGTextRunWalkerMeasuredLengthData& data)
 {
-    WidthIterator it(&font, run);
-    charsConsumed += it.advance(run.length());
-    glyphName = it.lastGlyphName();
-    return it.runWidthSoFar();
+    // Handle system font fallback
+    FontDescription fontDescription(data.font->fontDescription());
+    fontDescription.setFamily(FontFamily());
+    Font font(fontDescription, 0, 0); // spacing handled by SVG text code.
+    font.update(data.font->fontSelector());
+
+    TextRun fallbackRun(run);
+    fallbackRun.setRenderingContext(0);
+    data.length += font.width(fallbackRun);
 }
-void SVGTextRunRenderingContext::drawSVGGlyphs(GraphicsContext* context, const TextRun& run, const SimpleFontData* fontData, const GlyphBuffer& glyphBuffer, int from, int numGlyphs, const FloatPoint& point) const
+
+static float floatWidthOfSubStringUsingSVGFont(const Font& font, const TextRun& run, int extraCharsAvailable, int from, int to, int& charsConsumed, String& glyphName)
 {
+    int newFrom = to > from ? from : to;
+    int newTo = to > from ? to : from;
+
+    from = newFrom;
+    to = newTo;
+
     SVGFontElement* fontElement = 0;
     SVGFontFaceElement* fontFaceElement = 0;
 
-    const SVGFontData* svgFontData = svgFontAndFontFaceElementForFontData(fontData, fontFaceElement, fontElement);
-    if (!fontElement || !fontFaceElement)
-        return;
-
-    // We can only paint SVGFonts if a context is available.
-    RenderSVGResource* activePaintingResource = activePaintingResourceFromRun(run);
-    RenderObject* renderObject = renderObjectFromRun(run);
-    RenderObject* parentRenderObject = firstParentRendererForNonTextNode(renderObject);
-    RenderStyle* parentRenderObjectStyle = 0;
-
-    ASSERT(renderObject);
-    if (!activePaintingResource) {
-        // TODO: We're only supporting simple filled HTML text so far.
-        RenderSVGResourceSolidColor* solidPaintingResource = RenderSVGResource::sharedSolidPaintingResource();
-        solidPaintingResource->setColor(context->fillColor());
-        activePaintingResource = solidPaintingResource;
-    }
-    bool isVerticalText = false;
-    if (parentRenderObject) {
-        parentRenderObjectStyle = parentRenderObject->style();
-        ASSERT(parentRenderObjectStyle);
-        isVerticalText = parentRenderObjectStyle->svgStyle()->isVerticalWritingMode();
-    }
+    if (const SVGFontData* fontData = svgFontAndFontFaceElementForFontData(font.primaryFont(), fontFaceElement, fontElement)) {
+        if (!fontElement)
+            return 0.0f;
 
-    float scale = scaleEmToUnits(fontData->platformData().size(), fontFaceElement->unitsPerEm());
-    ASSERT(activePaintingResource);
+        SVGTextRunWalkerMeasuredLengthData data;
 
-    FloatPoint glyphOrigin;
-    glyphOrigin.setX(svgFontData->horizontalOriginX() * scale);
-    glyphOrigin.setY(svgFontData->horizontalOriginY() * scale);
+        data.font = &font;
+        data.at = from;
+        data.from = from;
+        data.to = to;
+        data.extraCharsAvailable = extraCharsAvailable;
+        data.charsConsumed = 0;
+        data.scale = convertEmUnitToPixel(font.size(), fontFaceElement->unitsPerEm(), 1.0f);
+        data.length = 0.0f;
 
-    FloatPoint currentPoint = point;
-    RenderSVGResourceMode resourceMode = context->textDrawingMode() == TextModeStroke ? ApplyToStrokeMode : ApplyToFillMode;
-    for (int i = 0; i < numGlyphs; ++i) {
-        Glyph glyph = glyphBuffer.glyphAt(from + i);
-        if (!glyph)
-            continue;
+        RenderObject* renderObject = referencingRenderObjectFromRun(run);
+        RenderObject* parentRenderObject = firstParentRendererForNonTextNode(renderObject);
 
-        float advance = glyphBuffer.advanceAt(from + i);
-        SVGGlyph svgGlyph = fontElement->svgGlyphForGlyph(glyph);
-        ASSERT(!svgGlyph.isPartOfLigature);
-        ASSERT(svgGlyph.tableEntry == glyph);
+        String language;
+        if (SVGElement* element = static_cast<SVGElement*>(parentRenderObject->node()))
+            language = element->getAttribute(XMLNames::langAttr);
 
-        SVGGlyphElement::inheritUnspecifiedAttributes(svgGlyph, svgFontData);
+        bool isVerticalText = isVerticalWritingMode(parentRenderObject->style()->svgStyle());
 
-        // FIXME: Support arbitary SVG content as glyph (currently limited to <glyph d="..."> situations).
-        if (svgGlyph.pathData.isEmpty()) {
-            if (isVerticalText)
-                currentPoint.move(0, advance);
-            else
-                currentPoint.move(advance, 0);
-            continue;
-         }
+        SVGTextRunWalker<SVGTextRunWalkerMeasuredLengthData> runWalker(fontData, fontElement, data, floatWidthUsingSVGFontCallback, floatWidthMissingGlyphCallback);
+        runWalker.walk(run, isVerticalText, language, from, to);
+        charsConsumed = data.charsConsumed;
+        glyphName = data.glyphName;
+        return data.length;
+    }
 
-        context->save();
+    return 0.0f;
+}
 
-        if (isVerticalText) {
-            glyphOrigin.setX(svgGlyph.verticalOriginX * scale);
-            glyphOrigin.setY(svgGlyph.verticalOriginY * scale);
-         }
+float SVGTextRunRenderingContext::floatWidthUsingSVGFont(const Font& font, const TextRun& run) const
+{
+    int charsConsumed;
+    String glyphName;
+    return floatWidthOfSubStringUsingSVGFont(font, run, 0, 0, run.length(), charsConsumed, glyphName);
+}
 
-        AffineTransform glyphPathTransform;
-        glyphPathTransform.translate(currentPoint.x() + glyphOrigin.x(), currentPoint.y() + glyphOrigin.y());
-        glyphPathTransform.scale(scale, -scale);
+float SVGTextRunRenderingContext::floatWidthUsingSVGFont(const Font& font, const TextRun& run, int extraCharsAvailable, int& charsConsumed, String& glyphName) const
+{
+    return floatWidthOfSubStringUsingSVGFont(font, run, extraCharsAvailable, 0, run.length(), charsConsumed, glyphName);
+}
 
-        Path glyphPath = svgGlyph.pathData;
-        glyphPath.transform(glyphPathTransform);
+// Callback & data structures to draw text using SVG Fonts
+struct SVGTextRunWalkerDrawTextData {
+    int extraCharsAvailable;
+    int charsConsumed;
+    String glyphName;
+    Vector<SVGGlyph> glyphIdentifiers;
+    Vector<UChar> fallbackCharacters;
+};
 
-        if (activePaintingResource->applyResource(parentRenderObject, parentRenderObjectStyle, context, resourceMode)) {
-            if (renderObject && renderObject->isSVGInlineText()) {
-                const RenderSVGInlineText* textRenderer = toRenderSVGInlineText(renderObject);
-                context->setStrokeThickness(context->strokeThickness() * textRenderer->scalingFactor());
-            }
-            activePaintingResource->postApplyResource(parentRenderObject, context, resourceMode, &glyphPath);
-         }
-        context->restore();
-
-        if (isVerticalText)
-            currentPoint.move(0, advance);
-        else
-            currentPoint.move(advance, 0);
-    }
+static bool drawTextUsingSVGFontCallback(const SVGGlyph& identifier, SVGTextRunWalkerDrawTextData& data)
+{
+    data.glyphIdentifiers.append(identifier);
+    return true;
 }
 
-GlyphData SVGTextRunRenderingContext::glyphDataForCharacter(const Font& font, const TextRun& run, WidthIterator& iterator, UChar32 character, bool mirror, int currentCharacter, unsigned& advanceLength)
+static void drawTextMissingGlyphCallback(const TextRun& run, SVGTextRunWalkerDrawTextData& data)
 {
-    const SimpleFontData* primaryFont = font.primaryFont();
-    ASSERT(primaryFont);
+    ASSERT(run.length() == 1);
+    data.glyphIdentifiers.append(SVGGlyph());
+    data.fallbackCharacters.append(run[0]);
+}
+
+void SVGTextRunRenderingContext::drawTextUsingSVGFont(const Font& font, GraphicsContext* context, const TextRun& run, const FloatPoint& point, int from, int to) const
+{
+    SVGFontElement* fontElement = 0;
+    SVGFontFaceElement* fontFaceElement = 0;
+
+    if (const SVGFontData* fontData = svgFontAndFontFaceElementForFontData(font.primaryFont(), fontFaceElement, fontElement)) {
+        if (!fontElement)
+            return;
+
+        SVGTextRunWalkerDrawTextData data;
+        FloatPoint currentPoint = point;
+        float scale = convertEmUnitToPixel(font.size(), fontFaceElement->unitsPerEm(), 1.0f);
 
-    pair<GlyphData, GlyphPage*> pair = font.glyphDataAndPageForCharacter(character, mirror);
-    GlyphData glyphData = pair.first;
-    if (!glyphData.fontData)
-        return glyphData;
+        // We can only paint SVGFonts if a context is available.
+        RenderObject* renderObject = referencingRenderObjectFromRun(run);
+        RenderObject* parentRenderObject = firstParentRendererForNonTextNode(renderObject);
 
-    GlyphData missingGlyphData = primaryFont->missingGlyphData();
-    if (glyphData.glyph == missingGlyphData.glyph && glyphData.fontData == missingGlyphData.fontData)
-        return glyphData;
+        // If activePaintingResource is not set, we're dealing for HTML text rendered using SVG Fonts.
+        RenderSVGResource* activePaintingResource = activePaintingResourceFromRun(run);
+        if (!activePaintingResource) {
+            // TODO: We're only supporting simple filled HTML text so far.
+            RenderSVGResourceSolidColor* solidPaintingResource = RenderSVGResource::sharedSolidPaintingResource();
+            solidPaintingResource->setColor(context->fillColor());
+
+            activePaintingResource = solidPaintingResource;
+        }
+
+        int charsConsumed;
+        String glyphName;
+        float xStartOffset = floatWidthOfSubStringUsingSVGFont(font, run, 0, run.rtl() ? to : 0, run.rtl() ? run.length() : from, charsConsumed, glyphName);
+        FloatPoint glyphOrigin;
+
+        String language;
+        if (SVGElement* element = static_cast<SVGElement*>(parentRenderObject->node()))
+            language = element->getAttribute(XMLNames::langAttr);
+
+        RenderStyle* parentRenderObjectStyle = parentRenderObject->style();
+        bool isVerticalText = isVerticalWritingMode(parentRenderObjectStyle->svgStyle());
+        if (!isVerticalText) {
+            glyphOrigin.setX(fontData->horizontalOriginX() * scale);
+            glyphOrigin.setY(fontData->horizontalOriginY() * scale);
+        }
 
-    // Characters enclosed by an <altGlyph> element, may not be registered in the GlyphPage.
-    if (!glyphData.fontData->isSVGFont()) {
-        if (TextRun::RenderingContext* renderingContext = run.renderingContext()) {
-            RenderObject* renderObject = static_cast<SVGTextRunRenderingContext*>(renderingContext)->renderer();
-            RenderObject* parentRenderObject = renderObject->isText() ? renderObject->parent() : renderObject;
-            ASSERT(parentRenderObject);
-            if (Element* parentRenderObjectElement = toElement(parentRenderObject->node())) {
-                if (parentRenderObjectElement->hasTagName(SVGNames::altGlyphTag))
-                    glyphData.fontData = primaryFont;
+        data.extraCharsAvailable = 0;
+        data.charsConsumed = 0;
+
+        SVGTextRunWalker<SVGTextRunWalkerDrawTextData> runWalker(fontData, fontElement, data, drawTextUsingSVGFontCallback, drawTextMissingGlyphCallback);
+        runWalker.walk(run, isVerticalText, language, from, to);
+
+        RenderSVGResourceMode resourceMode = context->textDrawingMode() == TextModeStroke ? ApplyToStrokeMode : ApplyToFillMode;
+
+        unsigned numGlyphs = data.glyphIdentifiers.size();
+        unsigned fallbackCharacterIndex = 0;
+        for (unsigned i = 0; i < numGlyphs; ++i) {
+            const SVGGlyph& identifier = data.glyphIdentifiers[run.rtl() ? numGlyphs - i - 1 : i];
+            if (identifier.isValid) {
+                // FIXME: Support arbitary SVG content as glyph (currently limited to <glyph d="..."> situations).
+                if (!identifier.pathData.isEmpty()) {
+                    GraphicsContextStateSaver stateSaver(*context);
+
+                    if (isVerticalText) {
+                        glyphOrigin.setX(identifier.verticalOriginX * scale);
+                        glyphOrigin.setY(identifier.verticalOriginY * scale);
+                    }
+
+                    AffineTransform glyphPathTransform;
+                    glyphPathTransform.translate(xStartOffset + currentPoint.x() + glyphOrigin.x(), currentPoint.y() + glyphOrigin.y());
+                    glyphPathTransform.scale(scale, -scale);
+
+                    Path glyphPath = identifier.pathData;
+                    glyphPath.transform(glyphPathTransform);
+
+                    if (activePaintingResource->applyResource(parentRenderObject, parentRenderObjectStyle, context, resourceMode)) {
+                        if (renderObject && renderObject->isSVGInlineText()) {
+                            const RenderSVGInlineText* textRenderer = toRenderSVGInlineText(renderObject);
+                            context->setStrokeThickness(context->strokeThickness() * textRenderer->scalingFactor());
+                        }
+                        activePaintingResource->postApplyResource(parentRenderObject, context, resourceMode, &glyphPath);
+                    }
+                }
+
+                if (isVerticalText)
+                    currentPoint.move(0.0f, identifier.verticalAdvanceY * scale);
+                else
+                    currentPoint.move(identifier.horizontalAdvanceX * scale, 0.0f);
+            } else {
+                // Handle system font fallback
+                FontDescription fontDescription(font.fontDescription());
+                fontDescription.setFamily(FontFamily());
+                Font font(fontDescription, 0, 0); // spacing handled by SVG text code.
+                font.update(font.fontSelector());
+
+                TextRun fallbackCharacterRun(run);
+                fallbackCharacterRun.setRenderingContext(0);
+                fallbackCharacterRun.setText(&data.fallbackCharacters[run.rtl() ? data.fallbackCharacters.size() - fallbackCharacterIndex - 1 : fallbackCharacterIndex], 1);
+                font.drawText(context, fallbackCharacterRun, currentPoint);
+
+                if (isVerticalText)
+                    currentPoint.move(0.0f, font.width(fallbackCharacterRun));
+                else
+                    currentPoint.move(font.width(fallbackCharacterRun), 0.0f);
+
+                fallbackCharacterIndex++;
             }
         }
     }
+}
 
-    if (!glyphData.fontData || !glyphData.fontData->isSVGFont())
-        return glyphData;
-
-    const SimpleFontData* fontData = glyphData.fontData;
+FloatRect SVGTextRunRenderingContext::selectionRectForTextUsingSVGFont(const Font& font, const TextRun& run, const FloatPoint& point, int height, int from, int to) const
+{
+    int charsConsumed;
+    String glyphName;
 
-    SVGFontElement* fontElement = 0;
-    SVGFontFaceElement* fontFaceElement = 0;
+    return FloatRect(point.x() + floatWidthOfSubStringUsingSVGFont(font, run, 0, run.rtl() ? to : 0, run.rtl() ? run.length() : from, charsConsumed, glyphName),
+                     point.y(), floatWidthOfSubStringUsingSVGFont(font, run, 0, from, to, charsConsumed, glyphName), height);
+}
 
-    const SVGFontData* svgFontData = svgFontAndFontFaceElementForFontData(fontData, fontFaceElement, fontElement);
-    if (!fontElement || !fontFaceElement)
-        return glyphData;
-
-    // If we got here, we're dealing with a glyph defined in a SVG Font.
-    // The returned glyph by glyphDataAndPageForCharacter() is a glyph stored in the SVG Font glyph table.
-    // This doesn't necessarily mean the glyph is suitable for rendering/measuring in this context, its
-    // arabic-form/orientation/... may not match, we have to apply SVG Glyph selection to discover that.
-    if (svgFontData->applySVGGlyphSelection(iterator, glyphData, mirror, currentCharacter, advanceLength))
-        return glyphData;
-
-    GlyphPage* page = pair.second;
-    ASSERT(page);
-
-    FontFallbackList* fontList = font.fontList();
-    ASSERT(fontList);
-
-    // No suitable glyph found that is compatible with the requirments (same language, arabic-form, orientation etc.)
-    // Even though our GlyphPage contains an entry for eg. glyph "a", it's not compatible. So we have to temporarily
-    // remove the glyph data information from the GlyphPage, and retry the lookup, which handles font fallbacks correctly.
-    GlyphPageTreeNode* originalGlyphPageZero = fontList->glyphPageZero();
-    const FontFallbackList::GlyphPages& originalGlyphPages = fontList->glyphPages();
-    page->setGlyphDataForCharacter(character, glyphData.glyph, 0);
-
-    // Assure that the font fallback glyph selection worked, aka. the fallbackGlyphData font data is not the same as before.
-    GlyphData fallbackGlyphData = font.glyphDataForCharacter(character, mirror);
-    ASSERT(fallbackGlyphData.fontData != fontData);
-
-    // Restore original state of the SVG Font glyph table and the current font fallback list,
-    // to assure the next lookup of the same glyph won't immediately return the fallback glyph.
-    page->setGlyphDataForCharacter(character, glyphData.glyph, fontData);
-    fontList->setGlyphPageZero(originalGlyphPageZero);
-    fontList->setGlyphPages(originalGlyphPages);
-    return fallbackGlyphData;
+int SVGTextRunRenderingContext::offsetForPositionForTextUsingSVGFont(const Font&, const TextRun&, float, bool) const
+{
+    // TODO: Fix text selection when HTML text is drawn using a SVG Font
+    // We need to integrate the SVG text selection code in the offsetForPosition() framework.
+    // This will also fix a major issue, that SVG Text code can't select arabic strings properly.
+    return 0;
 }
 
 }
index bb92bea8caf28ac21d75a91a3a4d2af6a80d0669..831fdf72b3aac053cddb4dfacf1e98d042524af6 100644 (file)
@@ -21,7 +21,6 @@
 #ifndef SVGTextRunRenderingContext_h
 #define SVGTextRunRenderingContext_h
 
-#include "Font.h"
 #include "TextRun.h"
 
 namespace WebCore {
@@ -42,9 +41,11 @@ public:
     RenderSVGResource* activePaintingResource() const { return m_activePaintingResource; }
     void setActivePaintingResource(RenderSVGResource* object) { m_activePaintingResource = object; }
 
-    virtual GlyphData glyphDataForCharacter(const Font&, const TextRun&, WidthIterator&, UChar32 character, bool mirror, int currentCharacter, unsigned& advanceLength);
-    virtual void drawSVGGlyphs(GraphicsContext*, const TextRun&, const SimpleFontData*, const GlyphBuffer&, int from, int to, const FloatPoint&) const;
-    virtual float floatWidthUsingSVGFont(const Font&, const TextRun&, int& charsConsumed, String& glyphName) const;
+    virtual void drawTextUsingSVGFont(const Font&, GraphicsContext*, const TextRun&, const FloatPoint&, int from, int to) const;
+    virtual float floatWidthUsingSVGFont(const Font&, const TextRun&) const;
+    virtual float floatWidthUsingSVGFont(const Font&, const TextRun&, int extraCharsAvailable, int& charsConsumed, String& glyphName) const;
+    virtual FloatRect selectionRectForTextUsingSVGFont(const Font&, const TextRun&, const FloatPoint&, int h, int from, int to) const;
+    virtual int offsetForPositionForTextUsingSVGFont(const Font&, const TextRun&, float position, bool includePartialGlyphs) const;
 #endif
 
 private:
@@ -56,8 +57,6 @@ private:
     {
     }
 
-    virtual ~SVGTextRunRenderingContext() { }
-
     RenderObject* m_renderer;
 
 #if ENABLE(SVG_FONTS)
index 6c8e4d0eb1e31ce2727db322eaecb36a044cae01..96399554690b7cc5f3e36b91dd49b1011640c532 100644 (file)
@@ -101,17 +101,16 @@ RenderObject* SVGAltGlyphElement::createRenderer(RenderArena* arena, RenderStyle
     return new (arena) RenderSVGTSpan(this);
 }
 
-bool SVGAltGlyphElement::hasValidGlyphElement(String& glyphName) const
+SVGGlyphElement* SVGAltGlyphElement::glyphElement() const
 {
-    // FIXME: No support for altGlyphDef/glyphRef.
-    // This is tracked by https://bugs.webkit.org/show_bug.cgi?id=60850.
-    glyphName = getTarget(fastGetAttribute(XLinkNames::hrefAttr));
-    Element* element = treeScope()->getElementById(glyphName);
-    if (!element || !element->hasTagName(SVGNames::glyphTag))
-        return false;
-    return true;
+    Element* elt = treeScope()->getElementById(getTarget(fastGetAttribute(XLinkNames::hrefAttr)));
+    if (!elt || !elt->hasTagName(SVGNames::glyphTag))
+        return 0;
+    return static_cast<SVGGlyphElement*>(elt);
 }
 
 }
 
 #endif // ENABLE(SVG)
+
+// vim:ts=4:noet
index 3f286b644eb3ca7463256c9891485366de8f5fbf..114e666b8233ef0c73b0bbf64953689fbb1700c2 100644 (file)
@@ -40,7 +40,7 @@ public:
     const AtomicString& format() const;
     void setFormat(const AtomicString&, ExceptionCode&);
 
-    bool hasValidGlyphElement(String& glyphName) const;
+    SVGGlyphElement* glyphElement() const;
 
 private:
     SVGAltGlyphElement(const QualifiedName&, Document*);
index f419bc61d04fb2d24acf87538698d89752cfecbc..e904d3de2420de937904dc60b5de0e587bf14d22 100644 (file)
 #if ENABLE(SVG_FONTS)
 #include "SVGFontData.h"
 
-#include "RenderObject.h"
-#include "SVGAltGlyphElement.h"
 #include "SVGFontElement.h"
 #include "SVGGlyph.h"
-#include "SVGNames.h"
-#include "SVGTextRunRenderingContext.h"
-#include "TextRun.h"
-#include "WidthIterator.h"
-#include "XMLNames.h"
 
 namespace WebCore {
 
@@ -46,41 +39,28 @@ SVGFontData::SVGFontData(SVGFontFaceElement* fontFaceElement)
     ASSERT_ARG(fontFaceElement, fontFaceElement);
 }
 
-void SVGFontData::initializeFontData(SimpleFontData* fontData, float fontSize)
+void SVGFontData::initializeFontData(SimpleFontData* fontData, int size)
 {
     ASSERT(fontData);
 
     SVGFontFaceElement* svgFontFaceElement = this->svgFontFaceElement();
-    ASSERT(svgFontFaceElement);
-
-    SVGFontElement* svgFontElement = svgFontFaceElement->associatedFontElement();
-    ASSERT(svgFontElement);
-    GlyphData missingGlyphData;
-    missingGlyphData.fontData = fontData;
-    missingGlyphData.glyph = svgFontElement->missingGlyph();
-    fontData->setMissingGlyphData(missingGlyphData);
-
-    fontData->setZeroWidthSpaceGlyph(0);
-    fontData->determinePitch();
+    unsigned unitsPerEm = svgFontFaceElement->unitsPerEm();
 
-    GlyphPage* glyphPageZero = GlyphPageTreeNode::getRootChild(fontData, 0)->page();
-    if (!glyphPageZero) {
-        fontData->setSpaceGlyph(0);
-        fontData->setSpaceWidth(0);
-        return;
-    }
+    float scale = size;
+    if (unitsPerEm)
+        scale /= unitsPerEm;
 
-    unsigned unitsPerEm = svgFontFaceElement->unitsPerEm();
-    float scale = scaleEmToUnits(fontSize, unitsPerEm);
     float xHeight = svgFontFaceElement->xHeight() * scale;
     float ascent = svgFontFaceElement->ascent() * scale;
     float descent = svgFontFaceElement->descent() * scale;
-    float lineGap = 0.1f * fontSize;
+    float lineGap = 0.1f * size;
 
+    SVGFontElement* associatedFontElement = svgFontFaceElement->associatedFontElement();
     if (!xHeight) {
         // Fallback if x_heightAttr is not specified for the font element.
-        Glyph letterXGlyph = glyphPageZero->glyphDataForCharacter('x').glyph;
-        xHeight = letterXGlyph ? fontData->widthForGlyph(letterXGlyph) : 2 * ascent / 3;
+        Vector<SVGGlyph> letterXGlyphs;
+        associatedFontElement->collectGlyphsForString(String("x", 1), letterXGlyphs);
+        xHeight = letterXGlyphs.isEmpty() ? 2 * ascent / 3 : letterXGlyphs.first().horizontalAdvanceX * scale;
     }
 
     FontMetrics& fontMetrics = fontData->fontMetrics();
@@ -91,139 +71,27 @@ void SVGFontData::initializeFontData(SimpleFontData* fontData, float fontSize)
     fontMetrics.setLineSpacing(roundf(ascent) + roundf(descent) + roundf(lineGap));
     fontMetrics.setXHeight(xHeight);
 
-    // Calculate space width.
-    Glyph spaceGlyph = glyphPageZero->glyphDataForCharacter(' ').glyph;
-    fontData->setSpaceGlyph(spaceGlyph);
-    fontData->setSpaceWidth(fontData->widthForGlyph(spaceGlyph));
-
-    // Estimate average character width.
-    Glyph numeralZeroGlyph = glyphPageZero->glyphDataForCharacter('0').glyph;
-    fontData->setAvgCharWidth(numeralZeroGlyph ? fontData->widthForGlyph(numeralZeroGlyph) : fontData->spaceWidth());
-
-    // Estimate maximum character width.
-    Glyph letterWGlyph = glyphPageZero->glyphDataForCharacter('W').glyph;
-    fontData->setMaxCharWidth(letterWGlyph ? fontData->widthForGlyph(letterWGlyph) : ascent);
-}
-
-float SVGFontData::widthForSVGGlyph(Glyph glyph, float fontSize) const
-{
-    SVGFontFaceElement* svgFontFaceElement = this->svgFontFaceElement();
-    ASSERT(svgFontFaceElement);
-
-    SVGFontElement* associatedFontElement = svgFontFaceElement->associatedFontElement();
-    ASSERT(associatedFontElement);
-
-    SVGGlyph svgGlyph = associatedFontElement->svgGlyphForGlyph(glyph);
-    SVGGlyphElement::inheritUnspecifiedAttributes(svgGlyph, this);
-    return svgGlyph.horizontalAdvanceX * scaleEmToUnits(fontSize, svgFontFaceElement->unitsPerEm());
-}
-
-bool SVGFontData::applySVGGlyphSelection(WidthIterator& iterator, GlyphData& glyphData, bool mirror, int currentCharacter, unsigned& advanceLength) const
-{
-    const TextRun& run = iterator.run();
-    Vector<SVGGlyph::ArabicForm>& arabicForms = iterator.arabicForms();
-    ASSERT(int(run.charactersLength()) >= currentCharacter);
-
-    // Associate text with arabic forms, if needed.
-    String remainingTextInRun(run.data(currentCharacter), run.charactersLength() - currentCharacter);
-    remainingTextInRun = Font::normalizeSpaces(remainingTextInRun.characters(), remainingTextInRun.length());
-    if (!currentCharacter && arabicForms.isEmpty())
-        arabicForms = charactersWithArabicForm(remainingTextInRun, mirror);
+    Vector<SVGGlyph> spaceGlyphs;
+    associatedFontElement->collectGlyphsForString(String(" ", 1), spaceGlyphs);
+    fontData->setSpaceWidth(spaceGlyphs.isEmpty() ? xHeight : spaceGlyphs.first().horizontalAdvanceX * scale);
 
-    SVGFontFaceElement* svgFontFaceElement = this->svgFontFaceElement();
-    ASSERT(svgFontFaceElement);
+    Vector<SVGGlyph> numeralZeroGlyphs;
+    associatedFontElement->collectGlyphsForString(String("0", 1), numeralZeroGlyphs);
+    fontData->setAvgCharWidth(numeralZeroGlyphs.isEmpty() ? fontData->spaceWidth() : numeralZeroGlyphs.first().horizontalAdvanceX * scale);
 
-    SVGFontElement* associatedFontElement = svgFontFaceElement->associatedFontElement();
-    ASSERT(associatedFontElement);
-
-    RenderObject* renderObject = 0;
-    if (TextRun::RenderingContext* renderingContext = run.renderingContext())
-        renderObject = static_cast<SVGTextRunRenderingContext*>(renderingContext)->renderer();
-
-    String language;
-    bool isVerticalText = false;
-    String altGlyphName;
-
-    if (renderObject) {
-        RenderObject* parentRenderObject = renderObject->isText() ? renderObject->parent() : renderObject;
-        ASSERT(parentRenderObject);
-
-        isVerticalText = parentRenderObject->style()->svgStyle()->isVerticalWritingMode();
-        if (Element* parentRenderObjectElement = toElement(parentRenderObject->node())) {
-            language = parentRenderObjectElement->getAttribute(XMLNames::langAttr);
-
-            if (parentRenderObjectElement->hasTagName(SVGNames::altGlyphTag)) {
-                SVGAltGlyphElement* altGlyph = static_cast<SVGAltGlyphElement*>(parentRenderObjectElement);
-                if (!altGlyph->hasValidGlyphElement(altGlyphName))
-                    altGlyphName = emptyString();
-            }
-        }
-    }
-
-    Vector<SVGGlyph> glyphs;
-    if (!altGlyphName.isEmpty()) {
-        associatedFontElement->collectGlyphsForGlyphName(altGlyphName, glyphs);
-
-        // Assign the unicodeStringLength now that its known.
-        size_t glyphsSize = glyphs.size();
-        for (size_t i = 0; i < glyphsSize; ++i)
-            glyphs[i].unicodeStringLength = run.length();
-    } else
-        associatedFontElement->collectGlyphsForString(remainingTextInRun, glyphs);
-
-    size_t glyphsSize = glyphs.size();
-    for (size_t i = 0; i < glyphsSize; ++i) {
-        SVGGlyph& svgGlyph = glyphs[i];
-        if (svgGlyph.isPartOfLigature)
-            continue;
-        if (!isCompatibleGlyph(svgGlyph, isVerticalText, language, arabicForms, currentCharacter, currentCharacter + svgGlyph.unicodeStringLength))
-            continue;
-        iterator.setLastGlyphName(svgGlyph.glyphName);
-        glyphData.glyph = svgGlyph.tableEntry;
-        advanceLength = svgGlyph.unicodeStringLength;
-        return true;
-    }
+    Vector<SVGGlyph> letterWGlyphs;
+    associatedFontElement->collectGlyphsForString(String("W", 1), letterWGlyphs);
+    fontData->setMaxCharWidth(letterWGlyphs.isEmpty() ? ascent : letterWGlyphs.first().horizontalAdvanceX * scale);
 
-    iterator.setLastGlyphName(String());
-    return false;
-}
-
-bool SVGFontData::fillSVGGlyphPage(GlyphPage* pageToFill, unsigned offset, unsigned length, UChar* buffer, unsigned bufferLength, const SimpleFontData* fontData) const
-{
-    // bufferLength will be greater than the requested number of glyphs if the buffer contains surrogate pairs.
-    // We won't support this for now.
-    if (bufferLength > length)
-        return false;
-
-    ASSERT(fontData->isCustomFont());
-    ASSERT(fontData->isSVGFont());
-
-    SVGFontFaceElement* fontFaceElement = this->svgFontFaceElement();
-    ASSERT(fontFaceElement);
-
-    SVGFontElement* fontElement = fontFaceElement->associatedFontElement();
-    ASSERT(fontElement);
-
-    bool haveGlyphs = false;
-    Vector<SVGGlyph> glyphs;
-    for (unsigned i = 0; i < length; ++i) {
-        String lookupString(buffer + i, 1);
-        fontElement->collectGlyphsForString(lookupString, glyphs);
-        if (glyphs.isEmpty()) {
-            pageToFill->setGlyphDataForIndex(offset + i, 0, 0);
-            continue;
-        }
-
-        // Associate entry in glyph page with first valid SVGGlyph.
-        // If there are multiple valid ones, just take the first one. WidthIterator will take
-        // care of matching to the correct glyph, if multiple ones are available, as that's
-        // only possible within the context of a string (eg. arabic form matching).
-        haveGlyphs = true;
-        pageToFill->setGlyphDataForIndex(offset + i, glyphs.first().tableEntry, fontData);
-        glyphs.clear();
-    }
+    // FIXME: is there a way we can get the space glyph from the SVGGlyph above?
+    fontData->setSpaceGlyph(0);
+    fontData->setZeroWidthSpaceGlyph(0);
+    fontData->determinePitch();
 
-    return haveGlyphs;
+    GlyphData missingGlyphData;
+    missingGlyphData.fontData = fontData;
+    missingGlyphData.glyph = 0;
+    fontData->setMissingGlyphData(missingGlyphData);
 }
 
 } // namespace WebCore
index 9fa106f8d829facab5c59d85f45112a6c12c3e0a..9f0493020c6fa824d45c7bc223af8a3cc242424e 100644 (file)
@@ -35,10 +35,7 @@ public:
 
     virtual ~SVGFontData() { }
 
-    virtual void initializeFontData(SimpleFontData*, float fontSize);
-    virtual float widthForSVGGlyph(Glyph, float fontSize) const;
-    virtual bool fillSVGGlyphPage(GlyphPage*, unsigned offset, unsigned length, UChar* buffer, unsigned bufferLength, const SimpleFontData*) const;
-    virtual bool applySVGGlyphSelection(WidthIterator&, GlyphData&, bool mirror, int currentCharacter, unsigned& advanceLength) const;
+    virtual void initializeFontData(SimpleFontData*, int size);
 
     SVGFontFaceElement* svgFontFaceElement() const { return m_svgFontFaceElement; }
 
index d70680ae1e237e551d15dc3e3dacfb5030adfa49..d67dd438d98ebe1693671f6f596e5580c25a135c 100644 (file)
@@ -111,7 +111,9 @@ void SVGFontElement::registerLigaturesInGlyphCache(Vector<String>& ligatures)
                 
             // This glyph is never meant to be used for rendering, only as identifier as a part of a ligature.
             SVGGlyph newGlyphPart;
+            /* FIXME: Enable this once with the next patch.
             newGlyphPart.isPartOfLigature = true;
+            */
             m_glyphMap.addGlyphByUnicodeString(lookupString, newGlyphPart);
         }
     }
@@ -152,9 +154,11 @@ void SVGFontElement::ensureGlyphCache()
             firstMissingGlyphElement = static_cast<SVGMissingGlyphElement*>(child);
     }
 
-    // Register each character of each ligature, if needed.
+    /* FIXME: Register each character of each ligature, if needed.
+       This is not needed yet, turn it on with the next patch. With the current SVG Fonts code it would break fonts-glyph-04-t.svg
     if (!ligatures.isEmpty())
         registerLigaturesInGlyphCache(ligatures);
+    */
 
     // Register missing-glyph element, if present.
     if (firstMissingGlyphElement) {
index bf18705b982605072376bc22c3e585e05f908402..ef9327fbee1591d1a199d91c97399bd9980e15fc 100644 (file)
@@ -72,6 +72,7 @@ public:
             SVGGlyph& svgGlyph = node->glyphs.last();
             svgGlyph.priority = m_currentPriority++;
             svgGlyph.unicodeStringLength = len;
+            svgGlyph.isValid = true;
             appendToGlyphTable(svgGlyph);
         }
     }
index aa636ccbbdbd83761ad0e0005b9802634b8379ab..dc4dcf2a6d1d9ec784a4a7c27fd58508679e928d 100644 (file)
@@ -104,6 +104,4 @@ tref interfaceName=SVGTRefElement
 tspan interfaceName=SVGTSpanElement
 use
 view
-#if ENABLE_SVG_FONTS
 vkern interfaceName=SVGVKernElement
-#endif