Changeset 29700 in webkit


Ignore:
Timestamp:
Jan 21, 2008 2:56:53 PM (16 years ago)
Author:
Nikolas Zimmermann
Message:

Reviewed by Eric. Older parts reviewed by Dan.

Fixes: http://bugs.webkit.org/show_bug.cgi?id=16880 (SVGCSSFontFace should die, instead integrate within the FontCache.)
Fixes: http://bugs.webkit.org/show_bug.cgi?id=16784 (In-document fonts work only as the first child to font-face-src)

Proper integration of SVG Fonts within the existing custom font concept, removing the need for a custom SVGCSSFontFace.
Integrate within the CSSFontFaceSource logic for caching support, as well as the framework for external SVG Fonts.

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

Location:
trunk
Files:
6 added
2 deleted
86 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r29697 r29700  
     12008-01-21  Nikolas Zimmermann  <zimmermann@kde.org>
     2
     3        Reviewed by Eric.
     4
     5        Update layout test results after adding missing-glyph support.
     6        Add new layout test svg/custom/glyph-selection-lang-attribute.svg.
     7
     8        * platform/mac/svg/W3C-SVG-1.1/animate-elem-24-t-expected.txt:
     9        * platform/mac/svg/W3C-SVG-1.1/fonts-elem-01-t-expected.txt:
     10        * platform/mac/svg/W3C-SVG-1.1/fonts-elem-02-t-expected.txt:
     11        * platform/mac/svg/W3C-SVG-1.1/fonts-elem-05-t-expected.txt:
     12        * platform/mac/svg/W3C-SVG-1.1/fonts-elem-06-t-expected.txt:
     13        * platform/mac/svg/W3C-SVG-1.1/fonts-glyph-02-t-expected.txt:
     14        * platform/mac/svg/W3C-SVG-1.1/fonts-glyph-03-t-expected.checksum:
     15        * platform/mac/svg/W3C-SVG-1.1/fonts-glyph-03-t-expected.png:
     16        * platform/mac/svg/W3C-SVG-1.1/fonts-glyph-03-t-expected.txt:
     17        * platform/mac/svg/W3C-SVG-1.1/fonts-glyph-04-t-expected.txt:
     18        * platform/mac/svg/W3C-SVG-1.1/fonts-kern-01-t-expected.txt:
     19        * platform/mac/svg/W3C-SVG-1.1/masking-mask-01-b-expected.txt:
     20        * platform/mac/svg/W3C-SVG-1.1/pservers-grad-08-b-expected.checksum:
     21        * platform/mac/svg/W3C-SVG-1.1/pservers-grad-08-b-expected.png:
     22        * platform/mac/svg/W3C-SVG-1.1/pservers-grad-08-b-expected.txt:
     23        * platform/mac/svg/W3C-SVG-1.1/render-elems-06-t-expected.txt:
     24        * platform/mac/svg/W3C-SVG-1.1/render-elems-07-t-expected.txt:
     25        * platform/mac/svg/W3C-SVG-1.1/render-elems-08-t-expected.txt:
     26        * platform/mac/svg/W3C-SVG-1.1/render-groups-01-b-expected.txt:
     27        * platform/mac/svg/W3C-SVG-1.1/render-groups-03-t-expected.txt:
     28        * platform/mac/svg/W3C-SVG-1.1/text-altglyph-01-b-expected.txt:
     29        * platform/mac/svg/W3C-SVG-1.1/text-text-04-t-expected.txt:
     30        * platform/mac/svg/W3C-SVG-1.1/text-text-05-t-expected.txt:
     31        * platform/mac/svg/W3C-SVG-1.1/text-text-06-t-expected.checksum:
     32        * platform/mac/svg/W3C-SVG-1.1/text-text-06-t-expected.png:
     33        * platform/mac/svg/W3C-SVG-1.1/text-text-06-t-expected.txt:
     34        * platform/mac/svg/batik/text/textEffect-expected.checksum:
     35        * platform/mac/svg/batik/text/textEffect-expected.png:
     36        * platform/mac/svg/batik/text/textEffect-expected.txt:
     37        * platform/mac/svg/batik/text/textEffect3-expected.checksum:
     38        * platform/mac/svg/batik/text/textEffect3-expected.png:
     39        * platform/mac/svg/batik/text/textEffect3-expected.txt:
     40        * platform/mac/svg/batik/text/textPosition2-expected.txt:
     41        * platform/mac/svg/custom/dominant-baseline-hanging-expected.checksum:
     42        * platform/mac/svg/custom/dominant-baseline-hanging-expected.png:
     43        * platform/mac/svg/custom/glyph-selection-lang-attribute-expected.checksum: Added.
     44        * platform/mac/svg/custom/glyph-selection-lang-attribute-expected.png: Added.
     45        * platform/mac/svg/custom/glyph-selection-lang-attribute-expected.txt: Added.
     46        * platform/mac/svg/custom/scrolling-embedded-svg-file-image-repaint-problem-expected.txt:
     47        * platform/mac/svg/custom/use-on-g-containing-foreignObject-and-image-expected.checksum:
     48        * platform/mac/svg/custom/use-on-g-containing-foreignObject-and-image-expected.png:
     49        * platform/mac/svg/hixie/mixed/008-expected.checksum:
     50        * platform/mac/svg/hixie/mixed/008-expected.png:
     51        * platform/mac/svg/hixie/mixed/009-expected.checksum:
     52        * platform/mac/svg/hixie/mixed/009-expected.png:
     53        * platform/mac/svg/hixie/viewbox/preserveAspectRatio/001-expected.checksum:
     54        * platform/mac/svg/hixie/viewbox/preserveAspectRatio/001-expected.png:
     55        * platform/mac/svg/text/text-altglyph-01-b-expected.checksum:
     56        * platform/mac/svg/text/text-altglyph-01-b-expected.png:
     57        * platform/mac/svg/text/text-altglyph-01-b-expected.txt:
     58        * platform/mac/svg/text/text-text-04-t-expected.checksum:
     59        * platform/mac/svg/text/text-text-04-t-expected.png:
     60        * platform/mac/svg/text/text-text-04-t-expected.txt:
     61        * platform/mac/svg/text/text-text-05-t-expected.checksum:
     62        * platform/mac/svg/text/text-text-05-t-expected.png:
     63        * platform/mac/svg/text/text-text-05-t-expected.txt:
     64        * platform/mac/svg/text/text-text-06-t-expected.checksum:
     65        * platform/mac/svg/text/text-text-06-t-expected.png:
     66        * platform/mac/svg/text/text-text-06-t-expected.txt:
     67        * svg/custom/glyph-selection-lang-attribute.svg: Added.
     68
    1692008-01-21  Nikolas Zimmermann  <zimmermann@kde.org>
    270
  • trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-24-t-expected.txt

    r29246 r29700  
    44  RenderSVGRoot {svg} at (0.50,0.50) size 479x359
    55    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
    6     RenderSVGContainer {g} at (43,39.38) size 288x237.62
     6    RenderSVGContainer {g} at (42,37.64) size 289x244.36
    77      RenderSVGContainer {g} at (70,92) size 149x133
    88        RenderSVGText {text} at (70,110) size 149x23 contains 1 chunk(s)
     
    1515          RenderSVGInlineText {#text} at (0,-18) size 80x23
    1616            chunk 1 text run 1 at (100.00,220.00) startOffset 0 endOffset 10 width 80.00: "Text at 9s"
    17       RenderSVGContainer {g} at (43,39.38) size 288x237.62
    18         RenderSVGText {text} at (0,0) size 77x16 contains 1 chunk(s)
    19           RenderSVGInlineText {#text} at (0,-14) size 77x16
     17      RenderSVGContainer {g} at (42,37.64) size 289x244.36
     18        RenderSVGText {text} at (0,0) size 77x20 contains 1 chunk(s)
     19          RenderSVGInlineText {#text} at (0,-16) size 77x20
    2020            chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 11 width 76.84: "It's alive!"
    21         RenderSVGText {text} at (0,0) size 154x33 contains 1 chunk(s)
    22           RenderSVGInlineText {#text} at (0,-28) size 154x33
     21        RenderSVGText {text} at (0,0) size 154x40 contains 1 chunk(s)
     22          RenderSVGInlineText {#text} at (0,-32) size 154x40
    2323            chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 11 width 153.68: "It's alive!"
    24         RenderSVGText {text} at (100,270) size 231x49 contains 1 chunk(s)
    25           RenderSVGInlineText {#text} at (0,-42) size 231x49
     24        RenderSVGText {text} at (100,270) size 231x60 contains 1 chunk(s)
     25          RenderSVGInlineText {#text} at (0,-48) size 231x60
    2626            chunk 1 text run 1 at (100.00,270.00) startOffset 0 endOffset 11 width 230.52: "It's alive!"
    27       RenderSVGContainer {g} at (43,39.38) size 74.68x52.36 [transform={m=((1.00,0.00)(0.00,1.00)) t=(50.00,90.00)}]
    28         RenderSVGText {text} at (0,0) size 77x16 contains 1 chunk(s)
    29           RenderSVGInlineText {#text} at (0,-14) size 77x16
     27      RenderSVGContainer {g} at (42,37.64) size 76.68x55.82 [transform={m=((1.00,0.00)(0.00,1.00)) t=(50.00,90.00)}]
     28        RenderSVGText {text} at (0,0) size 77x20 contains 1 chunk(s)
     29          RenderSVGInlineText {#text} at (0,-16) size 77x20
    3030            chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 11 width 76.84: "It's alive!"
    3131          RenderSVGInlineText {#text} at (0,0) size 0x0
  • trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/fonts-elem-01-t-expected.txt

    r29246 r29700  
    2929        RenderSVGInlineText {#text} at (0,-17) size 74x22
    3030          chunk 1 text run 1 at (65.00,210.00) startOffset 0 endOffset 8 width 74.00: "SVG Font"
    31       RenderSVGContainer {g} at (165,154) size 210x83 [transform={m=((1.00,0.00)(0.00,1.00)) t=(165.00,220.00)}]
     31      RenderSVGContainer {g} at (165,172) size 210x60 [transform={m=((1.00,0.00)(0.00,1.00)) t=(165.00,220.00)}]
    3232        RenderPath {line} at (165,219.50) size 210x1 [stroke={[type=SOLID] [color=#888888]}] [fill={[type=SOLID] [color=#000000]}] [data="M0.00,0.00L210.00,0.00"]
    33         RenderSVGText {text} at (0,0) size 210x83 contains 1 chunk(s)
    34           RenderSVGInlineText {#text} at (0,-66) size 210x83
     33        RenderSVGText {text} at (0,0) size 210x60 contains 1 chunk(s)
     34          RenderSVGInlineText {#text} at (0,-48) size 210x60
    3535            chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 5 width 209.71: "Ay\x{D6}@\x{E7}"
    3636    RenderSVGText {text} at (10,340) size 264x46 contains 1 chunk(s)
  • trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/fonts-elem-02-t-expected.txt

    r29246 r29700  
    1919          RenderPath {path} at (291.24,92.25) size 48.13x51.86 [transform={m=((1.00,0.00)(0.00,1.00)) t=(4199.00,0.00)}] [fill={[type=SOLID] [color=#FFFFFF]}] [data="M1306.00,412.00C1235.33,412.00,1174.33,422.33,1123.00,443.00C1071.67,463.67,1030.33,494.33,999.00,535.00C963.00,499.67,928.00,473.00,894.00,455.00C860.00,437.00,826.33,428.00,793.00,428.00C719.00,428.00,649.33,458.00,584.00,518.00C518.67,578.00,485.67,644.33,485.00,717.00C485.00,840.33,533.33,953.00,630.00,1055.00C726.67,1157.00,837.00,1208.00,961.00,1208.00C989.00,1208.00,1012.33,1197.67,1031.00,1177.00C1049.67,1156.33,1059.00,1131.33,1059.00,1102.00C1059.00,1062.00,1025.67,1032.33,959.00,1013.00C870.33,987.67,807.67,958.67,771.00,926.00C717.00,878.67,690.00,809.00,690.00,717.00C690.00,697.67,699.00,679.00,717.00,661.00C737.67,641.00,763.33,631.67,794.00,633.00C852.00,635.67,905.67,689.67,955.00,795.00C999.67,887.00,1039.33,933.00,1074.00,933.00C1102.00,933.00,1124.67,922.67,1142.00,902.00C1159.33,881.33,1168.00,856.00,1168.00,826.00C1168.00,812.67,1166.00,792.67,1162.00,766.00C1158.00,739.33,1155.67,719.33,1155.00,706.00C1155.00,662.67,1173.67,635.33,1211.00,624.00C1225.67,619.33,1257.33,617.00,1306.00,617.00C1397.33,617.00,1461.33,639.33,1498.00,684.00C1531.33,724.00,1548.00,790.33,1548.00,883.00C1548.00,1046.33,1482.33,1179.67,1351.00,1283.00C1231.00,1377.67,1087.67,1425.00,921.00,1425.00C727.00,1425.00,575.00,1351.67,465.00,1205.00C365.67,1074.33,316.00,910.00,316.00,712.00C316.00,529.33,374.33,375.33,491.00,250.00C612.33,119.33,768.33,54.00,959.00,54.00C1013.00,54.00,1074.00,64.33,1142.00,85.00L1317.00,150.00C1346.33,160.67,1365.33,166.00,1374.00,166.00C1401.33,166.00,1425.00,155.33,1445.00,134.00C1465.00,112.67,1475.00,87.33,1475.00,58.00C1475.00,-5.33,1404.00,-56.67,1262.00,-96.00C1154.67,-125.33,1054.33,-140.00,961.00,-140.00C867.00,-140.00,771.00,-122.00,673.00,-86.00C575.00,-50.00,490.67,-1.33,420.00,60.00C213.33,238.67,110.00,456.00,110.00,712.00C110.00,968.00,180.67,1182.00,322.00,1354.00C472.00,1538.00,671.67,1630.00,921.00,1630.00C1146.33,1630.00,1339.33,1562.33,1500.00,1427.00C1668.67,1283.67,1753.00,1102.33,1753.00,883.00C1753.00,733.00,1716.33,617.67,1643.00,537.00C1566.33,453.67,1454.00,412.00,1306.00,412.00"]
    2020          RenderPath {path} at (346.96,108.86) size 25.31x44.18 [transform={m=((1.00,0.00)(0.00,1.00)) t=(6106.00,0.00)}] [fill={[type=SOLID] [color=#FFFFFF]}] [data="M770.00,-196.00C770.00,-278.67,750.00,-340.67,710.00,-382.00C670.00,-423.33,609.33,-444.33,528.00,-445.00C471.33,-445.00,417.67,-434.33,367.00,-413.00C303.00,-385.00,271.00,-346.67,271.00,-298.00C271.00,-262.00,293.67,-244.00,339.00,-244.00C363.00,-244.00,390.00,-252.00,420.00,-268.00C450.00,-284.00,482.33,-292.33,517.00,-293.00C549.67,-292.33,574.00,-284.33,590.00,-269.00C606.00,-253.67,614.00,-231.00,614.00,-201.00C614.00,-169.00,601.67,-140.33,577.00,-115.00C552.33,-89.67,514.33,-67.33,463.00,-48.00C357.00,-24.00,272.00,26.67,208.00,104.00C139.33,186.00,105.00,286.00,105.00,404.00C105.00,539.33,150.00,679.00,240.00,823.00C340.00,983.00,452.67,1063.00,578.00,1063.00C643.33,1063.00,716.33,1047.67,797.00,1017.00C899.00,977.67,950.00,929.67,950.00,873.00C950.00,847.67,941.67,825.33,925.00,806.00C908.33,786.67,887.67,776.67,863.00,776.00C843.67,776.00,827.00,781.67,813.00,793.00C799.00,804.33,785.00,816.00,771.00,828.00C731.67,859.33,667.33,875.00,578.00,875.00C510.00,875.00,442.67,814.33,376.00,693.00C315.33,581.67,285.00,485.33,285.00,404.00C285.00,316.00,315.00,246.67,375.00,196.00C431.00,148.67,503.00,125.00,591.00,125.00C631.00,125.00,673.67,135.67,719.00,157.00L835.00,219.00C855.00,229.67,869.33,235.00,878.00,235.00C902.67,235.00,924.00,225.33,942.00,206.00C960.00,186.67,969.00,164.00,969.00,138.00C969.00,69.33,883.67,10.00,713.00,-40.00C732.33,-65.33,746.67,-91.00,756.00,-117.00C765.33,-143.00,770.00,-169.33,770.00,-196.00"]
    21       RenderSVGContainer {g} at (165,74) size 210x83 [transform={m=((1.00,0.00)(0.00,1.00)) t=(165.00,140.00)}]
    22         RenderSVGText {text} at (0,0) size 210x83 contains 1 chunk(s)
    23           RenderSVGInlineText {#text} at (0,-66) size 210x83
     21      RenderSVGContainer {g} at (165,92) size 210x60 [transform={m=((1.00,0.00)(0.00,1.00)) t=(165.00,140.00)}]
     22        RenderSVGText {text} at (0,0) size 210x60 contains 1 chunk(s)
     23          RenderSVGInlineText {#text} at (0,-48) size 210x60
    2424            chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 5 width 209.71: "Ay\x{D6}@\x{E7}"
    2525      RenderSVGText {text} at (7,210) size 130x22 contains 1 chunk(s)
    2626        RenderSVGInlineText {#text} at (0,-17) size 130x22
    2727          chunk 1 text run 1 at (7.00,210.00) startOffset 0 endOffset 15 width 130.00: "Glyphs over SVG"
    28       RenderSVGContainer {g} at (165,144) size 210x83 [transform={m=((1.00,0.00)(0.00,1.00)) t=(165.00,210.00)}]
    29         RenderSVGText {text} at (0,0) size 210x83 contains 1 chunk(s)
    30           RenderSVGInlineText {#text} at (0,-66) size 210x83
     28      RenderSVGContainer {g} at (165,162) size 210x60 [transform={m=((1.00,0.00)(0.00,1.00)) t=(165.00,210.00)}]
     29        RenderSVGText {text} at (0,0) size 210x60 contains 1 chunk(s)
     30          RenderSVGInlineText {#text} at (0,-48) size 210x60
    3131            chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 5 width 209.71: "Ay\x{D6}@\x{E7}"
    3232      RenderSVGContainer {g} at (168.84,155.62) size 203.44x71.34 [transform={m=((1.00,0.00)(-0.00,-1.00)) t=(165.00,210.00)}]
  • trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/fonts-elem-05-t-expected.txt

    r29246 r29700  
    33layer at (0,0) size 480x360
    44  RenderSVGRoot {svg} at (0.50,0.50) size 479x359
    5     RenderSVGContainer {g} at (20,22) size 420x222
     5    RenderSVGContainer {g} at (20,22) size 420x224
    66      RenderSVGText {text} at (111,50) size 258x36 contains 1 chunk(s)
    77        RenderSVGInlineText {#text} at (0,-28) size 258x36
     
    2121          RenderPath {line} at (0,-0.50) size 30x1 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#000000]}] [data="M0.00,0.00L30.00,0.00"]
    2222          RenderPath {rect} at (-4,-4) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    23       RenderSVGContainer {g} at (20,80) size 420x164 [transform={m=((1.00,0.00)(0.00,1.00)) t=(20.00,120.00)}]
    24         RenderSVGContainer {g} at (20,80) size 420x44
     23      RenderSVGContainer {g} at (20,80) size 420x166 [transform={m=((1.00,0.00)(0.00,1.00)) t=(20.00,120.00)}]
     24        RenderSVGContainer {g} at (20,80) size 420x46
    2525          RenderSVGText {text} at (0,0) size 169x17 contains 1 chunk(s)
    2626            RenderSVGInlineText {#text} at (0,-13) size 169x17
     
    4747                RenderPath {rect} at (391,116) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    4848          RenderSVGText {text} at (240,0) size 180x30 contains 1 chunk(s)
    49             RenderSVGInlineText {#text} at (0,-30) size 180x30
     49            RenderSVGInlineText {#text} at (0,-24) size 180x30
    5050              chunk 1 text run 1 at (240.00,0.00) startOffset 0 endOffset 4 width 180.00: "1234"
    51         RenderSVGContainer {g} at (20,140) size 420x44 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,60.00)}]
     51        RenderSVGContainer {g} at (20,140) size 420x46 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,60.00)}]
    5252          RenderSVGText {text} at (0,0) size 109x17 contains 1 chunk(s)
    5353            RenderSVGInlineText {#text} at (0,-13) size 109x17
     
    8282                RenderPath {rect} at (391,176) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    8383          RenderSVGText {text} at (240,0) size 180x30 contains 1 chunk(s)
    84             RenderSVGInlineText {#text} at (0,-30) size 180x30
     84            RenderSVGInlineText {#text} at (0,-24) size 180x30
    8585              chunk 1 text run 1 at (240.00,0.00) startOffset 0 endOffset 4 width 180.00: "1234"
    86         RenderSVGContainer {g} at (20,200) size 420x44 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,120.00)}]
     86        RenderSVGContainer {g} at (20,200) size 420x46 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,120.00)}]
    8787          RenderSVGText {text} at (0,0) size 171x17 contains 1 chunk(s)
    8888            RenderSVGInlineText {#text} at (0,-13) size 171x17
     
    117117                RenderPath {rect} at (391,236) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    118118          RenderSVGText {text} at (240,0) size 180x30 contains 1 chunk(s)
    119             RenderSVGInlineText {#text} at (0,-30) size 180x30
     119            RenderSVGInlineText {#text} at (0,-24) size 180x30
    120120              chunk 1 text run 1 at (240.00,0.00) startOffset 0 endOffset 4 width 180.00: "1234"
    121121    RenderSVGText {text} at (10,340) size 264x46 contains 1 chunk(s)
  • trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/fonts-elem-06-t-expected.txt

    r29246 r29700  
    33layer at (0,0) size 480x360
    44  RenderSVGRoot {svg} at (0.50,0.50) size 479x359
    5     RenderSVGContainer {g} at (20,22) size 420x182
     5    RenderSVGContainer {g} at (20,22) size 420x184
    66      RenderSVGText {text} at (125,50) size 230x36 contains 1 chunk(s)
    77        RenderSVGInlineText {#text} at (0,-28) size 230x36
     
    1111          RenderPath {line} at (-0.50,-20) size 1x20 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#000000]}] [data="M0.00,0.00L0.00,-20.00"]
    1212          RenderPath {rect} at (-4,-4) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    13       RenderSVGContainer {g} at (20,90) size 420x114 [transform={m=((1.00,0.00)(0.00,1.00)) t=(20.00,120.00)}]
    14         RenderSVGContainer {g} at (20,90) size 300x34
     13      RenderSVGContainer {g} at (20,96) size 420x110 [transform={m=((1.00,0.00)(0.00,1.00)) t=(20.00,120.00)}]
     14        RenderSVGContainer {g} at (20,96) size 300x30
    1515          RenderSVGText {text} at (0,0) size 102x17 contains 1 chunk(s)
    1616            RenderSVGInlineText {#text} at (0,-13) size 102x17
     
    2727                RenderPath {rect} at (286,116) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    2828          RenderSVGText {text} at (240,0) size 60x30 contains 1 chunk(s)
    29             RenderSVGInlineText {#text} at (0,-30) size 60x30
     29            RenderSVGInlineText {#text} at (0,-24) size 60x30
    3030              chunk 1 text run 1 at (240.00,0.00) startOffset 0 endOffset 2 width 60.00: "12"
    31         RenderSVGContainer {g} at (20,130) size 360x34 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,40.00)}]
     31        RenderSVGContainer {g} at (20,136) size 360x30 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,40.00)}]
    3232          RenderSVGText {text} at (0,0) size 102x17 contains 1 chunk(s)
    3333            RenderSVGInlineText {#text} at (0,-13) size 102x17
     
    4444                RenderPath {rect} at (316,156) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    4545          RenderSVGText {text} at (240,0) size 120x30 contains 1 chunk(s)
    46             RenderSVGInlineText {#text} at (0,-30) size 120x30
     46            RenderSVGInlineText {#text} at (0,-24) size 120x30
    4747              chunk 1 text run 1 at (240.00,0.00) startOffset 0 endOffset 2 width 120.00: "12"
    48         RenderSVGContainer {g} at (20,170) size 420x34 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,80.00)}]
     48        RenderSVGContainer {g} at (20,176) size 420x30 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,80.00)}]
    4949          RenderSVGText {text} at (0,0) size 171x17 contains 1 chunk(s)
    5050            RenderSVGInlineText {#text} at (0,-13) size 171x17
     
    6161                RenderPath {rect} at (346,196) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    6262          RenderSVGText {text} at (240,0) size 180x30 contains 1 chunk(s)
    63             RenderSVGInlineText {#text} at (0,-30) size 180x30
     63            RenderSVGInlineText {#text} at (0,-24) size 180x30
    6464              chunk 1 text run 1 at (240.00,0.00) startOffset 0 endOffset 2 width 180.00: "12"
    6565    RenderSVGText {text} at (10,340) size 284x46 contains 1 chunk(s)
  • trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/fonts-glyph-02-t-expected.txt

    r29246 r29700  
    33layer at (0,0) size 480x360
    44  RenderSVGRoot {svg} at (0.50,0.50) size 479x359
    5     RenderSVGContainer {g} at (100,36) size 209x195
     5    RenderSVGContainer {g} at (100,36) size 209x180
    66      RenderSVGHiddenContainer {defs} at (0,0) size 0x0
    77      RenderSVGContainer {g} at (100,36) size 184x80
     
    99          RenderSVGInlineText {#text} at (0,-64) size 184x80
    1010            chunk 1 text run 1 at (100.00,100.00) startOffset 0 endOffset 5 width 184.00 RTL: "\x{69A} \x{69A}\x{69A}\x{69A}"
    11       RenderSVGContainer {g} at (100,118) size 209x113
    12         RenderSVGText {text} at (100,200) size 209x113 contains 1 chunk(s)
    13           RenderSVGInlineText {#text} at (0,-82) size 209x113
     11      RenderSVGContainer {g} at (100,136) size 209x80
     12        RenderSVGText {text} at (100,200) size 209x80 contains 1 chunk(s)
     13          RenderSVGInlineText {#text} at (0,-64) size 209x80
    1414            chunk 1 text run 1 at (100.00,200.00) startOffset 0 endOffset 5 width 223.92 RTL: "\x{62E} \x{62E}\x{62E}\x{62E}"
    1515    RenderSVGText {text} at (10,340) size 264x46 contains 1 chunk(s)
  • trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/fonts-glyph-03-t-expected.checksum

    r29246 r29700  
    1 90e63486ca5ed0fe3343db1aa14e49c9
     1ac8bfa36a14c4fc166e1a8e564e6be8b
  • trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/fonts-glyph-03-t-expected.txt

    r29246 r29700  
    1515          RenderSVGInlineText {#text} at (0,-40) size 25x50
    1616            chunk 1 text run 1 at (50.00,190.00) startOffset 0 endOffset 1 width 25.00: "a"
    17         RenderSVGText {text} at (50,260) size 22x50 contains 1 chunk(s)
    18           RenderSVGInlineText {#text} at (0,-40) size 22x50
    19             chunk 1 text run 1 at (50.00,260.00) startOffset 0 endOffset 1 width 22.00: "a"
     17        RenderSVGText {text} at (50,260) size 25x50 contains 1 chunk(s)
     18          RenderSVGInlineText {#text} at (0,-40) size 25x50
     19            chunk 1 text run 1 at (50.00,260.00) startOffset 0 endOffset 1 width 25.00: "a"
    2020    RenderSVGText {text} at (10,340) size 284x46 contains 1 chunk(s)
    2121      RenderSVGInlineText {#text} at (0,-36) size 284x46
  • trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/fonts-glyph-04-t-expected.txt

    r29246 r29700  
    33layer at (0,0) size 480x360
    44  RenderSVGRoot {svg} at (0.50,0.50) size 479x359
    5     RenderSVGContainer {g} at (100,60) size 64x150
     5    RenderSVGContainer {g} at (100,60) size 53x150
    66      RenderSVGHiddenContainer {defs} at (0,0) size 0x0
    7       RenderSVGText {text} at (100,100) size 64x50 contains 1 chunk(s)
    8         RenderSVGInlineText {#text} at (0,-40) size 64x50
     7      RenderSVGText {text} at (100,100) size 53x50 contains 1 chunk(s)
     8        RenderSVGInlineText {#text} at (0,-40) size 53x50
    99          chunk 1 text run 1 at (100.00,100.00) startOffset 0 endOffset 3 width 25.00: "ffl"
    10       RenderSVGText {text} at (100,200) size 64x50 contains 1 chunk(s)
    11         RenderSVGInlineText {#text} at (0,-40) size 64x50
     10      RenderSVGText {text} at (100,200) size 53x50 contains 1 chunk(s)
     11        RenderSVGInlineText {#text} at (0,-40) size 53x50
    1212          chunk 1 text run 1 at (100.00,200.00) startOffset 0 endOffset 3 width 25.00: "ffl"
    1313    RenderSVGText {text} at (10,340) size 284x46 contains 1 chunk(s)
  • trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/fonts-kern-01-t-expected.txt

    r29246 r29700  
    4545                  RenderPath {line} at (60,104) size 24x2 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L12.00,0.00"]
    4646                  RenderPath {rect} at (56,101) size 8x8 [fill={[type=SOLID] [color=#FF0000]}] [data="M-2.00,-2.00L2.00,-2.00L2.00,2.00L-2.00,2.00"]
    47             RenderSVGText {text} at (0,0) size 8x11 contains 1 chunk(s)
    48               RenderSVGInlineText {#text} at (0,-9) size 8x11
     47            RenderSVGText {text} at (0,0) size 8x10 contains 1 chunk(s)
     48              RenderSVGInlineText {#text} at (0,-8) size 8x10
    4949                chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 2 width 7.50: "12"
    5050        RenderSVGContainer {g} at (9.50,114.50) size 221x51 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,55.00)}]
     
    7676                  RenderPath {line} at (80,159) size 24x2 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L12.00,0.00"]
    7777                  RenderPath {rect} at (76,156) size 8x8 [fill={[type=SOLID] [color=#FF0000]}] [data="M-2.00,-2.00L2.00,-2.00L2.00,2.00L-2.00,2.00"]
    78             RenderSVGText {text} at (0,0) size 8x11 contains 1 chunk(s)
    79               RenderSVGInlineText {#text} at (0,-9) size 8x11
     78            RenderSVGText {text} at (0,0) size 8x10 contains 1 chunk(s)
     79              RenderSVGInlineText {#text} at (0,-8) size 8x10
    8080                chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 2 width 7.50: "12"
    8181        RenderSVGContainer {g} at (9.50,169.50) size 265.50x51 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,110.00)}]
     
    119119                  RenderPath {line} at (145,214) size 24x2 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L12.00,0.00"]
    120120                  RenderPath {rect} at (141,211) size 8x8 [fill={[type=SOLID] [color=#FF0000]}] [data="M-2.00,-2.00L2.00,-2.00L2.00,2.00L-2.00,2.00"]
    121             RenderSVGText {text} at (0,0) size 35x11 contains 1 chunk(s)
    122               RenderSVGInlineText {#text} at (0,-9) size 35x11
     121            RenderSVGText {text} at (0,0) size 35x10 contains 1 chunk(s)
     122              RenderSVGInlineText {#text} at (0,-8) size 35x10
    123123                chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 4 width 35.00: "1234"
    124124        RenderSVGContainer {g} at (9.50,224.50) size 221x51 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,165.00)}]
     
    162162                  RenderPath {line} at (145,269) size 24x2 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L12.00,0.00"]
    163163                  RenderPath {rect} at (141,266) size 8x8 [fill={[type=SOLID] [color=#FF0000]}] [data="M-2.00,-2.00L2.00,-2.00L2.00,2.00L-2.00,2.00"]
    164             RenderSVGText {text} at (0,0) size 35x11 contains 1 chunk(s)
    165               RenderSVGInlineText {#text} at (0,-9) size 35x11
     164            RenderSVGText {text} at (0,0) size 35x10 contains 1 chunk(s)
     165              RenderSVGInlineText {#text} at (0,-8) size 35x10
    166166                chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 4 width 35.00: "1234"
    167167        RenderSVGContainer {g} at (249.50,59.50) size 227.50x51 [transform={m=((1.00,0.00)(0.00,1.00)) t=(240.00,0.00)}]
     
    205205                  RenderPath {line} at (385,104) size 24x2 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L12.00,0.00"]
    206206                  RenderPath {rect} at (381,101) size 8x8 [fill={[type=SOLID] [color=#FF0000]}] [data="M-2.00,-2.00L2.00,-2.00L2.00,2.00L-2.00,2.00"]
    207             RenderSVGText {text} at (0,0) size 35x11 contains 1 chunk(s)
    208               RenderSVGInlineText {#text} at (0,-9) size 35x11
     207            RenderSVGText {text} at (0,0) size 35x10 contains 1 chunk(s)
     208              RenderSVGInlineText {#text} at (0,-8) size 35x10
    209209                chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 4 width 35.00: "1234"
    210210        RenderSVGContainer {g} at (249.50,114.50) size 233.50x51 [transform={m=((1.00,0.00)(0.00,1.00)) t=(240.00,55.00)}]
     
    248248                  RenderPath {line} at (415,159) size 24x2 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L12.00,0.00"]
    249249                  RenderPath {rect} at (411,156) size 8x8 [fill={[type=SOLID] [color=#FF0000]}] [data="M-2.00,-2.00L2.00,-2.00L2.00,2.00L-2.00,2.00"]
    250             RenderSVGText {text} at (0,0) size 35x11 contains 1 chunk(s)
    251               RenderSVGInlineText {#text} at (0,-9) size 35x11
     250            RenderSVGText {text} at (0,0) size 35x10 contains 1 chunk(s)
     251              RenderSVGInlineText {#text} at (0,-8) size 35x10
    252252                chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 4 width 35.00: "1234"
    253253        RenderSVGContainer {g} at (249.50,169.50) size 221x51 [transform={m=((1.00,0.00)(0.00,1.00)) t=(240.00,110.00)}]
     
    279279                  RenderPath {line} at (300,214) size 24x2 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L12.00,0.00"]
    280280                  RenderPath {rect} at (296,211) size 8x8 [fill={[type=SOLID] [color=#FF0000]}] [data="M-2.00,-2.00L2.00,-2.00L2.00,2.00L-2.00,2.00"]
    281             RenderSVGText {text} at (0,0) size 18x11 contains 1 chunk(s)
    282               RenderSVGInlineText {#text} at (0,-9) size 18x11
     281            RenderSVGText {text} at (0,0) size 18x10 contains 1 chunk(s)
     282              RenderSVGInlineText {#text} at (0,-8) size 18x10
    283283                chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 2 width 17.50: "12"
    284284      RenderSVGContainer {g} at (320,100) size 0x0 [transform={m=((1.00,0.00)(0.00,1.00)) t=(320.00,100.00)}]
  • trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/masking-mask-01-b-expected.txt

    r29246 r29700  
    77layer at (0,0) size 480x360
    88  RenderSVGRoot {svg} at (0.50,0.50) size 479x359
    9     RenderSVGContainer {g} at (10,7) size 390x306
     9    RenderSVGContainer {g} at (10,7) size 390x295
    1010      RenderSVGHiddenContainer {defs} at (0,0) size 0x0
    1111      RenderSVGText {text} at (10,20) size 139x16 contains 1 chunk(s)
     
    4242        RenderPath {rect} at (60,275) size 200x25 [fill={[type=SOLID] [color=#FFFFFF] [opacity=0.70]}] [data="M60.00,275.00L260.00,275.00L260.00,300.00L60.00,300.00"]
    4343      RenderSVGText {text} at (60,280) size 121x110 contains 1 chunk(s)
    44         RenderSVGInlineText {#text} at (0,-77) size 121x110
     44        RenderSVGInlineText {#text} at (0,-88) size 121x110
    4545          chunk 1 text run 1 at (60.00,280.00) startOffset 0 endOffset 3 width 121.33: "SVG"
    4646      RenderSVGText {text} at (200,225) size 200x14 contains 1 chunk(s)
  • trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/pservers-grad-08-b-expected.checksum

    r29246 r29700  
    1 639c6cbb5b4ddd5b843b5ba520fa897a
     12e8c170978bea6a2ea26711cd29257e5
  • trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/pservers-grad-08-b-expected.txt

    r29246 r29700  
    55  RenderSVGRoot {svg} at (-34.55,0.50) size 539.09x359
    66    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
    7     RenderSVGContainer {g} at (-34.55,34.50) size 539.09x296.32 [transform={m=((1.00,0.00)(0.00,1.50)) t=(0.00,0.00)}]
     7    RenderSVGContainer {g} at (-34.55,24) size 539.09x314.32 [transform={m=((1.00,0.00)(0.00,1.50)) t=(0.00,0.00)}]
    88      RenderSVGHiddenContainer {linearGradient} at (0,0) size 0x0
    99        RenderSVGGradientStop {stop} at (0,0) size 0x0
    1010        RenderSVGGradientStop {stop} at (0,0) size 0x0
    11       RenderSVGText {text} at (20,70) size 446x55 contains 1 chunk(s)
    12         RenderSVGInlineText {#text} at (0,-47) size 446x55
     11      RenderSVGText {text} at (20,70) size 446x67 contains 1 chunk(s)
     12        RenderSVGInlineText {#text} at (0,-54) size 446x67
    1313          chunk 1 text run 1 at (20.00,70.00) startOffset 0 endOffset 16 width 446.28: "Gradient on fill"
    14       RenderSVGText {text} at (20,160) size 430x44 contains 1 chunk(s)
    15         RenderSVGInlineText {#text} at (0,-38) size 430x44
     14      RenderSVGText {text} at (20,160) size 430x55 contains 1 chunk(s)
     15        RenderSVGInlineText {#text} at (0,-44) size 430x55
    1616          chunk 1 text run 1 at (20.00,160.00) startOffset 0 endOffset 18 width 429.88: "Gradient on stroke"
    1717    RenderSVGText {text} at (40,145) size 342x36 contains 1 chunk(s)
  • trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/render-elems-06-t-expected.txt

    r29246 r29700  
    44  RenderSVGRoot {svg} at (0.50,0.50) size 479x359
    55    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
    6     RenderSVGContainer {g} at (60,12) size 352x306
     6    RenderSVGContainer {g} at (60,12) size 352x328
    77      RenderSVGText {text} at (180,40) size 96x36 contains 1 chunk(s)
    88        RenderSVGInlineText {#text} at (0,-28) size 96x36
    99          chunk 1 text run 1 at (180.00,40.00) startOffset 0 endOffset 9 width 96.00: "Text fill"
    10       RenderSVGContainer {g} at (60,70) size 352x248
    11         RenderSVGText {text} at (60,280) size 152x248 contains 1 chunk(s)
    12           RenderSVGInlineText {#text} at (0,-210) size 152x248
     10      RenderSVGContainer {g} at (60,40) size 352x300
     11        RenderSVGText {text} at (60,280) size 152x300 contains 1 chunk(s)
     12          RenderSVGInlineText {#text} at (0,-240) size 152x300
    1313            chunk 1 text run 1 at (60.00,280.00) startOffset 0 endOffset 1 width 151.50: "A"
    14         RenderSVGText {text} at (260,280) size 152x248 contains 1 chunk(s)
    15           RenderSVGInlineText {#text} at (0,-210) size 152x248
     14        RenderSVGText {text} at (260,280) size 152x300 contains 1 chunk(s)
     15          RenderSVGInlineText {#text} at (0,-240) size 152x300
    1616            chunk 1 text run 1 at (260.00,280.00) startOffset 0 endOffset 1 width 151.50: "A"
    1717    RenderSVGText {text} at (10,340) size 264x46 contains 1 chunk(s)
  • trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/render-elems-07-t-expected.txt

    r29246 r29700  
    22  RenderView at (0,0) size 480x360
    33layer at (0,0) size 480x360
    4   RenderSVGRoot {svg} at (0.50,0.50) size 479x359
     4  RenderSVGRoot {svg} at (0.50,0) size 479x380
    55    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
    6     RenderSVGContainer {g} at (0.50,0.50) size 479x359
     6    RenderSVGContainer {g} at (0.50,0) size 479x380
    77      RenderSVGText {text} at (180,40) size 135x36 contains 1 chunk(s)
    88        RenderSVGInlineText {#text} at (0,-28) size 135x36
    99          chunk 1 text run 1 at (180.00,40.00) startOffset 0 endOffset 11 width 135.00: "Text stroke"
    10       RenderSVGContainer {g} at (20,30) size 445x328
    11         RenderSVGText {text} at (60,280) size 152x248 contains 1 chunk(s)
    12           RenderSVGInlineText {#text} at (0,-210) size 152x248
     10      RenderSVGContainer {g} at (20,0) size 445x380
     11        RenderSVGText {text} at (60,280) size 152x300 contains 1 chunk(s)
     12          RenderSVGInlineText {#text} at (0,-240) size 152x300
    1313            chunk 1 text run 1 at (60.00,280.00) startOffset 0 endOffset 1 width 151.50: "A"
    14         RenderSVGText {text} at (260,280) size 165x248 contains 1 chunk(s)
    15           RenderSVGInlineText {#text} at (0,-210) size 165x248
     14        RenderSVGText {text} at (260,280) size 165x300 contains 1 chunk(s)
     15          RenderSVGInlineText {#text} at (0,-240) size 165x300
    1616            chunk 1 text run 1 at (260.00,280.00) startOffset 0 endOffset 1 width 165.00: "B"
    1717      RenderSVGText {text} at (10,340) size 264x46 contains 1 chunk(s)
  • trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/render-elems-08-t-expected.txt

    r29246 r29700  
    22  RenderView at (0,0) size 480x360
    33layer at (0,0) size 480x360
    4   RenderSVGRoot {svg} at (0.50,0.50) size 479x359
     4  RenderSVGRoot {svg} at (0.50,0) size 479x380
    55    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
    6     RenderSVGContainer {g} at (0.50,0.50) size 479x359
     6    RenderSVGContainer {g} at (0.50,0) size 479x380
    77      RenderSVGText {text} at (120,40) size 228x36 contains 1 chunk(s)
    88        RenderSVGInlineText {#text} at (0,-28) size 228x36
    99          chunk 1 text run 1 at (120.00,40.00) startOffset 0 endOffset 20 width 228.00: "Text fill and stroke"
    10       RenderSVGContainer {g} at (20,30) size 445x328
    11         RenderSVGText {text} at (60,280) size 152x248 contains 1 chunk(s)
    12           RenderSVGInlineText {#text} at (0,-210) size 152x248
     10      RenderSVGContainer {g} at (20,0) size 445x380
     11        RenderSVGText {text} at (60,280) size 152x300 contains 1 chunk(s)
     12          RenderSVGInlineText {#text} at (0,-240) size 152x300
    1313            chunk 1 text run 1 at (60.00,280.00) startOffset 0 endOffset 1 width 151.50: "A"
    14         RenderSVGText {text} at (260,280) size 165x248 contains 1 chunk(s)
    15           RenderSVGInlineText {#text} at (0,-210) size 165x248
     14        RenderSVGText {text} at (260,280) size 165x300 contains 1 chunk(s)
     15          RenderSVGInlineText {#text} at (0,-240) size 165x300
    1616            chunk 1 text run 1 at (260.00,280.00) startOffset 0 endOffset 1 width 165.00: "B"
    1717      RenderSVGText {text} at (10,340) size 264x46 contains 1 chunk(s)
  • trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/render-groups-01-b-expected.txt

    r29246 r29700  
    22  RenderView at (0,0) size 480x360
    33layer at (0,0) size 480x360
    4   RenderSVGRoot {svg} at (0.50,0.50) size 479x359
    5     RenderSVGContainer {g} at (35.10,10.80) size 428.40x304.20
     4  RenderSVGRoot {svg} at (0.50,-10.80) size 479x370.30
     5    RenderSVGContainer {g} at (35.10,-10.80) size 428.40x325.80
    66      RenderSVGHiddenContainer {defs} at (0,0) size 0x0
    7       RenderSVGContainer {g} at (35.10,10.80) size 428.40x304.20 [transform={m=((1.80,0.00)(0.00,1.80)) t=(0.00,0.00)}]
     7      RenderSVGContainer {g} at (35.10,-10.80) size 428.40x325.80 [transform={m=((1.80,0.00)(0.00,1.80)) t=(0.00,0.00)}]
    88        RenderPath {rect} at (36,18) size 414x279 [fill={[type=SOLID] [color=#C0C0C0]}] [data="M20.00,10.00L250.00,10.00L250.00,165.00L20.00,165.00"]
    99        RenderPath {line} at (58.50,18) size 27x297 [stroke={[type=SOLID] [color=#FFFFFF] [stroke width=15.00]}] [fill={[type=SOLID] [color=#000000]}] [data="M40.00,10.00L40.00,175.00"]
     
    1616        RenderPath {line} at (436.50,18) size 27x297 [stroke={[type=SOLID] [color=#FFFFFF] [stroke width=15.00]}] [fill={[type=SOLID] [color=#000000]}] [data="M250.00,10.00L250.00,175.00"]
    1717        RenderPath {rect} at (35.10,17.10) size 415.80x280.80 [stroke={[type=SOLID] [color=#000000]}] [data="M20.00,10.00L250.00,10.00L250.00,165.00L20.00,165.00"]
    18         RenderSVGContainer {g} at (54,10.80) size 381.60x268.20 [opacity=0.50]
     18        RenderSVGContainer {g} at (54,-10.80) size 381.60x289.80 [opacity=0.50]
    1919          RenderSVGText {text} at (30,90) size 132x120 contains 1 chunk(s)
    20             RenderSVGInlineText {#text} at (0,-84) size 132x120
     20            RenderSVGInlineText {#text} at (0,-96) size 132x120
    2121              chunk 1 text run 1 at (30.00,90.00) startOffset 0 endOffset 3 width 132.36: "SVG"
    2222          RenderPath {rect} at (126,99) size 234x126 [fill={[type=SOLID] [color=#820032]}] [data="M70.00,55.00L200.00,55.00L200.00,125.00L70.00,125.00"]
  • trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/render-groups-03-t-expected.txt

    r29246 r29700  
    22  RenderView at (0,0) size 480x360
    33layer at (0,0) size 480x360
    4   RenderSVGRoot {svg} at (0.50,0.50) size 479x359
    5     RenderSVGContainer {g} at (35.10,10.80) size 428.40x304.20
     4  RenderSVGRoot {svg} at (0.50,-10.80) size 479x370.30
     5    RenderSVGContainer {g} at (35.10,-10.80) size 428.40x325.80
    66      RenderSVGHiddenContainer {defs} at (0,0) size 0x0
    7       RenderSVGContainer {g} at (35.10,10.80) size 428.40x304.20 [transform={m=((1.80,0.00)(0.00,1.80)) t=(0.00,0.00)}]
     7      RenderSVGContainer {g} at (35.10,-10.80) size 428.40x325.80 [transform={m=((1.80,0.00)(0.00,1.80)) t=(0.00,0.00)}]
    88        RenderPath {rect} at (36,18) size 414x279 [fill={[type=SOLID] [color=#C0C0C0]}] [data="M20.00,10.00L250.00,10.00L250.00,165.00L20.00,165.00"]
    99        RenderPath {line} at (58.50,18) size 27x297 [stroke={[type=SOLID] [color=#FFFFFF] [stroke width=15.00]}] [fill={[type=SOLID] [color=#000000]}] [data="M40.00,10.00L40.00,175.00"]
     
    1717        RenderPath {rect} at (35.10,17.10) size 415.80x280.80 [stroke={[type=SOLID] [color=#000000]}] [data="M20.00,10.00L250.00,10.00L250.00,165.00L20.00,165.00"]
    1818        RenderSVGText {text} at (30,90) size 132x120 contains 1 chunk(s)
    19           RenderSVGInlineText {#text} at (0,-84) size 132x120
     19          RenderSVGInlineText {#text} at (0,-96) size 132x120
    2020            chunk 1 text run 1 at (30.00,90.00) startOffset 0 endOffset 3 width 132.36: "SVG"
    2121        RenderPath {rect} at (126,99) size 234x126 [fill={[type=SOLID] [color=#820032]}] [data="M70.00,55.00L200.00,55.00L200.00,125.00L70.00,125.00"]
  • trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/text-altglyph-01-b-expected.txt

    r29246 r29700  
    1313      RenderSVGContainer {g} at (49.33,189.33) size 419.33x96.33
    1414        RenderSVGText {text}
    15         RenderSVGText {text} at (50,270) size 38x75 contains 1 chunk(s)
    16           RenderSVGInlineText {#text} at (0,-60) size 38x75
     15        RenderSVGText {text} at (50,270) size 38x67 contains 1 chunk(s)
     16          RenderSVGInlineText {#text} at (0,-52) size 38x67
    1717            chunk 1 text run 1 at (50.00,270.00) startOffset 0 endOffset 1 width 37.50: "D"
    18         RenderSVGText {text} at (280,270) size 188x75 contains 1 chunk(s)
    19           RenderSVGInlineText {#text} at (0,-60) size 188x75
     18        RenderSVGText {text} at (280,270) size 188x67 contains 1 chunk(s)
     19          RenderSVGInlineText {#text} at (0,-52) size 188x67
    2020            chunk 1 text run 1 at (280.00,270.00) startOffset 0 endOffset 5 width 157.50: "SASSY"
    2121    RenderSVGText {text} at (10,340) size 264x46 contains 1 chunk(s)
  • trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/text-text-04-t-expected.txt

    r29246 r29700  
    44  RenderSVGRoot {svg} at (0.50,0.50) size 479x359
    55    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
    6     RenderSVGContainer {g} at (36,20) size 418x290
    7       RenderSVGContainer {g} at (36,20) size 154x25 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,40.00)}]
     6    RenderSVGContainer {g} at (36,24) size 418x285
     7      RenderSVGContainer {g} at (36,24) size 154x20 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,40.00)}]
    88        RenderSVGText {text} at (-94,0) size 65x18 contains 1 chunk(s)
    99          RenderSVGInlineText {#text} at (0,-14) size 65x18
    1010            chunk 1 (end anchor) text run 1 at (-94.00,0.00) startOffset 0 endOffset 9 width 64.00: "Reference"
    11         RenderSVGContainer {g} at (126,20) size 64x25
     11        RenderSVGContainer {g} at (126,24) size 64x20
    1212          RenderSVGContainer {use} at (126,36) size 8x8
    1313            RenderSVGContainer {g} at (126,36) size 8x8
     
    2222            RenderSVGContainer {g} at (171,36) size 8x8 [transform={m=((1.00,0.00)(0.00,1.00)) t=(45.00,0.00)}]
    2323              RenderPath {rect} at (171,36) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    24           RenderSVGText {text} at (0,0) size 60x25 contains 1 chunk(s)
    25             RenderSVGInlineText {#text} at (0,-20) size 60x25
     24          RenderSVGText {text} at (0,0) size 60x20 contains 1 chunk(s)
     25            RenderSVGInlineText {#text} at (0,-16) size 60x20
    2626              chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 4 width 60.00: "1234"
    2727      RenderSVGHiddenContainer {defs} at (0,0) size 0x0
    2828        RenderPath {rect} at (-4,-4) size 8x8 [fill={[type=SOLID] [color=#000000]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    29       RenderSVGContainer {g} at (73,60) size 152x25 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,80.00)}]
     29      RenderSVGContainer {g} at (73,64) size 152x20 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,80.00)}]
    3030        RenderSVGText {text} at (-57,0) size 28x18 contains 1 chunk(s)
    3131          RenderSVGInlineText {#text} at (0,-14) size 28x18
     
    4646          RenderSVGContainer {g} at (206,76) size 8x8 [transform={m=((1.00,0.00)(0.00,1.00)) t=(80.00,0.00)}]
    4747            RenderPath {rect} at (206,76) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    48         RenderSVGText {text} at (20,0) size 75x25 contains 4 chunk(s)
    49           RenderSVGInlineText {#text} at (0,-20) size 75x25
     48        RenderSVGText {text} at (20,0) size 75x20 contains 4 chunk(s)
     49          RenderSVGInlineText {#text} at (0,-16) size 75x20
    5050            chunk 1 text run 1 at (20.00,0.00) startOffset 0 endOffset 1 width 15.00: "1"
    5151            chunk 2 text run 1 at (40.00,0.00) startOffset 1 endOffset 2 width 15.00: "2"
    5252            chunk 3 text run 1 at (60.00,0.00) startOffset 2 endOffset 3 width 15.00: "3"
    5353            chunk 4 text run 1 at (80.00,0.00) startOffset 3 endOffset 4 width 15.00: "4"
    54       RenderSVGContainer {g} at (56,100) size 178x25 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,120.00)}]
     54      RenderSVGContainer {g} at (56,104) size 178x20 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,120.00)}]
    5555        RenderSVGText {text} at (-74,0) size 45x18 contains 1 chunk(s)
    5656          RenderSVGInlineText {#text} at (0,-14) size 45x18
     
    7474          RenderSVGContainer {g} at (226,116) size 8x8 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,0.00)}]
    7575            RenderPath {rect} at (226,116) size 8x8 [fill={[type=SOLID] [color=#FF0000]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    76         RenderSVGText {text} at (20,0) size 75x25 contains 4 chunk(s)
    77           RenderSVGInlineText {#text} at (0,-20) size 75x25
     76        RenderSVGText {text} at (20,0) size 75x20 contains 4 chunk(s)
     77          RenderSVGInlineText {#text} at (0,-16) size 75x20
    7878            chunk 1 text run 1 at (20.00,0.00) startOffset 0 endOffset 1 width 15.00: "1"
    7979            chunk 2 text run 1 at (40.00,0.00) startOffset 1 endOffset 2 width 15.00: "2"
    8080            chunk 3 text run 1 at (60.00,0.00) startOffset 2 endOffset 3 width 15.00: "3"
    8181            chunk 4 text run 1 at (80.00,0.00) startOffset 3 endOffset 4 width 15.00: "4"
    82       RenderSVGContainer {g} at (52,140) size 168x25 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,160.00)}]
     82      RenderSVGContainer {g} at (52,144) size 168x20 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,160.00)}]
    8383        RenderSVGText {text} at (-78,0) size 49x18 contains 1 chunk(s)
    8484          RenderSVGInlineText {#text} at (0,-14) size 49x18
     
    9999          RenderSVGContainer {g} at (201,156) size 8x8 [transform={m=((1.00,0.00)(0.00,1.00)) t=(75.00,0.00)}]
    100100            RenderPath {rect} at (201,156) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    101         RenderSVGText {text} at (20,0) size 70x25 contains 3 chunk(s)
    102           RenderSVGInlineText {#text} at (0,-20) size 70x25
     101        RenderSVGText {text} at (20,0) size 70x20 contains 3 chunk(s)
     102          RenderSVGInlineText {#text} at (0,-16) size 70x20
    103103            chunk 1 text run 1 at (20.00,0.00) startOffset 0 endOffset 1 width 15.00: "1"
    104104            chunk 2 text run 1 at (40.00,0.00) startOffset 1 endOffset 2 width 15.00: "2"
    105105            chunk 3 text run 1 at (60.00,0.00) startOffset 2 endOffset 4 width 30.00: "34"
    106       RenderSVGContainer {g} at (73,170) size 117x45 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,200.00)}]
     106      RenderSVGContainer {g} at (73,174) size 117x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,200.00)}]
    107107        RenderSVGText {text} at (-57,0) size 28x18 contains 1 chunk(s)
    108108          RenderSVGInlineText {#text} at (0,-14) size 28x18
     
    120120          RenderSVGContainer {g} at (171,206) size 8x8 [transform={m=((1.00,0.00)(0.00,1.00)) t=(45.00,10.00)}]
    121121            RenderPath {rect} at (171,206) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    122         RenderSVGText {text} at (0,-10) size 60x45 contains 1 chunk(s)
    123           RenderSVGInlineText {#text} at (0,-20) size 60x45
     122        RenderSVGText {text} at (0,-10) size 60x40 contains 1 chunk(s)
     123          RenderSVGInlineText {#text} at (0,-16) size 60x40
    124124            chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 4 width 60.00: "1234"
    125       RenderSVGContainer {g} at (56,220) size 134x45 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,250.00)}]
     125      RenderSVGContainer {g} at (56,224) size 134x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,250.00)}]
    126126        RenderSVGText {text} at (-74,0) size 45x18 contains 1 chunk(s)
    127127          RenderSVGInlineText {#text} at (0,-14) size 45x18
     
    139139          RenderSVGContainer {g} at (171,256) size 8x8 [transform={m=((1.00,0.00)(0.00,1.00)) t=(45.00,10.00)}]
    140140            RenderPath {rect} at (171,256) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    141         RenderSVGText {text} at (0,-10) size 60x45 contains 1 chunk(s)
    142           RenderSVGInlineText {#text} at (0,-20) size 60x45
     141        RenderSVGText {text} at (0,-10) size 60x40 contains 1 chunk(s)
     142          RenderSVGInlineText {#text} at (0,-16) size 60x40
    143143            chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 4 width 60.00: "1234"
    144       RenderSVGContainer {g} at (52,270) size 138x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,300.00)}]
     144      RenderSVGContainer {g} at (52,274) size 138x35 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,300.00)}]
    145145        RenderSVGText {text} at (-78,0) size 49x18 contains 1 chunk(s)
    146146          RenderSVGInlineText {#text} at (0,-14) size 49x18
     
    158158          RenderSVGContainer {g} at (171,301) size 8x8 [transform={m=((1.00,0.00)(0.00,1.00)) t=(45.00,5.00)}]
    159159            RenderPath {rect} at (171,301) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    160         RenderSVGText {text} at (0,-10) size 60x40 contains 1 chunk(s)
    161           RenderSVGInlineText {#text} at (0,-20) size 60x40
     160        RenderSVGText {text} at (0,-10) size 60x35 contains 1 chunk(s)
     161          RenderSVGInlineText {#text} at (0,-16) size 60x35
    162162            chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 4 width 60.00: "1234"
    163       RenderSVGContainer {g} at (241,50) size 213x205 [transform={m=((1.00,0.00)(0.00,1.00)) t=(220.00,0.00)}]
    164         RenderSVGContainer {g} at (281,50) size 164x45 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,80.00)}]
     163      RenderSVGContainer {g} at (241,54) size 213x200 [transform={m=((1.00,0.00)(0.00,1.00)) t=(220.00,0.00)}]
     164        RenderSVGContainer {g} at (281,54) size 164x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,80.00)}]
    165165          RenderSVGText {text} at (-69,0) size 40x18 contains 1 chunk(s)
    166166            RenderSVGInlineText {#text} at (0,-14) size 40x18
     
    181181            RenderSVGContainer {g} at (426,86) size 8x8 [transform={m=((1.00,0.00)(0.00,1.00)) t=(80.00,10.00)}]
    182182              RenderPath {rect} at (426,86) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    183           RenderSVGText {text} at (20,-10) size 75x45 contains 4 chunk(s)
    184             RenderSVGInlineText {#text} at (0,-20) size 75x45
     183          RenderSVGText {text} at (20,-10) size 75x40 contains 4 chunk(s)
     184            RenderSVGInlineText {#text} at (0,-16) size 75x40
    185185              chunk 1 text run 1 at (20.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
    186186              chunk 2 text run 1 at (40.00,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
    187187              chunk 3 text run 1 at (60.00,5.00) startOffset 2 endOffset 3 width 15.00: "3"
    188188              chunk 4 text run 1 at (80.00,10.00) startOffset 3 endOffset 4 width 15.00: "4"
    189         RenderSVGContainer {g} at (264,90) size 190x54 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,120.00)}]
     189        RenderSVGContainer {g} at (264,94) size 190x50 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,120.00)}]
    190190          RenderSVGText {text} at (-86,0) size 57x18 contains 1 chunk(s)
    191191            RenderSVGInlineText {#text} at (0,-14) size 57x18
     
    209209            RenderSVGContainer {g} at (446,136) size 8x8 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,20.00)}]
    210210              RenderPath {rect} at (446,136) size 8x8 [fill={[type=SOLID] [color=#FF0000]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    211           RenderSVGText {text} at (20,-10) size 75x45 contains 4 chunk(s)
    212             RenderSVGInlineText {#text} at (0,-20) size 75x45
     211          RenderSVGText {text} at (20,-10) size 75x40 contains 4 chunk(s)
     212            RenderSVGInlineText {#text} at (0,-16) size 75x40
    213213              chunk 1 text run 1 at (20.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
    214214              chunk 2 text run 1 at (40.00,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
    215215              chunk 3 text run 1 at (60.00,5.00) startOffset 2 endOffset 3 width 15.00: "3"
    216216              chunk 4 text run 1 at (80.00,10.00) startOffset 3 endOffset 4 width 15.00: "4"
    217         RenderSVGContainer {g} at (260,130) size 180x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,160.00)}]
     217        RenderSVGContainer {g} at (260,134) size 180x35 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,160.00)}]
    218218          RenderSVGText {text} at (-90,0) size 61x18 contains 1 chunk(s)
    219219            RenderSVGInlineText {#text} at (0,-14) size 61x18
     
    234234            RenderSVGContainer {g} at (421,161) size 8x8 [transform={m=((1.00,0.00)(0.00,1.00)) t=(75.00,5.00)}]
    235235              RenderPath {rect} at (421,161) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    236           RenderSVGText {text} at (20,-10) size 70x40 contains 3 chunk(s)
    237             RenderSVGInlineText {#text} at (0,-20) size 70x40
     236          RenderSVGText {text} at (20,-10) size 70x35 contains 3 chunk(s)
     237            RenderSVGInlineText {#text} at (0,-16) size 70x35
    238238              chunk 1 text run 1 at (20.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
    239239              chunk 2 text run 1 at (40.00,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
    240240              chunk 3 text run 1 at (60.00,5.00) startOffset 2 endOffset 4 width 30.00: "34"
    241         RenderSVGContainer {g} at (241,170) size 204x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,200.00)}]
     241        RenderSVGContainer {g} at (241,174) size 204x35 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,200.00)}]
    242242          RenderSVGText {text} at (-109,0) size 80x18 contains 1 chunk(s)
    243243            RenderSVGInlineText {#text} at (0,-14) size 80x18
     
    258258            RenderSVGContainer {g} at (426,201) size 8x8 [transform={m=((1.00,0.00)(0.00,1.00)) t=(80.00,5.00)}]
    259259              RenderPath {rect} at (426,201) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    260           RenderSVGText {text} at (20,-10) size 75x40 contains 4 chunk(s)
    261             RenderSVGInlineText {#text} at (0,-20) size 75x40
     260          RenderSVGText {text} at (20,-10) size 75x35 contains 4 chunk(s)
     261            RenderSVGInlineText {#text} at (0,-16) size 75x35
    262262              chunk 1 text run 1 at (20.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
    263263              chunk 2 text run 1 at (40.00,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
    264264              chunk 3 text run 1 at (60.00,5.00) startOffset 2 endOffset 3 width 15.00: "3"
    265265              chunk 4 text run 1 at (80.00,5.00) startOffset 3 endOffset 4 width 15.00: "4"
    266         RenderSVGContainer {g} at (241,210) size 199x45 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,240.00)}]
     266        RenderSVGContainer {g} at (241,214) size 199x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,240.00)}]
    267267          RenderSVGText {text} at (-109,0) size 80x18 contains 1 chunk(s)
    268268            RenderSVGInlineText {#text} at (0,-14) size 80x18
     
    283283            RenderSVGContainer {g} at (423.52,246) size 8x8 [transform={m=((1.00,0.00)(0.00,1.00)) t=(77.52,10.00)}]
    284284              RenderPath {rect} at (423.52,246) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    285           RenderSVGText {text} at (20,-10) size 70x45 contains 3 chunk(s)
    286             RenderSVGInlineText {#text} at (0,-20) size 70x45
     285          RenderSVGText {text} at (20,-10) size 70x40 contains 3 chunk(s)
     286            RenderSVGInlineText {#text} at (0,-16) size 70x40
    287287              chunk 1 text run 1 at (20.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
    288288              chunk 2 text run 1 at (40.00,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
  • trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/text-text-05-t-expected.txt

    r29246 r29700  
    5151                RenderPath {line} at (149.50,55) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    5252                RenderPath {rect} at (146,66) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    53           RenderSVGText {text} at (0,30) size 60x11 contains 1 chunk(s)
    54             RenderSVGInlineText {#text} at (0,-9) size 60x11
     53          RenderSVGText {text} at (0,30) size 60x10 contains 1 chunk(s)
     54            RenderSVGInlineText {#text} at (0,-8) size 60x10
    5555              chunk 1 text run 1 at (0.00,30.00) startOffset 0 endOffset 4 width 60.00: "1234"
    5656          RenderSVGContainer {use} at (156,85) size 8x19
     
    7474                RenderPath {line} at (189.50,85) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    7575                RenderPath {rect} at (186,96) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    76           RenderSVGText {text} at (10,60) size 45x11 contains 4 chunk(s)
    77             RenderSVGInlineText {#text} at (0,-9) size 45x11
     76          RenderSVGText {text} at (10,60) size 45x10 contains 4 chunk(s)
     77            RenderSVGInlineText {#text} at (0,-8) size 45x10
    7878              chunk 1 text run 1 at (10.00,60.00) startOffset 0 endOffset 1 width 15.00: "1"
    7979              chunk 2 text run 1 at (20.00,60.00) startOffset 1 endOffset 2 width 15.00: "2"
     
    9090                RenderPath {line} at (209.50,115) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    9191                RenderPath {rect} at (206,126) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    92           RenderSVGText {text} at (10,90) size 95x11 contains 2 chunk(s)
    93             RenderSVGInlineText {#text} at (0,-9) size 95x11
     92          RenderSVGText {text} at (10,90) size 95x10 contains 2 chunk(s)
     93            RenderSVGInlineText {#text} at (0,-8) size 95x10
    9494              chunk 1 text run 1 at (10.00,90.00) startOffset 0 endOffset 1 width 15.00: "1"
    9595              chunk 2 text run 1 at (60.00,90.00) startOffset 1 endOffset 4 width 45.00: "234"
     
    115115                  RenderPath {line} at (194.50,155) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    116116                  RenderPath {rect} at (191,166) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    117             RenderSVGText {text} at (0,-10) size 60x31 contains 1 chunk(s)
    118               RenderSVGInlineText {#text} at (0,-9) size 60x31
     117            RenderSVGText {text} at (0,-10) size 60x30 contains 1 chunk(s)
     118              RenderSVGInlineText {#text} at (0,-8) size 60x30
    119119                chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 4 width 60.00: "1234"
    120120          RenderSVGContainer {g} at (156,165) size 49x39 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,150.00)}]
     
    139139                  RenderPath {line} at (189.50,185) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    140140                  RenderPath {rect} at (186,196) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    141             RenderSVGText {text} at (10,-10) size 45x31 contains 4 chunk(s)
    142               RenderSVGInlineText {#text} at (0,-9) size 45x31
     141            RenderSVGText {text} at (10,-10) size 45x30 contains 4 chunk(s)
     142              RenderSVGInlineText {#text} at (0,-8) size 45x30
    143143                chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
    144144                chunk 2 text run 1 at (20.00,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
     
    166166                  RenderPath {line} at (199.50,215) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    167167                  RenderPath {rect} at (196,226) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    168             RenderSVGText {text} at (10,-10) size 55x31 contains 2 chunk(s)
    169               RenderSVGInlineText {#text} at (0,-9) size 55x31
     168            RenderSVGText {text} at (10,-10) size 55x30 contains 2 chunk(s)
     169              RenderSVGInlineText {#text} at (0,-8) size 55x30
    170170                chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
    171171                chunk 2 text run 1 at (20.00,-5.00) startOffset 1 endOffset 4 width 45.00: "234"
     
    181181                  RenderPath {line} at (164.50,240) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    182182                  RenderPath {rect} at (161,251) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    183             RenderSVGText {text} at (0,-10) size 60x26 contains 1 chunk(s)
    184               RenderSVGInlineText {#text} at (0,-9) size 60x26
     183            RenderSVGText {text} at (0,-10) size 60x25 contains 1 chunk(s)
     184              RenderSVGInlineText {#text} at (0,-8) size 60x25
    185185                chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 4 width 60.00: "1234"
    186186          RenderSVGContainer {g} at (156,255) size 49x24 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,240.00)}]
     
    205205                  RenderPath {line} at (189.50,260) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    206206                  RenderPath {rect} at (186,271) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    207             RenderSVGText {text} at (10,-10) size 45x17 contains 4 chunk(s)
    208               RenderSVGInlineText {#text} at (0,-9) size 45x17
     207            RenderSVGText {text} at (10,-10) size 45x16 contains 4 chunk(s)
     208              RenderSVGInlineText {#text} at (0,-8) size 45x16
    209209                chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
    210210                chunk 2 text run 1 at (20.00,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
     
    222222                  RenderPath {line} at (209.50,290) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    223223                  RenderPath {rect} at (206,301) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    224             RenderSVGText {text} at (10,-10) size 95x17 contains 2 chunk(s)
    225               RenderSVGInlineText {#text} at (0,-9) size 95x17
     224            RenderSVGText {text} at (10,-10) size 95x16 contains 2 chunk(s)
     225              RenderSVGInlineText {#text} at (0,-8) size 95x16
    226226                chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
    227227                chunk 2 text run 1 at (60.00,-5.00) startOffset 1 endOffset 4 width 45.00: "234"
     
    241241                  RenderPath {line} at (249.50,55) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    242242                  RenderPath {rect} at (246,66) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    243               RenderSVGText {text} at (-30,30) size 60x11 contains 1 chunk(s)
    244                 RenderSVGInlineText {#text} at (0,-9) size 60x11
     243              RenderSVGText {text} at (-30,30) size 60x10 contains 1 chunk(s)
     244                RenderSVGInlineText {#text} at (0,-8) size 60x10
    245245                  chunk 1 (middle anchor) text run 1 at (-30.00,30.00) startOffset 0 endOffset 4 width 60.00: "1234"
    246246              RenderSVGContainer {g} at (256,85) size 8x19 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,60.00)}]
     
    260260                  RenderPath {line} at (289.50,85) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    261261                  RenderPath {rect} at (286,96) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    262               RenderSVGText {text} at (2,60) size 46x11 contains 4 chunk(s)
    263                 RenderSVGInlineText {#text} at (0,-9) size 46x11
     262              RenderSVGText {text} at (2,60) size 46x10 contains 4 chunk(s)
     263                RenderSVGInlineText {#text} at (0,-8) size 46x10
    264264                  chunk 1 (middle anchor) text run 1 at (2.50,60.00) startOffset 0 endOffset 1 width 15.00: "1"
    265265                  chunk 2 (middle anchor) text run 1 at (12.50,60.00) startOffset 1 endOffset 2 width 15.00: "2"
     
    274274                  RenderPath {line} at (309.50,115) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    275275                  RenderPath {rect} at (306,126) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    276               RenderSVGText {text} at (2,90) size 81x11 contains 2 chunk(s)
    277                 RenderSVGInlineText {#text} at (0,-9) size 81x11
     276              RenderSVGText {text} at (2,90) size 81x10 contains 2 chunk(s)
     277                RenderSVGInlineText {#text} at (0,-8) size 81x10
    278278                  chunk 1 (middle anchor) text run 1 at (2.50,90.00) startOffset 0 endOffset 1 width 15.00: "1"
    279279                  chunk 2 (middle anchor) text run 1 at (37.50,90.00) startOffset 1 endOffset 4 width 45.00: "234"
     
    295295                    RenderPath {line} at (294.50,155) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    296296                    RenderPath {rect} at (291,166) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    297                 RenderSVGText {text} at (-30,-10) size 60x31 contains 1 chunk(s)
    298                   RenderSVGInlineText {#text} at (0,-9) size 60x31
     297                RenderSVGText {text} at (-30,-10) size 60x30 contains 1 chunk(s)
     298                  RenderSVGInlineText {#text} at (0,-8) size 60x30
    299299                    chunk 1 (middle anchor) text run 1 at (-30.00,-10.00) startOffset 0 endOffset 4 width 60.00: "1234"
    300300              RenderSVGContainer {g} at (252,165) size 46x39 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,150.00)}]
     
    315315                    RenderPath {line} at (289.50,185) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    316316                    RenderPath {rect} at (286,196) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    317                 RenderSVGText {text} at (2,-10) size 46x31 contains 4 chunk(s)
    318                   RenderSVGInlineText {#text} at (0,-9) size 46x31
     317                RenderSVGText {text} at (2,-10) size 46x30 contains 4 chunk(s)
     318                  RenderSVGInlineText {#text} at (0,-8) size 46x30
    319319                    chunk 1 (middle anchor) text run 1 at (2.50,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
    320320                    chunk 2 (middle anchor) text run 1 at (12.50,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
     
    338338                    RenderPath {line} at (299.50,215) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    339339                    RenderPath {rect} at (296,226) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    340                 RenderSVGText {text} at (-3,-10) size 45x31 contains 2 chunk(s)
    341                   RenderSVGInlineText {#text} at (1,-9) size 45x31
     340                RenderSVGText {text} at (-3,-10) size 45x30 contains 2 chunk(s)
     341                  RenderSVGInlineText {#text} at (1,-8) size 45x30
    342342                    chunk 1 (middle anchor) text run 1 at (2.50,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
    343343                    chunk 2 (middle anchor) text run 1 at (-2.50,-5.00) startOffset 1 endOffset 4 width 45.00: "234"
     
    351351                    RenderPath {line} at (264.50,240) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    352352                    RenderPath {rect} at (261,251) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    353                 RenderSVGText {text} at (-30,-10) size 60x26 contains 1 chunk(s)
    354                   RenderSVGInlineText {#text} at (0,-9) size 60x26
     353                RenderSVGText {text} at (-30,-10) size 60x25 contains 1 chunk(s)
     354                  RenderSVGInlineText {#text} at (0,-8) size 60x25
    355355                    chunk 1 (middle anchor) text run 1 at (-30.00,-10.00) startOffset 0 endOffset 4 width 60.00: "1234"
    356356              RenderSVGContainer {g} at (252,255) size 46x24 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,240.00)}]
     
    371371                    RenderPath {line} at (289.50,260) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    372372                    RenderPath {rect} at (286,271) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    373                 RenderSVGText {text} at (2,-10) size 46x17 contains 4 chunk(s)
    374                   RenderSVGInlineText {#text} at (0,-9) size 46x17
     373                RenderSVGText {text} at (2,-10) size 46x16 contains 4 chunk(s)
     374                  RenderSVGInlineText {#text} at (0,-8) size 46x16
    375375                    chunk 1 (middle anchor) text run 1 at (2.50,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
    376376                    chunk 2 (middle anchor) text run 1 at (12.50,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
     
    386386                    RenderPath {line} at (309.50,290) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    387387                    RenderPath {rect} at (306,301) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    388                 RenderSVGText {text} at (2,-10) size 81x17 contains 2 chunk(s)
    389                   RenderSVGInlineText {#text} at (0,-9) size 81x17
     388                RenderSVGText {text} at (2,-10) size 81x16 contains 2 chunk(s)
     389                  RenderSVGInlineText {#text} at (0,-8) size 81x16
    390390                    chunk 1 (middle anchor) text run 1 at (2.50,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
    391391                    chunk 2 (middle anchor) text run 1 at (37.50,-5.00) startOffset 1 endOffset 4 width 45.00: "234"
     
    405405                  RenderPath {line} at (349.50,55) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    406406                  RenderPath {rect} at (346,66) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    407               RenderSVGText {text} at (-60,30) size 60x11 contains 1 chunk(s)
    408                 RenderSVGInlineText {#text} at (0,-9) size 60x11
     407              RenderSVGText {text} at (-60,30) size 60x10 contains 1 chunk(s)
     408                RenderSVGInlineText {#text} at (0,-8) size 60x10
    409409                  chunk 1 (end anchor) text run 1 at (-60.00,30.00) startOffset 0 endOffset 4 width 60.00: "1234"
    410410              RenderSVGContainer {g} at (356,85) size 8x19 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,60.00)}]
     
    424424                  RenderPath {line} at (389.50,85) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    425425                  RenderPath {rect} at (386,96) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    426               RenderSVGText {text} at (-5,60) size 45x11 contains 4 chunk(s)
    427                 RenderSVGInlineText {#text} at (0,-9) size 45x11
     426              RenderSVGText {text} at (-5,60) size 45x10 contains 4 chunk(s)
     427                RenderSVGInlineText {#text} at (0,-8) size 45x10
    428428                  chunk 1 (end anchor) text run 1 at (-5.00,60.00) startOffset 0 endOffset 1 width 15.00: "1"
    429429                  chunk 2 (end anchor) text run 1 at (5.00,60.00) startOffset 1 endOffset 2 width 15.00: "2"
     
    438438                  RenderPath {line} at (409.50,115) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    439439                  RenderPath {rect} at (406,126) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    440               RenderSVGText {text} at (-5,90) size 65x11 contains 2 chunk(s)
    441                 RenderSVGInlineText {#text} at (0,-9) size 65x11
     440              RenderSVGText {text} at (-5,90) size 65x10 contains 2 chunk(s)
     441                RenderSVGInlineText {#text} at (0,-8) size 65x10
    442442                  chunk 1 (end anchor) text run 1 at (-5.00,90.00) startOffset 0 endOffset 1 width 15.00: "1"
    443443                  chunk 2 (end anchor) text run 1 at (15.00,90.00) startOffset 1 endOffset 4 width 45.00: "234"
     
    459459                    RenderPath {line} at (394.50,155) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    460460                    RenderPath {rect} at (391,166) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    461                 RenderSVGText {text} at (-60,-10) size 60x31 contains 1 chunk(s)
    462                   RenderSVGInlineText {#text} at (0,-9) size 60x31
     461                RenderSVGText {text} at (-60,-10) size 60x30 contains 1 chunk(s)
     462                  RenderSVGInlineText {#text} at (0,-8) size 60x30
    463463                    chunk 1 (end anchor) text run 1 at (-60.00,-10.00) startOffset 0 endOffset 4 width 60.00: "1234"
    464464              RenderSVGContainer {g} at (345,165) size 49x39 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,150.00)}]
     
    479479                    RenderPath {line} at (389.50,185) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    480480                    RenderPath {rect} at (386,196) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    481                 RenderSVGText {text} at (-5,-10) size 45x31 contains 4 chunk(s)
    482                   RenderSVGInlineText {#text} at (0,-9) size 45x31
     481                RenderSVGText {text} at (-5,-10) size 45x30 contains 4 chunk(s)
     482                  RenderSVGInlineText {#text} at (0,-8) size 45x30
    483483                    chunk 1 (end anchor) text run 1 at (-5.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
    484484                    chunk 2 (end anchor) text run 1 at (5.00,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
     
    502502                    RenderPath {line} at (399.50,215) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    503503                    RenderPath {rect} at (396,226) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    504                 RenderSVGText {text} at (-25,-10) size 45x31 contains 2 chunk(s)
    505                   RenderSVGInlineText {#text} at (0,-9) size 45x31
     504                RenderSVGText {text} at (-25,-10) size 45x30 contains 2 chunk(s)
     505                  RenderSVGInlineText {#text} at (0,-8) size 45x30
    506506                    chunk 1 (end anchor) text run 1 at (-5.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
    507507                    chunk 2 (end anchor) text run 1 at (-25.00,-5.00) startOffset 1 endOffset 4 width 45.00: "234"
     
    515515                    RenderPath {line} at (364.50,240) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    516516                    RenderPath {rect} at (361,251) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    517                 RenderSVGText {text} at (-60,-10) size 60x26 contains 1 chunk(s)
    518                   RenderSVGInlineText {#text} at (0,-9) size 60x26
     517                RenderSVGText {text} at (-60,-10) size 60x25 contains 1 chunk(s)
     518                  RenderSVGInlineText {#text} at (0,-8) size 60x25
    519519                    chunk 1 (end anchor) text run 1 at (-60.00,-10.00) startOffset 0 endOffset 4 width 60.00: "1234"
    520520              RenderSVGContainer {g} at (345,255) size 49x24 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,240.00)}]
     
    535535                    RenderPath {line} at (389.50,260) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    536536                    RenderPath {rect} at (386,271) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    537                 RenderSVGText {text} at (-5,-10) size 45x17 contains 4 chunk(s)
    538                   RenderSVGInlineText {#text} at (0,-9) size 45x17
     537                RenderSVGText {text} at (-5,-10) size 45x16 contains 4 chunk(s)
     538                  RenderSVGInlineText {#text} at (0,-8) size 45x16
    539539                    chunk 1 (end anchor) text run 1 at (-5.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
    540540                    chunk 2 (end anchor) text run 1 at (5.00,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
     
    550550                    RenderPath {line} at (409.50,290) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    551551                    RenderPath {rect} at (406,301) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    552                 RenderSVGText {text} at (-5,-10) size 65x17 contains 2 chunk(s)
    553                   RenderSVGInlineText {#text} at (0,-9) size 65x17
     552                RenderSVGText {text} at (-5,-10) size 65x16 contains 2 chunk(s)
     553                  RenderSVGInlineText {#text} at (0,-8) size 65x16
    554554                    chunk 1 (end anchor) text run 1 at (-5.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
    555555                    chunk 2 (end anchor) text run 1 at (15.00,-5.00) startOffset 1 endOffset 4 width 45.00: "234"
  • trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/text-text-06-t-expected.checksum

    r29246 r29700  
    1 0cd7683922e8a2169a09a5c8c2738faa
     1a99f738d4b08147a3ea0019fe304b41c
  • trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/text-text-06-t-expected.txt

    r29246 r29700  
    33layer at (0,0) size 480x360
    44  RenderSVGRoot {svg} at (0.50,0.50) size 479x359
    5     RenderSVGContainer {g} at (30,55) size 274x209
     5    RenderSVGContainer {g} at (30,55) size 278x209
    66      RenderSVGHiddenContainer {defs} at (0,0) size 0x0
    77      RenderSVGHiddenContainer {defs} at (0,0) size 0x0
     
    99          RenderPath {line} at (-0.50,-15) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#000000]}] [data="M0.00,0.00L0.00,-15.00"]
    1010          RenderPath {rect} at (-4,-4) size 8x8 [fill={[type=SOLID] [color=#000000]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    11       RenderSVGContainer {g} at (30,55) size 274x209 [transform={m=((1.00,0.00)(0.00,1.00)) t=(20.00,30.00)}]
     11      RenderSVGContainer {g} at (30,55) size 278x209 [transform={m=((1.00,0.00)(0.00,1.00)) t=(20.00,30.00)}]
    1212        RenderSVGContainer {g} at (30,59) size 71x154 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,40.00)}]
    1313          RenderSVGText {text} at (0,0) size 62x14 contains 1 chunk(s)
     
    2020            RenderSVGInlineText {#text} at (0,-11) size 71x14
    2121              chunk 1 text run 1 at (0.00,140.00) startOffset 0 endOffset 15 width 71.00: "x/y positioning"
    22         RenderSVGContainer {g} at (126,55) size 178x19 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,40.00)}]
     22        RenderSVGContainer {g} at (126,55) size 182x19 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,40.00)}]
    2323          RenderSVGContainer {use} at (126,55) size 8x19
    2424            RenderSVGContainer {g} at (126,55) size 8x19 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,0.00)}]
     
    5151                RenderPath {line} at (249.50,55) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    5252                RenderPath {rect} at (246,66) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    53           RenderSVGText {text} at (10,0) size 173x11 contains 6 chunk(s)
    54             RenderSVGInlineText {#text} at (0,-9) size 173x11
    55               chunk 1 text run 1 at (10.00,0.00) startOffset 0 endOffset 1 width 3.00: "f"
    56               chunk 2 text run 1 at (180.00,0.00) startOffset 1 endOffset 2 width 3.00: "i"
     53          RenderSVGText {text} at (10,0) size 178x10 contains 6 chunk(s)
     54            RenderSVGInlineText {#text} at (0,-8) size 178x10
     55              chunk 1 text run 1 at (10.00,0.00) startOffset 0 endOffset 1 width 8.00: "f"
     56              chunk 2 text run 1 at (180.00,0.00) startOffset 1 endOffset 2 width 8.00: "i"
    5757              chunk 3 text run 1 at (40.00,0.00) startOffset 2 endOffset 3 width 15.00: "1"
    5858              chunk 4 text run 1 at (70.00,0.00) startOffset 3 endOffset 4 width 15.00: "2"
    5959              chunk 5 text run 1 at (100.00,0.00) startOffset 4 endOffset 5 width 15.00: "3"
    6060              chunk 6 text run 1 at (130.00,0.00) startOffset 5 endOffset 6 width 15.00: "4"
    61         RenderSVGContainer {g} at (116,85) size 70x79 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,80.00)}]
     61        RenderSVGContainer {g} at (116,85) size 80x79 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,80.00)}]
    6262          RenderSVGContainer {use} at (116,85) size 8x19
    6363            RenderSVGContainer {g} at (116,85) size 8x19 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,-10.00)}]
     
    9090                RenderPath {line} at (179.50,125) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    9191                RenderPath {rect} at (176,136) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    92           RenderSVGText {text} at (0,-10) size 66x71 contains 1 chunk(s)
    93             RenderSVGInlineText {#text} at (0,-9) size 66x71
     92          RenderSVGText {text} at (0,-10) size 76x70 contains 1 chunk(s)
     93            RenderSVGInlineText {#text} at (0,-8) size 76x70
    9494              chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 6 width 75.00: "fi1234"
    95         RenderSVGContainer {g} at (126,185) size 178x79 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,180.00)}]
     95        RenderSVGContainer {g} at (126,185) size 182x79 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,180.00)}]
    9696          RenderSVGContainer {use} at (126,185) size 8x19
    9797            RenderSVGContainer {g} at (126,185) size 8x19 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,-10.00)}]
     
    124124                RenderPath {line} at (249.50,225) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    125125                RenderPath {rect} at (246,236) size 8x8 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    126           RenderSVGText {text} at (10,-10) size 173x71 contains 6 chunk(s)
    127             RenderSVGInlineText {#text} at (0,-9) size 173x71
    128               chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 1 width 3.00: "f"
    129               chunk 2 text run 1 at (180.00,50.00) startOffset 1 endOffset 2 width 3.00: "i"
     126          RenderSVGText {text} at (10,-10) size 178x70 contains 6 chunk(s)
     127            RenderSVGInlineText {#text} at (0,-8) size 178x70
     128              chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 1 width 8.00: "f"
     129              chunk 2 text run 1 at (180.00,50.00) startOffset 1 endOffset 2 width 8.00: "i"
    130130              chunk 3 text run 1 at (40.00,0.00) startOffset 2 endOffset 3 width 15.00: "1"
    131131              chunk 4 text run 1 at (70.00,10.00) startOffset 3 endOffset 4 width 15.00: "2"
  • trunk/LayoutTests/platform/mac/svg/batik/text/textEffect-expected.checksum

    r29246 r29700  
    1 b6f84d3a372f31d2df519de70c9f16eb
     1735df6f1f116dd2c96bbd5602ca040b5
  • trunk/LayoutTests/platform/mac/svg/batik/text/textEffect-expected.txt

    r29246 r29700  
    2424        RenderSVGInlineText {#text} at (0,-48) size 152x59
    2525          chunk 1 (middle anchor) text run 1 at (44.00,160.00) startOffset 0 endOffset 5 width 152.00: "BATIK"
    26       RenderSVGText {text} at (252,160) size 155x59 contains 1 chunk(s)
    27         RenderSVGInlineText {#text} at (0,-48) size 155x59
     26      RenderSVGText {text} at (252,160) size 155x52 contains 1 chunk(s)
     27        RenderSVGInlineText {#text} at (0,-42) size 155x52
    2828          chunk 1 (middle anchor) text run 1 at (252.94,160.00) startOffset 0 endOffset 5 width 154.11: "BATIK"
    2929      RenderSVGText {text} at (44,260) size 152x59 contains 1 chunk(s)
    3030        RenderSVGInlineText {#text} at (0,-48) size 152x59
    3131          chunk 1 (middle anchor) text run 1 at (44.00,260.00) startOffset 0 endOffset 5 width 152.00: "BATIK"
    32       RenderSVGText {text} at (252,260) size 155x59 contains 1 chunk(s)
    33         RenderSVGInlineText {#text} at (0,-48) size 155x59
     32      RenderSVGText {text} at (252,260) size 155x52 contains 1 chunk(s)
     33        RenderSVGInlineText {#text} at (0,-42) size 155x52
    3434          chunk 1 (middle anchor) text run 1 at (252.94,260.00) startOffset 0 endOffset 5 width 154.11: "BATIK"
    3535      RenderSVGText {text} at (44,360) size 152x59 contains 1 chunk(s)
    3636        RenderSVGInlineText {#text} at (0,-48) size 152x59
    3737          chunk 1 (middle anchor) text run 1 at (44.00,360.00) startOffset 0 endOffset 5 width 152.00: "BATIK"
    38       RenderSVGText {text} at (252,360) size 155x59 contains 1 chunk(s)
    39         RenderSVGInlineText {#text} at (0,-48) size 155x59
     38      RenderSVGText {text} at (252,360) size 155x52 contains 1 chunk(s)
     39        RenderSVGInlineText {#text} at (0,-42) size 155x52
    4040          chunk 1 (middle anchor) text run 1 at (252.94,360.00) startOffset 0 endOffset 5 width 154.11: "BATIK"
    4141      RenderSVGText {text} at (87,400) size 66x14 contains 1 chunk(s)
  • trunk/LayoutTests/platform/mac/svg/batik/text/textEffect3-expected.checksum

    r29246 r29700  
    1 c6e3a77963cbb5dcd1cee329b469140e
     116a7ecf12f57a042979bf50b70b1255b
  • trunk/LayoutTests/platform/mac/svg/batik/text/textEffect3-expected.txt

    r29246 r29700  
    44  RenderView at (0,0) size 800x600
    55layer at (0,0) size 450x500
    6   RenderSVGRoot {svg} at (52,16) size 435.80x387
    7     RenderSVGContainer {g} at (52,16) size 435.80x387
     6  RenderSVGRoot {svg} at (52,16) size 433.80x387
     7    RenderSVGContainer {g} at (52,16) size 433.80x387
    88      RenderSVGText {text} at (99,30) size 252x17 contains 1 chunk(s)
    99        RenderSVGInlineText {#text} at (0,-14) size 252x17
     
    3636            chunk 1 (middle anchor) text run 5 at (150.50,140.00) startOffset 0 endOffset 1 width 35.00: "K"
    3737        RenderSVGInlineText {#text} at (0,0) size 0x0
    38       RenderSVGText {text} at (263,140) size 148x79 contains 1 chunk(s)
    39         RenderSVGInlineText {#text} at (0,-28) size 36x59
     38      RenderSVGText {text} at (263,140) size 146x72 contains 1 chunk(s)
     39        RenderSVGInlineText {#text} at (0,-22) size 36x52
    4040          chunk 1 (middle anchor) text run 1 at (263.69,160.00) startOffset 0 endOffset 1 width 35.57: "B"
    41         RenderSVGTSpan {tspan} at (0,0) size 18x29
    42           RenderSVGInlineText {#text} at (36,-24) size 18x29
     41        RenderSVGTSpan {tspan} at (0,0) size 18x26
     42          RenderSVGInlineText {#text} at (36,-21) size 18x26
    4343            chunk 1 (middle anchor) text run 2 at (299.26,140.00) startOffset 0 endOffset 1 width 17.79: "A"
    44         RenderSVGInlineText {#text} at (54,-48) size 33x59
     44        RenderSVGInlineText {#text} at (54,-42) size 33x52
    4545          chunk 1 (middle anchor) text run 3 at (317.05,140.00) startOffset 0 endOffset 1 width 32.58: "T"
    46         RenderSVGTSpan {tspan} at (0,0) size 12x44
    47           RenderSVGInlineText {#text} at (86,-36) size 12x44
     46        RenderSVGTSpan {tspan} at (0,0) size 12x40
     47          RenderSVGInlineText {#text} at (86,-32) size 12x40
    4848            chunk 1 (middle anchor) text run 4 at (349.63,140.00) startOffset 0 endOffset 1 width 11.11: "I"
    49         RenderSVGTSpan {tspan} at (0,0) size 55x69
    50           RenderSVGInlineText {#text} at (93,-46) size 55x69
     49        RenderSVGTSpan {tspan} at (0,0) size 52x62
     50          RenderSVGInlineText {#text} at (94,-40) size 52x62
    5151            chunk 1 (middle anchor) text run 5 at (360.74,140.00) startOffset 0 endOffset 1 width 35.57: "K"
    5252        RenderSVGInlineText {#text} at (0,0) size 0x0
     
    6666            chunk 1 (middle anchor) text run 5 at (150.50,240.00) startOffset 0 endOffset 1 width 35.00: "K"
    6767        RenderSVGInlineText {#text} at (0,0) size 0x0
    68       RenderSVGText {text} at (263,240) size 148x79 contains 1 chunk(s)
    69         RenderSVGInlineText {#text} at (0,-28) size 36x59
     68      RenderSVGText {text} at (263,240) size 146x72 contains 1 chunk(s)
     69        RenderSVGInlineText {#text} at (0,-22) size 36x52
    7070          chunk 1 (middle anchor) text run 1 at (263.69,260.00) startOffset 0 endOffset 1 width 35.57: "B"
    71         RenderSVGTSpan {tspan} at (0,0) size 18x29
    72           RenderSVGInlineText {#text} at (36,-24) size 18x29
     71        RenderSVGTSpan {tspan} at (0,0) size 18x26
     72          RenderSVGInlineText {#text} at (36,-21) size 18x26
    7373            chunk 1 (middle anchor) text run 2 at (299.26,240.00) startOffset 0 endOffset 1 width 17.79: "A"
    74         RenderSVGInlineText {#text} at (54,-48) size 33x59
     74        RenderSVGInlineText {#text} at (54,-42) size 33x52
    7575          chunk 1 (middle anchor) text run 3 at (317.05,240.00) startOffset 0 endOffset 1 width 32.58: "T"
    76         RenderSVGTSpan {tspan} at (0,0) size 12x44
    77           RenderSVGInlineText {#text} at (86,-36) size 12x44
     76        RenderSVGTSpan {tspan} at (0,0) size 12x40
     77          RenderSVGInlineText {#text} at (86,-32) size 12x40
    7878            chunk 1 (middle anchor) text run 4 at (349.63,240.00) startOffset 0 endOffset 1 width 11.11: "I"
    79         RenderSVGTSpan {tspan} at (0,0) size 55x69
    80           RenderSVGInlineText {#text} at (93,-46) size 55x69
     79        RenderSVGTSpan {tspan} at (0,0) size 52x62
     80          RenderSVGInlineText {#text} at (94,-40) size 52x62
    8181            chunk 1 (middle anchor) text run 5 at (360.74,240.00) startOffset 0 endOffset 1 width 35.57: "K"
    8282        RenderSVGInlineText {#text} at (0,0) size 0x0
     
    9696            chunk 1 (middle anchor) text run 5 at (150.50,340.00) startOffset 0 endOffset 1 width 35.00: "K"
    9797        RenderSVGInlineText {#text} at (0,0) size 0x0
    98       RenderSVGText {text} at (263,340) size 148x79 contains 1 chunk(s)
    99         RenderSVGInlineText {#text} at (0,-28) size 36x59
     98      RenderSVGText {text} at (263,340) size 146x72 contains 1 chunk(s)
     99        RenderSVGInlineText {#text} at (0,-22) size 36x52
    100100          chunk 1 (middle anchor) text run 1 at (263.69,360.00) startOffset 0 endOffset 1 width 35.57: "B"
    101         RenderSVGTSpan {tspan} at (0,0) size 18x29
    102           RenderSVGInlineText {#text} at (36,-24) size 18x29
     101        RenderSVGTSpan {tspan} at (0,0) size 18x26
     102          RenderSVGInlineText {#text} at (36,-21) size 18x26
    103103            chunk 1 (middle anchor) text run 2 at (299.26,340.00) startOffset 0 endOffset 1 width 17.79: "A"
    104         RenderSVGInlineText {#text} at (54,-48) size 33x59
     104        RenderSVGInlineText {#text} at (54,-42) size 33x52
    105105          chunk 1 (middle anchor) text run 3 at (317.05,340.00) startOffset 0 endOffset 1 width 32.58: "T"
    106         RenderSVGTSpan {tspan} at (0,0) size 12x44
    107           RenderSVGInlineText {#text} at (86,-36) size 12x44
     106        RenderSVGTSpan {tspan} at (0,0) size 12x40
     107          RenderSVGInlineText {#text} at (86,-32) size 12x40
    108108            chunk 1 (middle anchor) text run 4 at (349.63,340.00) startOffset 0 endOffset 1 width 11.11: "I"
    109         RenderSVGTSpan {tspan} at (0,0) size 55x69
    110           RenderSVGInlineText {#text} at (93,-46) size 55x69
     109        RenderSVGTSpan {tspan} at (0,0) size 52x62
     110          RenderSVGInlineText {#text} at (94,-40) size 52x62
    111111            chunk 1 (middle anchor) text run 5 at (360.74,340.00) startOffset 0 endOffset 1 width 35.57: "K"
    112112        RenderSVGInlineText {#text} at (0,0) size 0x0
  • trunk/LayoutTests/platform/mac/svg/batik/text/textPosition2-expected.txt

    r29246 r29700  
    77      RenderSVGInlineText {#text} at (0,-14) size 106x17
    88        chunk 1 (middle anchor) text run 1 at (172.00,30.00) startOffset 0 endOffset 15 width 106.00: "Text Position 2"
    9     RenderSVGContainer {g} at (50,59) size 399x294
    10       RenderSVGText {text} at (50,80) size 53x26 contains 1 chunk(s)
    11         RenderSVGInlineText {#text} at (0,-21) size 53x26
     9    RenderSVGContainer {g} at (50,61) size 399x292
     10      RenderSVGText {text} at (50,80) size 53x23 contains 1 chunk(s)
     11        RenderSVGInlineText {#text} at (0,-19) size 53x23
    1212          chunk 1 text run 1 at (50.00,80.00) startOffset 0 endOffset 5 width 53.36: "Batik"
    1313      RenderSVGText {text} at (50,100) size 103x11 contains 1 chunk(s)
    1414        RenderSVGInlineText {#text} at (0,-9) size 103x11
    1515          chunk 1 text run 1 at (50.00,100.00) startOffset 0 endOffset 21 width 103.00: "<text x=\"100\" y=\"80\">"
    16       RenderSVGText {text} at (240,80) size 133x26 contains 1 chunk(s)
    17         RenderSVGInlineText {#text} at (0,-21) size 133x26
     16      RenderSVGText {text} at (240,80) size 133x23 contains 1 chunk(s)
     17        RenderSVGInlineText {#text} at (0,-19) size 133x23
    1818          chunk 1 text run 1 at (240.00,80.00) startOffset 0 endOffset 5 width 53.36: "Batik"
    1919      RenderSVGText {text} at (240,100) size 194x11 contains 1 chunk(s)
    2020        RenderSVGInlineText {#text} at (0,-9) size 194x11
    2121          chunk 1 text run 1 at (240.00,100.00) startOffset 0 endOffset 41 width 194.00: "<text x=\"240\" y=\"80\" letter-spacing=\"20\">"
    22       RenderSVGText {text} at (50,140) size 92x26 contains 5 chunk(s)
    23         RenderSVGInlineText {#text} at (0,-21) size 92x26
     22      RenderSVGText {text} at (50,140) size 92x23 contains 5 chunk(s)
     23        RenderSVGInlineText {#text} at (0,-19) size 92x23
    2424          chunk 1 text run 1 at (50.00,140.00) startOffset 0 endOffset 1 width 16.01: "B"
    2525          chunk 2 text run 1 at (70.00,140.00) startOffset 1 endOffset 2 width 13.35: "a"
     
    3030        RenderSVGInlineText {#text} at (0,-9) size 175x11
    3131          chunk 1 text run 1 at (50.00,160.00) startOffset 0 endOffset 35 width 175.00: "<text x=\"50 70 90 110 130\" y=\"140\">"
    32       RenderSVGText {text} at (240,140) size 133x26 contains 1 chunk(s)
    33         RenderSVGInlineText {#text} at (0,-21) size 133x26
     32      RenderSVGText {text} at (240,140) size 133x23 contains 1 chunk(s)
     33        RenderSVGInlineText {#text} at (0,-19) size 133x23
    3434          chunk 1 text run 1 at (240.00,140.00) startOffset 0 endOffset 5 width 53.36: "Batik"
    3535      RenderSVGText {text} at (240,160) size 175x11 contains 1 chunk(s)
    3636        RenderSVGInlineText {#text} at (0,-9) size 175x11
    3737          chunk 1 text run 1 at (240.00,160.00) startOffset 0 endOffset 35 width 175.00: "<text dx=\"240 20 20 20 20\" y=\"140\">"
    38       RenderSVGText {text} at (50,200) size 53x26 contains 1 chunk(s)
    39         RenderSVGTSpan {tspan} at (0,0) size 53x26
    40           RenderSVGInlineText {#text} at (0,-21) size 53x26
     38      RenderSVGText {text} at (50,200) size 53x23 contains 1 chunk(s)
     39        RenderSVGTSpan {tspan} at (0,0) size 53x23
     40          RenderSVGInlineText {#text} at (0,-19) size 53x23
    4141            chunk 1 text run 1 at (50.00,200.00) startOffset 0 endOffset 5 width 53.36: "Batik"
    4242      RenderSVGText {text} at (50,220) size 112x11 contains 1 chunk(s)
    4343        RenderSVGInlineText {#text} at (0,-9) size 112x11
    4444          chunk 1 text run 1 at (50.00,220.00) startOffset 0 endOffset 22 width 112.00: "<tspan x=\"50\" y=\"200\">"
    45       RenderSVGText {text} at (240,200) size 133x26 contains 1 chunk(s)
    46         RenderSVGTSpan {tspan} at (0,0) size 133x26
    47           RenderSVGInlineText {#text} at (0,-21) size 133x26
     45      RenderSVGText {text} at (240,200) size 133x23 contains 1 chunk(s)
     46        RenderSVGTSpan {tspan} at (0,0) size 133x23
     47          RenderSVGInlineText {#text} at (0,-19) size 133x23
    4848            chunk 1 text run 1 at (240.00,200.00) startOffset 0 endOffset 5 width 53.36: "Batik"
    4949      RenderSVGText {text} at (240,220) size 209x11 contains 1 chunk(s)
     
    5151          RenderSVGInlineText {#text} at (0,-9) size 209x11
    5252            chunk 1 text run 1 at (240.00,220.00) startOffset 0 endOffset 43 width 209.00: "<tspan x=\"240\" y=\"200\" letter-spacing=\"20\">"
    53       RenderSVGText {text} at (50,260) size 92x26 contains 5 chunk(s)
    54         RenderSVGTSpan {tspan} at (0,0) size 92x26
    55           RenderSVGInlineText {#text} at (0,-21) size 92x26
     53      RenderSVGText {text} at (50,260) size 92x23 contains 5 chunk(s)
     54        RenderSVGTSpan {tspan} at (0,0) size 92x23
     55          RenderSVGInlineText {#text} at (0,-19) size 92x23
    5656            chunk 1 text run 1 at (50.00,260.00) startOffset 0 endOffset 1 width 16.01: "B"
    5757            chunk 2 text run 1 at (70.00,260.00) startOffset 1 endOffset 2 width 13.35: "a"
     
    6262        RenderSVGInlineText {#text} at (0,-9) size 184x11
    6363          chunk 1 text run 1 at (50.00,280.00) startOffset 0 endOffset 36 width 184.00: "<tspan x=\"50 70 90 110 130\" y=\"260\">"
    64       RenderSVGText {text} at (240,260) size 133x26 contains 1 chunk(s)
    65         RenderSVGTSpan {tspan} at (0,0) size 133x26
    66           RenderSVGInlineText {#text} at (0,-21) size 133x26
     64      RenderSVGText {text} at (240,260) size 133x23 contains 1 chunk(s)
     65        RenderSVGTSpan {tspan} at (0,0) size 133x23
     66          RenderSVGInlineText {#text} at (0,-19) size 133x23
    6767            chunk 1 text run 1 at (240.00,260.00) startOffset 0 endOffset 5 width 53.36: "Batik"
    6868      RenderSVGText {text} at (240,280) size 184x11 contains 1 chunk(s)
    6969        RenderSVGInlineText {#text} at (0,-9) size 184x11
    7070          chunk 1 text run 1 at (240.00,280.00) startOffset 0 endOffset 36 width 184.00: "<tspan dx=\"240 20 20 20 20\" y=\"260\">"
    71       RenderSVGText {text} at (50,320) size 92x26 contains 5 chunk(s)
    72         RenderSVGTSpan {tspan} at (0,0) size 92x26
    73           RenderSVGInlineText {#text} at (0,-21) size 92x26
     71      RenderSVGText {text} at (50,320) size 92x23 contains 5 chunk(s)
     72        RenderSVGTSpan {tspan} at (0,0) size 92x23
     73          RenderSVGInlineText {#text} at (0,-19) size 92x23
    7474            chunk 1 text run 1 at (50.00,320.00) startOffset 0 endOffset 1 width 16.01: "B"
    7575            chunk 2 text run 1 at (70.00,320.00) startOffset 1 endOffset 2 width 13.35: "a"
     
    8383          RenderSVGInlineText {#text} at (33,2) size 137x11
    8484            chunk 2 text run 1 at (83.00,351.00) startOffset 0 endOffset 27 width 137.00: "dx=\"0 10 20 30 40\" y=\"320\">"
    85       RenderSVGText {text} at (240,320) size 133x26 contains 1 chunk(s)
    86         RenderSVGTSpan {tspan} at (0,0) size 133x26
    87           RenderSVGInlineText {#text} at (0,-21) size 133x26
     85      RenderSVGText {text} at (240,320) size 133x23 contains 1 chunk(s)
     86        RenderSVGTSpan {tspan} at (0,0) size 133x23
     87          RenderSVGInlineText {#text} at (0,-19) size 133x23
    8888            chunk 1 text run 1 at (240.00,320.00) startOffset 0 endOffset 5 width 53.36: "Batik"
    8989      RenderSVGText {text} at (240,340) size 191x22 contains 2 chunk(s)
  • trunk/LayoutTests/platform/mac/svg/custom/dominant-baseline-hanging-expected.checksum

    r29633 r29700  
    1 16166fd6c4cc5c3b0d8c90679f5191ae
     1a1bee48ed8445d1470673ab95a1ba50a
  • trunk/LayoutTests/platform/mac/svg/custom/scrolling-embedded-svg-file-image-repaint-problem-expected.txt

    r29246 r29700  
    5959                          RenderView at (0,0) size 480x360
    6060                        layer at (0,0) size 480x360
    61                           RenderSVGRoot {svg} at (0.50,0.50) size 479x359
    62                             RenderSVGContainer {g} at (35.10,10.80) size 428.40x304.20
     61                          RenderSVGRoot {svg} at (0.50,-10.80) size 479x370.30
     62                            RenderSVGContainer {g} at (35.10,-10.80) size 428.40x325.80
    6363                              RenderSVGHiddenContainer {defs} at (0,0) size 0x0
    64                               RenderSVGContainer {g} at (35.10,10.80) size 428.40x304.20 [transform={m=((1.80,0.00)(0.00,1.80)) t=(0.00,0.00)}]
     64                              RenderSVGContainer {g} at (35.10,-10.80) size 428.40x325.80 [transform={m=((1.80,0.00)(0.00,1.80)) t=(0.00,0.00)}]
    6565                                RenderPath {rect} at (36,18) size 414x279 [fill={[type=SOLID] [color=#C0C0C0]}] [data="M20.00,10.00L250.00,10.00L250.00,165.00L20.00,165.00"]
    6666                                RenderPath {line} at (58.50,18) size 27x297 [stroke={[type=SOLID] [color=#FFFFFF] [stroke width=15.00]}] [fill={[type=SOLID] [color=#000000]}] [data="M40.00,10.00L40.00,175.00"]
     
    7373                                RenderPath {line} at (436.50,18) size 27x297 [stroke={[type=SOLID] [color=#FFFFFF] [stroke width=15.00]}] [fill={[type=SOLID] [color=#000000]}] [data="M250.00,10.00L250.00,175.00"]
    7474                                RenderPath {rect} at (35.10,17.10) size 415.80x280.80 [stroke={[type=SOLID] [color=#000000]}] [data="M20.00,10.00L250.00,10.00L250.00,165.00L20.00,165.00"]
    75                                 RenderSVGContainer {g} at (54,10.80) size 381.60x268.20 [opacity=0.50]
     75                                RenderSVGContainer {g} at (54,-10.80) size 381.60x289.80 [opacity=0.50]
    7676                                  RenderSVGText {text} at (30,90) size 132x120 contains 1 chunk(s)
    77                                     RenderSVGInlineText {#text} at (0,-84) size 132x120
     77                                    RenderSVGInlineText {#text} at (0,-96) size 132x120
    7878                                      chunk 1 text run 1 at (30.00,90.00) startOffset 0 endOffset 3 width 132.36: "SVG"
    7979                                  RenderPath {rect} at (126,99) size 234x126 [fill={[type=SOLID] [color=#820032]}] [data="M70.00,55.00L200.00,55.00L200.00,125.00L70.00,125.00"]
  • trunk/LayoutTests/platform/mac/svg/custom/use-on-g-containing-foreignObject-and-image-expected.checksum

    r29633 r29700  
    1 c6fb4ae13b95ee9a9ebae63541cfd03b
     10f23a1fbd345da676e6bb2083c2a4af6
  • trunk/LayoutTests/platform/mac/svg/hixie/mixed/008-expected.checksum

    r29633 r29700  
    1 5ece9b987ac06296694c51166883080c
     1ca934a9924f37281d24a27d7d85e09c8
  • trunk/LayoutTests/platform/mac/svg/hixie/mixed/009-expected.checksum

    r29633 r29700  
    1 15e2d1fd6057e9bf9a02fe222f733688
     15b9c3aa2f242d5d7a5608021b088abd8
  • trunk/LayoutTests/platform/mac/svg/hixie/viewbox/preserveAspectRatio/001-expected.checksum

    r27850 r29700  
    1 1c678b82703cb46c3373e2cdfa8078fb
     180ce9eedc85e1016484fd611de1001ae
  • trunk/LayoutTests/platform/mac/svg/text/text-altglyph-01-b-expected.checksum

    r29246 r29700  
    1 b1937e38977f2e9e89a236f106e915d3
     1fd7d85442fd8965616c2e56e28017939
  • trunk/LayoutTests/platform/mac/svg/text/text-altglyph-01-b-expected.txt

    r29246 r29700  
    1313      RenderSVGContainer {g} at (82.22,315.56) size 698.89x160.56
    1414        RenderSVGText {text}
    15         RenderSVGText {text} at (50,270) size 38x75 contains 1 chunk(s)
    16           RenderSVGInlineText {#text} at (0,-60) size 38x75
     15        RenderSVGText {text} at (50,270) size 38x67 contains 1 chunk(s)
     16          RenderSVGInlineText {#text} at (0,-52) size 38x67
    1717            chunk 1 text run 1 at (50.00,270.00) startOffset 0 endOffset 1 width 37.50: "D"
    18         RenderSVGText {text} at (280,270) size 188x75 contains 1 chunk(s)
    19           RenderSVGInlineText {#text} at (0,-60) size 188x75
     18        RenderSVGText {text} at (280,270) size 188x67 contains 1 chunk(s)
     19          RenderSVGInlineText {#text} at (0,-52) size 188x67
    2020            chunk 1 text run 1 at (280.00,270.00) startOffset 0 endOffset 5 width 157.50: "SASSY"
    2121    RenderSVGText {text} at (10,340) size 264x46 contains 1 chunk(s)
  • trunk/LayoutTests/platform/mac/svg/text/text-text-04-t-expected.checksum

    r29246 r29700  
    1 f4dc5baeaa0b5afb6a916782ebfb12cc
     1359be44fd8c2475b53ef6fa1682c0cd9
  • trunk/LayoutTests/platform/mac/svg/text/text-text-04-t-expected.txt

    r29246 r29700  
    44  RenderSVGRoot {svg} at (0.83,0.83) size 798.33x598.33
    55    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
    6     RenderSVGContainer {g} at (60,33.33) size 696.67x483.33
    7       RenderSVGContainer {g} at (60.00,33.33) size 256.67x41.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,40.00)}]
     6    RenderSVGContainer {g} at (60,40) size 696.67x475
     7      RenderSVGContainer {g} at (60.00,40) size 256.67x33.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,40.00)}]
    88        RenderSVGText {text} at (-94,0) size 65x18 contains 1 chunk(s)
    99          RenderSVGInlineText {#text} at (0,-14) size 65x18
    1010            chunk 1 (end anchor) text run 1 at (-94.00,0.00) startOffset 0 endOffset 9 width 64.00: "Reference"
    11         RenderSVGContainer {g} at (210.00,33.33) size 106.67x41.67
     11        RenderSVGContainer {g} at (210.00,40) size 106.67x33.33
    1212          RenderSVGContainer {use} at (210.00,60.00) size 13.33x13.33
    1313            RenderSVGContainer {g} at (210.00,60.00) size 13.33x13.33
     
    2222            RenderSVGContainer {g} at (285,60.00) size 13.33x13.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(45.00,0.00)}]
    2323              RenderPath {rect} at (285,60.00) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    24           RenderSVGText {text} at (0,0) size 60x25 contains 1 chunk(s)
    25             RenderSVGInlineText {#text} at (0,-20) size 60x25
     24          RenderSVGText {text} at (0,0) size 60x20 contains 1 chunk(s)
     25            RenderSVGInlineText {#text} at (0,-16) size 60x20
    2626              chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 4 width 60.00: "1234"
    2727      RenderSVGHiddenContainer {defs} at (0,0) size 0x0
    2828        RenderPath {rect} at (-4,-4) size 8x8 [fill={[type=SOLID] [color=#000000]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    29       RenderSVGContainer {g} at (121.67,100.00) size 253.33x41.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,80.00)}]
     29      RenderSVGContainer {g} at (121.67,106.67) size 253.33x33.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,80.00)}]
    3030        RenderSVGText {text} at (-57,0) size 28x18 contains 1 chunk(s)
    3131          RenderSVGInlineText {#text} at (0,-14) size 28x18
     
    4646          RenderSVGContainer {g} at (343.33,126.67) size 13.33x13.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(80.00,0.00)}]
    4747            RenderPath {rect} at (343.33,126.67) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    48         RenderSVGText {text} at (20,0) size 75x25 contains 4 chunk(s)
    49           RenderSVGInlineText {#text} at (0,-20) size 75x25
     48        RenderSVGText {text} at (20,0) size 75x20 contains 4 chunk(s)
     49          RenderSVGInlineText {#text} at (0,-16) size 75x20
    5050            chunk 1 text run 1 at (20.00,0.00) startOffset 0 endOffset 1 width 15.00: "1"
    5151            chunk 2 text run 1 at (40.00,0.00) startOffset 1 endOffset 2 width 15.00: "2"
    5252            chunk 3 text run 1 at (60.00,0.00) startOffset 2 endOffset 3 width 15.00: "3"
    5353            chunk 4 text run 1 at (80.00,0.00) startOffset 3 endOffset 4 width 15.00: "4"
    54       RenderSVGContainer {g} at (93.33,166.67) size 296.67x41.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,120.00)}]
     54      RenderSVGContainer {g} at (93.33,173.33) size 296.67x33.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,120.00)}]
    5555        RenderSVGText {text} at (-74,0) size 45x18 contains 1 chunk(s)
    5656          RenderSVGInlineText {#text} at (0,-14) size 45x18
     
    7474          RenderSVGContainer {g} at (376.67,193.33) size 13.33x13.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,0.00)}]
    7575            RenderPath {rect} at (376.67,193.33) size 13.33x13.33 [fill={[type=SOLID] [color=#FF0000]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    76         RenderSVGText {text} at (20,0) size 75x25 contains 4 chunk(s)
    77           RenderSVGInlineText {#text} at (0,-20) size 75x25
     76        RenderSVGText {text} at (20,0) size 75x20 contains 4 chunk(s)
     77          RenderSVGInlineText {#text} at (0,-16) size 75x20
    7878            chunk 1 text run 1 at (20.00,0.00) startOffset 0 endOffset 1 width 15.00: "1"
    7979            chunk 2 text run 1 at (40.00,0.00) startOffset 1 endOffset 2 width 15.00: "2"
    8080            chunk 3 text run 1 at (60.00,0.00) startOffset 2 endOffset 3 width 15.00: "3"
    8181            chunk 4 text run 1 at (80.00,0.00) startOffset 3 endOffset 4 width 15.00: "4"
    82       RenderSVGContainer {g} at (86.67,233.33) size 280x41.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,160.00)}]
     82      RenderSVGContainer {g} at (86.67,240.00) size 280x33.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,160.00)}]
    8383        RenderSVGText {text} at (-78,0) size 49x18 contains 1 chunk(s)
    8484          RenderSVGInlineText {#text} at (0,-14) size 49x18
     
    9999          RenderSVGContainer {g} at (335,260) size 13.33x13.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(75.00,0.00)}]
    100100            RenderPath {rect} at (335,260) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    101         RenderSVGText {text} at (20,0) size 70x25 contains 3 chunk(s)
    102           RenderSVGInlineText {#text} at (0,-20) size 70x25
     101        RenderSVGText {text} at (20,0) size 70x20 contains 3 chunk(s)
     102          RenderSVGInlineText {#text} at (0,-16) size 70x20
    103103            chunk 1 text run 1 at (20.00,0.00) startOffset 0 endOffset 1 width 15.00: "1"
    104104            chunk 2 text run 1 at (40.00,0.00) startOffset 1 endOffset 2 width 15.00: "2"
    105105            chunk 3 text run 1 at (60.00,0.00) startOffset 2 endOffset 4 width 30.00: "34"
    106       RenderSVGContainer {g} at (121.67,283.33) size 195x75 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,200.00)}]
     106      RenderSVGContainer {g} at (121.67,290.00) size 195x66.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,200.00)}]
    107107        RenderSVGText {text} at (-57,0) size 28x18 contains 1 chunk(s)
    108108          RenderSVGInlineText {#text} at (0,-14) size 28x18
     
    120120          RenderSVGContainer {g} at (285,343.33) size 13.33x13.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(45.00,10.00)}]
    121121            RenderPath {rect} at (285,343.33) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    122         RenderSVGText {text} at (0,-10) size 60x45 contains 1 chunk(s)
    123           RenderSVGInlineText {#text} at (0,-20) size 60x45
     122        RenderSVGText {text} at (0,-10) size 60x40 contains 1 chunk(s)
     123          RenderSVGInlineText {#text} at (0,-16) size 60x40
    124124            chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 4 width 60.00: "1234"
    125       RenderSVGContainer {g} at (93.33,366.67) size 223.33x75 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,250.00)}]
     125      RenderSVGContainer {g} at (93.33,373.33) size 223.33x66.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,250.00)}]
    126126        RenderSVGText {text} at (-74,0) size 45x18 contains 1 chunk(s)
    127127          RenderSVGInlineText {#text} at (0,-14) size 45x18
     
    139139          RenderSVGContainer {g} at (285,426.67) size 13.33x13.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(45.00,10.00)}]
    140140            RenderPath {rect} at (285,426.67) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    141         RenderSVGText {text} at (0,-10) size 60x45 contains 1 chunk(s)
    142           RenderSVGInlineText {#text} at (0,-20) size 60x45
     141        RenderSVGText {text} at (0,-10) size 60x40 contains 1 chunk(s)
     142          RenderSVGInlineText {#text} at (0,-16) size 60x40
    143143            chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 4 width 60.00: "1234"
    144       RenderSVGContainer {g} at (86.67,450) size 230x66.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,300.00)}]
     144      RenderSVGContainer {g} at (86.67,456.67) size 230x58.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,300.00)}]
    145145        RenderSVGText {text} at (-78,0) size 49x18 contains 1 chunk(s)
    146146          RenderSVGInlineText {#text} at (0,-14) size 49x18
     
    158158          RenderSVGContainer {g} at (285,501.67) size 13.33x13.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(45.00,5.00)}]
    159159            RenderPath {rect} at (285,501.67) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    160         RenderSVGText {text} at (0,-10) size 60x40 contains 1 chunk(s)
    161           RenderSVGInlineText {#text} at (0,-20) size 60x40
     160        RenderSVGText {text} at (0,-10) size 60x35 contains 1 chunk(s)
     161          RenderSVGInlineText {#text} at (0,-16) size 60x35
    162162            chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 4 width 60.00: "1234"
    163       RenderSVGContainer {g} at (401.67,83.33) size 355x341.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(220.00,0.00)}]
    164         RenderSVGContainer {g} at (468.33,83.33) size 273.33x75 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,80.00)}]
     163      RenderSVGContainer {g} at (401.67,90) size 355x333.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(220.00,0.00)}]
     164        RenderSVGContainer {g} at (468.33,90.00) size 273.33x66.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,80.00)}]
    165165          RenderSVGText {text} at (-69,0) size 40x18 contains 1 chunk(s)
    166166            RenderSVGInlineText {#text} at (0,-14) size 40x18
     
    181181            RenderSVGContainer {g} at (710.00,143.33) size 13.33x13.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(80.00,10.00)}]
    182182              RenderPath {rect} at (710.00,143.33) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    183           RenderSVGText {text} at (20,-10) size 75x45 contains 4 chunk(s)
    184             RenderSVGInlineText {#text} at (0,-20) size 75x45
     183          RenderSVGText {text} at (20,-10) size 75x40 contains 4 chunk(s)
     184            RenderSVGInlineText {#text} at (0,-16) size 75x40
    185185              chunk 1 text run 1 at (20.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
    186186              chunk 2 text run 1 at (40.00,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
    187187              chunk 3 text run 1 at (60.00,5.00) startOffset 2 endOffset 3 width 15.00: "3"
    188188              chunk 4 text run 1 at (80.00,10.00) startOffset 3 endOffset 4 width 15.00: "4"
    189         RenderSVGContainer {g} at (440.00,150) size 316.67x90 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,120.00)}]
     189        RenderSVGContainer {g} at (440.00,156.67) size 316.67x83.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,120.00)}]
    190190          RenderSVGText {text} at (-86,0) size 57x18 contains 1 chunk(s)
    191191            RenderSVGInlineText {#text} at (0,-14) size 57x18
     
    209209            RenderSVGContainer {g} at (743.33,226.67) size 13.33x13.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,20.00)}]
    210210              RenderPath {rect} at (743.33,226.67) size 13.33x13.33 [fill={[type=SOLID] [color=#FF0000]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    211           RenderSVGText {text} at (20,-10) size 75x45 contains 4 chunk(s)
    212             RenderSVGInlineText {#text} at (0,-20) size 75x45
     211          RenderSVGText {text} at (20,-10) size 75x40 contains 4 chunk(s)
     212            RenderSVGInlineText {#text} at (0,-16) size 75x40
    213213              chunk 1 text run 1 at (20.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
    214214              chunk 2 text run 1 at (40.00,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
    215215              chunk 3 text run 1 at (60.00,5.00) startOffset 2 endOffset 3 width 15.00: "3"
    216216              chunk 4 text run 1 at (80.00,10.00) startOffset 3 endOffset 4 width 15.00: "4"
    217         RenderSVGContainer {g} at (433.33,216.67) size 300x66.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,160.00)}]
     217        RenderSVGContainer {g} at (433.33,223.33) size 300x58.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,160.00)}]
    218218          RenderSVGText {text} at (-90,0) size 61x18 contains 1 chunk(s)
    219219            RenderSVGInlineText {#text} at (0,-14) size 61x18
     
    234234            RenderSVGContainer {g} at (701.67,268.33) size 13.33x13.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(75.00,5.00)}]
    235235              RenderPath {rect} at (701.67,268.33) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    236           RenderSVGText {text} at (20,-10) size 70x40 contains 3 chunk(s)
    237             RenderSVGInlineText {#text} at (0,-20) size 70x40
     236          RenderSVGText {text} at (20,-10) size 70x35 contains 3 chunk(s)
     237            RenderSVGInlineText {#text} at (0,-16) size 70x35
    238238              chunk 1 text run 1 at (20.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
    239239              chunk 2 text run 1 at (40.00,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
    240240              chunk 3 text run 1 at (60.00,5.00) startOffset 2 endOffset 4 width 30.00: "34"
    241         RenderSVGContainer {g} at (401.67,283.33) size 340x66.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,200.00)}]
     241        RenderSVGContainer {g} at (401.67,290.00) size 340x58.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,200.00)}]
    242242          RenderSVGText {text} at (-109,0) size 80x18 contains 1 chunk(s)
    243243            RenderSVGInlineText {#text} at (0,-14) size 80x18
     
    258258            RenderSVGContainer {g} at (710.00,335) size 13.33x13.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(80.00,5.00)}]
    259259              RenderPath {rect} at (710.00,335) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    260           RenderSVGText {text} at (20,-10) size 75x40 contains 4 chunk(s)
    261             RenderSVGInlineText {#text} at (0,-20) size 75x40
     260          RenderSVGText {text} at (20,-10) size 75x35 contains 4 chunk(s)
     261            RenderSVGInlineText {#text} at (0,-16) size 75x35
    262262              chunk 1 text run 1 at (20.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
    263263              chunk 2 text run 1 at (40.00,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
    264264              chunk 3 text run 1 at (60.00,5.00) startOffset 2 endOffset 3 width 15.00: "3"
    265265              chunk 4 text run 1 at (80.00,5.00) startOffset 3 endOffset 4 width 15.00: "4"
    266         RenderSVGContainer {g} at (401.67,350) size 331.67x75 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,240.00)}]
     266        RenderSVGContainer {g} at (401.67,356.67) size 331.67x66.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(130.00,240.00)}]
    267267          RenderSVGText {text} at (-109,0) size 80x18 contains 1 chunk(s)
    268268            RenderSVGInlineText {#text} at (0,-14) size 80x18
     
    283283            RenderSVGContainer {g} at (705.87,410) size 13.33x13.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(77.52,10.00)}]
    284284              RenderPath {rect} at (705.87,410) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    285           RenderSVGText {text} at (20,-10) size 70x45 contains 3 chunk(s)
    286             RenderSVGInlineText {#text} at (0,-20) size 70x45
     285          RenderSVGText {text} at (20,-10) size 70x40 contains 3 chunk(s)
     286            RenderSVGInlineText {#text} at (0,-16) size 70x40
    287287              chunk 1 text run 1 at (20.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
    288288              chunk 2 text run 1 at (40.00,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
  • trunk/LayoutTests/platform/mac/svg/text/text-text-05-t-expected.checksum

    r29246 r29700  
    1 bcc1bc7338bdb740ec3a9859440073f0
     188d517e37039a22a204a7951ff775f59
  • trunk/LayoutTests/platform/mac/svg/text/text-text-05-t-expected.txt

    r29246 r29700  
    5151                RenderPath {line} at (249.17,91.67) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    5252                RenderPath {rect} at (243.33,110) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    53           RenderSVGText {text} at (0,30) size 60x11 contains 1 chunk(s)
    54             RenderSVGInlineText {#text} at (0,-9) size 60x11
     53          RenderSVGText {text} at (0,30) size 60x10 contains 1 chunk(s)
     54            RenderSVGInlineText {#text} at (0,-8) size 60x10
    5555              chunk 1 text run 1 at (0.00,30.00) startOffset 0 endOffset 4 width 60.00: "1234"
    5656          RenderSVGContainer {use} at (260,141.67) size 13.33x31.67
     
    7474                RenderPath {line} at (315.83,141.67) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    7575                RenderPath {rect} at (310,160.00) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    76           RenderSVGText {text} at (10,60) size 45x11 contains 4 chunk(s)
    77             RenderSVGInlineText {#text} at (0,-9) size 45x11
     76          RenderSVGText {text} at (10,60) size 45x10 contains 4 chunk(s)
     77            RenderSVGInlineText {#text} at (0,-8) size 45x10
    7878              chunk 1 text run 1 at (10.00,60.00) startOffset 0 endOffset 1 width 15.00: "1"
    7979              chunk 2 text run 1 at (20.00,60.00) startOffset 1 endOffset 2 width 15.00: "2"
     
    9090                RenderPath {line} at (349.17,191.67) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    9191                RenderPath {rect} at (343.33,210.00) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    92           RenderSVGText {text} at (10,90) size 95x11 contains 2 chunk(s)
    93             RenderSVGInlineText {#text} at (0,-9) size 95x11
     92          RenderSVGText {text} at (10,90) size 95x10 contains 2 chunk(s)
     93            RenderSVGInlineText {#text} at (0,-8) size 95x10
    9494              chunk 1 text run 1 at (10.00,90.00) startOffset 0 endOffset 1 width 15.00: "1"
    9595              chunk 2 text run 1 at (60.00,90.00) startOffset 1 endOffset 4 width 45.00: "234"
     
    115115                  RenderPath {line} at (324.17,258.33) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    116116                  RenderPath {rect} at (318.33,276.67) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    117             RenderSVGText {text} at (0,-10) size 60x31 contains 1 chunk(s)
    118               RenderSVGInlineText {#text} at (0,-9) size 60x31
     117            RenderSVGText {text} at (0,-10) size 60x30 contains 1 chunk(s)
     118              RenderSVGInlineText {#text} at (0,-8) size 60x30
    119119                chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 4 width 60.00: "1234"
    120120          RenderSVGContainer {g} at (260,275) size 81.67x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,150.00)}]
     
    139139                  RenderPath {line} at (315.83,308.33) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    140140                  RenderPath {rect} at (310,326.67) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    141             RenderSVGText {text} at (10,-10) size 45x31 contains 4 chunk(s)
    142               RenderSVGInlineText {#text} at (0,-9) size 45x31
     141            RenderSVGText {text} at (10,-10) size 45x30 contains 4 chunk(s)
     142              RenderSVGInlineText {#text} at (0,-8) size 45x30
    143143                chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
    144144                chunk 2 text run 1 at (20.00,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
     
    166166                  RenderPath {line} at (332.50,358.33) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    167167                  RenderPath {rect} at (326.67,376.67) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    168             RenderSVGText {text} at (10,-10) size 55x31 contains 2 chunk(s)
    169               RenderSVGInlineText {#text} at (0,-9) size 55x31
     168            RenderSVGText {text} at (10,-10) size 55x30 contains 2 chunk(s)
     169              RenderSVGInlineText {#text} at (0,-8) size 55x30
    170170                chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
    171171                chunk 2 text run 1 at (20.00,-5.00) startOffset 1 endOffset 4 width 45.00: "234"
     
    181181                  RenderPath {line} at (274.17,400) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    182182                  RenderPath {rect} at (268.33,418.33) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    183             RenderSVGText {text} at (0,-10) size 60x26 contains 1 chunk(s)
    184               RenderSVGInlineText {#text} at (0,-9) size 60x26
     183            RenderSVGText {text} at (0,-10) size 60x25 contains 1 chunk(s)
     184              RenderSVGInlineText {#text} at (0,-8) size 60x25
    185185                chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 4 width 60.00: "1234"
    186186          RenderSVGContainer {g} at (260,425) size 81.67x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,240.00)}]
     
    205205                  RenderPath {line} at (315.83,433.33) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    206206                  RenderPath {rect} at (310,451.67) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    207             RenderSVGText {text} at (10,-10) size 45x17 contains 4 chunk(s)
    208               RenderSVGInlineText {#text} at (0,-9) size 45x17
     207            RenderSVGText {text} at (10,-10) size 45x16 contains 4 chunk(s)
     208              RenderSVGInlineText {#text} at (0,-8) size 45x16
    209209                chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
    210210                chunk 2 text run 1 at (20.00,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
     
    222222                  RenderPath {line} at (349.17,483.33) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    223223                  RenderPath {rect} at (343.33,501.67) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    224             RenderSVGText {text} at (10,-10) size 95x17 contains 2 chunk(s)
    225               RenderSVGInlineText {#text} at (0,-9) size 95x17
     224            RenderSVGText {text} at (10,-10) size 95x16 contains 2 chunk(s)
     225              RenderSVGInlineText {#text} at (0,-8) size 95x16
    226226                chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
    227227                chunk 2 text run 1 at (60.00,-5.00) startOffset 1 endOffset 4 width 45.00: "234"
     
    241241                  RenderPath {line} at (415.83,91.67) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    242242                  RenderPath {rect} at (410,110) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    243               RenderSVGText {text} at (-30,30) size 60x11 contains 1 chunk(s)
    244                 RenderSVGInlineText {#text} at (0,-9) size 60x11
     243              RenderSVGText {text} at (-30,30) size 60x10 contains 1 chunk(s)
     244                RenderSVGInlineText {#text} at (0,-8) size 60x10
    245245                  chunk 1 (middle anchor) text run 1 at (-30.00,30.00) startOffset 0 endOffset 4 width 60.00: "1234"
    246246              RenderSVGContainer {g} at (426.67,141.67) size 13.33x31.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,60.00)}]
     
    260260                  RenderPath {line} at (482.50,141.67) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    261261                  RenderPath {rect} at (476.67,160.00) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    262               RenderSVGText {text} at (2,60) size 46x11 contains 4 chunk(s)
    263                 RenderSVGInlineText {#text} at (0,-9) size 46x11
     262              RenderSVGText {text} at (2,60) size 46x10 contains 4 chunk(s)
     263                RenderSVGInlineText {#text} at (0,-8) size 46x10
    264264                  chunk 1 (middle anchor) text run 1 at (2.50,60.00) startOffset 0 endOffset 1 width 15.00: "1"
    265265                  chunk 2 (middle anchor) text run 1 at (12.50,60.00) startOffset 1 endOffset 2 width 15.00: "2"
     
    274274                  RenderPath {line} at (515.83,191.67) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    275275                  RenderPath {rect} at (510.00,210.00) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    276               RenderSVGText {text} at (2,90) size 81x11 contains 2 chunk(s)
    277                 RenderSVGInlineText {#text} at (0,-9) size 81x11
     276              RenderSVGText {text} at (2,90) size 81x10 contains 2 chunk(s)
     277                RenderSVGInlineText {#text} at (0,-8) size 81x10
    278278                  chunk 1 (middle anchor) text run 1 at (2.50,90.00) startOffset 0 endOffset 1 width 15.00: "1"
    279279                  chunk 2 (middle anchor) text run 1 at (37.50,90.00) startOffset 1 endOffset 4 width 45.00: "234"
     
    295295                    RenderPath {line} at (490.83,258.33) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    296296                    RenderPath {rect} at (485,276.67) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    297                 RenderSVGText {text} at (-30,-10) size 60x31 contains 1 chunk(s)
    298                   RenderSVGInlineText {#text} at (0,-9) size 60x31
     297                RenderSVGText {text} at (-30,-10) size 60x30 contains 1 chunk(s)
     298                  RenderSVGInlineText {#text} at (0,-8) size 60x30
    299299                    chunk 1 (middle anchor) text run 1 at (-30.00,-10.00) startOffset 0 endOffset 4 width 60.00: "1234"
    300300              RenderSVGContainer {g} at (420,275) size 76.67x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,150.00)}]
     
    315315                    RenderPath {line} at (482.50,308.33) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    316316                    RenderPath {rect} at (476.67,326.67) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    317                 RenderSVGText {text} at (2,-10) size 46x31 contains 4 chunk(s)
    318                   RenderSVGInlineText {#text} at (0,-9) size 46x31
     317                RenderSVGText {text} at (2,-10) size 46x30 contains 4 chunk(s)
     318                  RenderSVGInlineText {#text} at (0,-8) size 46x30
    319319                    chunk 1 (middle anchor) text run 1 at (2.50,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
    320320                    chunk 2 (middle anchor) text run 1 at (12.50,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
     
    338338                    RenderPath {line} at (499.17,358.33) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    339339                    RenderPath {rect} at (493.33,376.67) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    340                 RenderSVGText {text} at (-3,-10) size 45x31 contains 2 chunk(s)
    341                   RenderSVGInlineText {#text} at (1,-9) size 45x31
     340                RenderSVGText {text} at (-3,-10) size 45x30 contains 2 chunk(s)
     341                  RenderSVGInlineText {#text} at (1,-8) size 45x30
    342342                    chunk 1 (middle anchor) text run 1 at (2.50,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
    343343                    chunk 2 (middle anchor) text run 1 at (-2.50,-5.00) startOffset 1 endOffset 4 width 45.00: "234"
     
    351351                    RenderPath {line} at (440.83,400) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    352352                    RenderPath {rect} at (435,418.33) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    353                 RenderSVGText {text} at (-30,-10) size 60x26 contains 1 chunk(s)
    354                   RenderSVGInlineText {#text} at (0,-9) size 60x26
     353                RenderSVGText {text} at (-30,-10) size 60x25 contains 1 chunk(s)
     354                  RenderSVGInlineText {#text} at (0,-8) size 60x25
    355355                    chunk 1 (middle anchor) text run 1 at (-30.00,-10.00) startOffset 0 endOffset 4 width 60.00: "1234"
    356356              RenderSVGContainer {g} at (420,425) size 76.67x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,240.00)}]
     
    371371                    RenderPath {line} at (482.50,433.33) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    372372                    RenderPath {rect} at (476.67,451.67) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    373                 RenderSVGText {text} at (2,-10) size 46x17 contains 4 chunk(s)
    374                   RenderSVGInlineText {#text} at (0,-9) size 46x17
     373                RenderSVGText {text} at (2,-10) size 46x16 contains 4 chunk(s)
     374                  RenderSVGInlineText {#text} at (0,-8) size 46x16
    375375                    chunk 1 (middle anchor) text run 1 at (2.50,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
    376376                    chunk 2 (middle anchor) text run 1 at (12.50,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
     
    386386                    RenderPath {line} at (515.83,483.33) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    387387                    RenderPath {rect} at (510.00,501.67) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    388                 RenderSVGText {text} at (2,-10) size 81x17 contains 2 chunk(s)
    389                   RenderSVGInlineText {#text} at (0,-9) size 81x17
     388                RenderSVGText {text} at (2,-10) size 81x16 contains 2 chunk(s)
     389                  RenderSVGInlineText {#text} at (0,-8) size 81x16
    390390                    chunk 1 (middle anchor) text run 1 at (2.50,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
    391391                    chunk 2 (middle anchor) text run 1 at (37.50,-5.00) startOffset 1 endOffset 4 width 45.00: "234"
     
    405405                  RenderPath {line} at (582.50,91.67) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    406406                  RenderPath {rect} at (576.67,110) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    407               RenderSVGText {text} at (-60,30) size 60x11 contains 1 chunk(s)
    408                 RenderSVGInlineText {#text} at (0,-9) size 60x11
     407              RenderSVGText {text} at (-60,30) size 60x10 contains 1 chunk(s)
     408                RenderSVGInlineText {#text} at (0,-8) size 60x10
    409409                  chunk 1 (end anchor) text run 1 at (-60.00,30.00) startOffset 0 endOffset 4 width 60.00: "1234"
    410410              RenderSVGContainer {g} at (593.33,141.67) size 13.33x31.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,60.00)}]
     
    424424                  RenderPath {line} at (649.17,141.67) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    425425                  RenderPath {rect} at (643.33,160.00) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    426               RenderSVGText {text} at (-5,60) size 45x11 contains 4 chunk(s)
    427                 RenderSVGInlineText {#text} at (0,-9) size 45x11
     426              RenderSVGText {text} at (-5,60) size 45x10 contains 4 chunk(s)
     427                RenderSVGInlineText {#text} at (0,-8) size 45x10
    428428                  chunk 1 (end anchor) text run 1 at (-5.00,60.00) startOffset 0 endOffset 1 width 15.00: "1"
    429429                  chunk 2 (end anchor) text run 1 at (5.00,60.00) startOffset 1 endOffset 2 width 15.00: "2"
     
    438438                  RenderPath {line} at (682.50,191.67) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    439439                  RenderPath {rect} at (676.67,210.00) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    440               RenderSVGText {text} at (-5,90) size 65x11 contains 2 chunk(s)
    441                 RenderSVGInlineText {#text} at (0,-9) size 65x11
     440              RenderSVGText {text} at (-5,90) size 65x10 contains 2 chunk(s)
     441                RenderSVGInlineText {#text} at (0,-8) size 65x10
    442442                  chunk 1 (end anchor) text run 1 at (-5.00,90.00) startOffset 0 endOffset 1 width 15.00: "1"
    443443                  chunk 2 (end anchor) text run 1 at (15.00,90.00) startOffset 1 endOffset 4 width 45.00: "234"
     
    459459                    RenderPath {line} at (657.50,258.33) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    460460                    RenderPath {rect} at (651.67,276.67) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    461                 RenderSVGText {text} at (-60,-10) size 60x31 contains 1 chunk(s)
    462                   RenderSVGInlineText {#text} at (0,-9) size 60x31
     461                RenderSVGText {text} at (-60,-10) size 60x30 contains 1 chunk(s)
     462                  RenderSVGInlineText {#text} at (0,-8) size 60x30
    463463                    chunk 1 (end anchor) text run 1 at (-60.00,-10.00) startOffset 0 endOffset 4 width 60.00: "1234"
    464464              RenderSVGContainer {g} at (575,275) size 81.67x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,150.00)}]
     
    479479                    RenderPath {line} at (649.17,308.33) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    480480                    RenderPath {rect} at (643.33,326.67) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    481                 RenderSVGText {text} at (-5,-10) size 45x31 contains 4 chunk(s)
    482                   RenderSVGInlineText {#text} at (0,-9) size 45x31
     481                RenderSVGText {text} at (-5,-10) size 45x30 contains 4 chunk(s)
     482                  RenderSVGInlineText {#text} at (0,-8) size 45x30
    483483                    chunk 1 (end anchor) text run 1 at (-5.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
    484484                    chunk 2 (end anchor) text run 1 at (5.00,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
     
    502502                    RenderPath {line} at (665.83,358.33) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    503503                    RenderPath {rect} at (660.00,376.67) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    504                 RenderSVGText {text} at (-25,-10) size 45x31 contains 2 chunk(s)
    505                   RenderSVGInlineText {#text} at (0,-9) size 45x31
     504                RenderSVGText {text} at (-25,-10) size 45x30 contains 2 chunk(s)
     505                  RenderSVGInlineText {#text} at (0,-8) size 45x30
    506506                    chunk 1 (end anchor) text run 1 at (-5.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
    507507                    chunk 2 (end anchor) text run 1 at (-25.00,-5.00) startOffset 1 endOffset 4 width 45.00: "234"
     
    515515                    RenderPath {line} at (607.50,400) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    516516                    RenderPath {rect} at (601.67,418.33) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    517                 RenderSVGText {text} at (-60,-10) size 60x26 contains 1 chunk(s)
    518                   RenderSVGInlineText {#text} at (0,-9) size 60x26
     517                RenderSVGText {text} at (-60,-10) size 60x25 contains 1 chunk(s)
     518                  RenderSVGInlineText {#text} at (0,-8) size 60x25
    519519                    chunk 1 (end anchor) text run 1 at (-60.00,-10.00) startOffset 0 endOffset 4 width 60.00: "1234"
    520520              RenderSVGContainer {g} at (575,425) size 81.67x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,240.00)}]
     
    535535                    RenderPath {line} at (649.17,433.33) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    536536                    RenderPath {rect} at (643.33,451.67) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    537                 RenderSVGText {text} at (-5,-10) size 45x17 contains 4 chunk(s)
    538                   RenderSVGInlineText {#text} at (0,-9) size 45x17
     537                RenderSVGText {text} at (-5,-10) size 45x16 contains 4 chunk(s)
     538                  RenderSVGInlineText {#text} at (0,-8) size 45x16
    539539                    chunk 1 (end anchor) text run 1 at (-5.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
    540540                    chunk 2 (end anchor) text run 1 at (5.00,-5.00) startOffset 1 endOffset 2 width 15.00: "2"
     
    550550                    RenderPath {line} at (682.50,483.33) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    551551                    RenderPath {rect} at (676.67,501.67) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    552                 RenderSVGText {text} at (-5,-10) size 65x17 contains 2 chunk(s)
    553                   RenderSVGInlineText {#text} at (0,-9) size 65x17
     552                RenderSVGText {text} at (-5,-10) size 65x16 contains 2 chunk(s)
     553                  RenderSVGInlineText {#text} at (0,-8) size 65x16
    554554                    chunk 1 (end anchor) text run 1 at (-5.00,-10.00) startOffset 0 endOffset 1 width 15.00: "1"
    555555                    chunk 2 (end anchor) text run 1 at (15.00,-5.00) startOffset 1 endOffset 4 width 45.00: "234"
  • trunk/LayoutTests/platform/mac/svg/text/text-text-06-t-expected.checksum

    r29246 r29700  
    1 66bb255bb77facb1b7c236a3a98c1d82
     11cbcc6794541f3d40cbbde9124fe35f0
  • trunk/LayoutTests/platform/mac/svg/text/text-text-06-t-expected.txt

    r29246 r29700  
    33layer at (0,0) size 800x600
    44  RenderSVGRoot {svg} at (0.83,0.83) size 798.33x598.33
    5     RenderSVGContainer {g} at (50,91.67) size 456.67x348.33
     5    RenderSVGContainer {g} at (50,91.67) size 463.33x348.33
    66      RenderSVGHiddenContainer {defs} at (0,0) size 0x0
    77      RenderSVGHiddenContainer {defs} at (0,0) size 0x0
     
    99          RenderPath {line} at (-0.50,-15) size 1x15 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#000000]}] [data="M0.00,0.00L0.00,-15.00"]
    1010          RenderPath {rect} at (-4,-4) size 8x8 [fill={[type=SOLID] [color=#000000]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    11       RenderSVGContainer {g} at (50,91.67) size 456.67x348.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(20.00,30.00)}]
     11      RenderSVGContainer {g} at (50,91.67) size 463.33x348.33 [transform={m=((1.00,0.00)(0.00,1.00)) t=(20.00,30.00)}]
    1212        RenderSVGContainer {g} at (50,98.33) size 118.33x256.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,40.00)}]
    1313          RenderSVGText {text} at (0,0) size 62x14 contains 1 chunk(s)
     
    2020            RenderSVGInlineText {#text} at (0,-11) size 71x14
    2121              chunk 1 text run 1 at (0.00,140.00) startOffset 0 endOffset 15 width 71.00: "x/y positioning"
    22         RenderSVGContainer {g} at (210,91.67) size 296.67x31.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,40.00)}]
     22        RenderSVGContainer {g} at (210,91.67) size 303.33x31.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,40.00)}]
    2323          RenderSVGContainer {use} at (210,91.67) size 13.33x31.67
    2424            RenderSVGContainer {g} at (210,91.67) size 13.33x31.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,0.00)}]
     
    5151                RenderPath {line} at (415.83,91.67) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    5252                RenderPath {rect} at (410,110) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    53           RenderSVGText {text} at (10,0) size 173x11 contains 6 chunk(s)
    54             RenderSVGInlineText {#text} at (0,-9) size 173x11
    55               chunk 1 text run 1 at (10.00,0.00) startOffset 0 endOffset 1 width 3.00: "f"
    56               chunk 2 text run 1 at (180.00,0.00) startOffset 1 endOffset 2 width 3.00: "i"
     53          RenderSVGText {text} at (10,0) size 178x10 contains 6 chunk(s)
     54            RenderSVGInlineText {#text} at (0,-8) size 178x10
     55              chunk 1 text run 1 at (10.00,0.00) startOffset 0 endOffset 1 width 8.00: "f"
     56              chunk 2 text run 1 at (180.00,0.00) startOffset 1 endOffset 2 width 8.00: "i"
    5757              chunk 3 text run 1 at (40.00,0.00) startOffset 2 endOffset 3 width 15.00: "1"
    5858              chunk 4 text run 1 at (70.00,0.00) startOffset 3 endOffset 4 width 15.00: "2"
    5959              chunk 5 text run 1 at (100.00,0.00) startOffset 4 endOffset 5 width 15.00: "3"
    6060              chunk 6 text run 1 at (130.00,0.00) startOffset 5 endOffset 6 width 15.00: "4"
    61         RenderSVGContainer {g} at (193.33,141.67) size 116.67x131.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,80.00)}]
     61        RenderSVGContainer {g} at (193.33,141.67) size 133.33x131.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,80.00)}]
    6262          RenderSVGContainer {use} at (193.33,141.67) size 13.33x31.67
    6363            RenderSVGContainer {g} at (193.33,141.67) size 13.33x31.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,-10.00)}]
     
    9090                RenderPath {line} at (299.17,208.33) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    9191                RenderPath {rect} at (293.33,226.67) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    92           RenderSVGText {text} at (0,-10) size 66x71 contains 1 chunk(s)
    93             RenderSVGInlineText {#text} at (0,-9) size 66x71
     92          RenderSVGText {text} at (0,-10) size 76x70 contains 1 chunk(s)
     93            RenderSVGInlineText {#text} at (0,-8) size 76x70
    9494              chunk 1 text run 1 at (0.00,-10.00) startOffset 0 endOffset 6 width 75.00: "fi1234"
    95         RenderSVGContainer {g} at (210,308.33) size 296.67x131.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,180.00)}]
     95        RenderSVGContainer {g} at (210,308.33) size 303.33x131.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,180.00)}]
    9696          RenderSVGContainer {use} at (210,308.33) size 13.33x31.67
    9797            RenderSVGContainer {g} at (210,308.33) size 13.33x31.67 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,-10.00)}]
     
    124124                RenderPath {line} at (415.83,375) size 1.67x25 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#8888FF]}] [data="M0.00,0.00L0.00,-15.00"]
    125125                RenderPath {rect} at (410,393.33) size 13.33x13.33 [fill={[type=SOLID] [color=#8888FF]}] [data="M-4.00,-4.00L4.00,-4.00L4.00,4.00L-4.00,4.00"]
    126           RenderSVGText {text} at (10,-10) size 173x71 contains 6 chunk(s)
    127             RenderSVGInlineText {#text} at (0,-9) size 173x71
    128               chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 1 width 3.00: "f"
    129               chunk 2 text run 1 at (180.00,50.00) startOffset 1 endOffset 2 width 3.00: "i"
     126          RenderSVGText {text} at (10,-10) size 178x70 contains 6 chunk(s)
     127            RenderSVGInlineText {#text} at (0,-8) size 178x70
     128              chunk 1 text run 1 at (10.00,-10.00) startOffset 0 endOffset 1 width 8.00: "f"
     129              chunk 2 text run 1 at (180.00,50.00) startOffset 1 endOffset 2 width 8.00: "i"
    130130              chunk 3 text run 1 at (40.00,0.00) startOffset 2 endOffset 3 width 15.00: "1"
    131131              chunk 4 text run 1 at (70.00,10.00) startOffset 3 endOffset 4 width 15.00: "2"
  • trunk/WebCore/ChangeLog

    r29698 r29700  
     12008-01-21  Nikolas Zimmermann  <zimmermann@kde.org>
     2
     3        Reviewed by Eric. Older parts reviewed by Dan.
     4
     5        Fixes: http://bugs.webkit.org/show_bug.cgi?id=16880 (SVGCSSFontFace should die, instead integrate within the FontCache.)
     6        Fixes: http://bugs.webkit.org/show_bug.cgi?id=16784 (In-document fonts work only as the first child to font-face-src)
     7
     8        Proper integration of SVG Fonts within the existing custom font concept, removing the need for a custom SVGCSSFontFace.
     9        Integrate within the CSSFontFaceSource logic for caching support, as well as the framework for external SVG Fonts.
     10
     11        Proper handling of missing glyphs, using <missing-glyph> element. If that is not specified in a font, fallback to non-SVG font rendering.
     12
     13        * GNUmakefile.am:
     14        * WebCore.pro:
     15        * WebCore.vcproj/WebCore.vcproj:
     16        * WebCore.xcodeproj/project.pbxproj:
     17        * css/CSSFontFaceSource.cpp:
     18        (WebCore::CSSFontFaceSource::getFontData):
     19        * css/CSSFontFaceSource.h:
     20        (WebCore::CSSFontFaceSource::svgFontFaceElement):
     21        (WebCore::CSSFontFaceSource::setSVGFontFaceElement):
     22        * css/CSSFontFaceSrcValue.h:
     23        (WebCore::CSSFontFaceSrcValue::m_isLocal):
     24        (WebCore::CSSFontFaceSrcValue::~CSSFontFaceSrcValue):
     25        (WebCore::CSSFontFaceSrcValue::svgFontFaceElement):
     26        (WebCore::CSSFontFaceSrcValue::setSVGFontFaceElement):
     27        * css/CSSFontSelector.cpp:
     28        (WebCore::CSSFontSelector::addFontFaceRule):
     29        * css/SVGCSSFontFace.cpp: Removed.
     30        * css/SVGCSSFontFace.h: Removed.
     31        * platform/graphics/Font.cpp:
     32        (WebCore::Font::ascent):
     33        (WebCore::Font::descent):
     34        (WebCore::Font::lineSpacing):
     35        (WebCore::Font::xHeight):
     36        (WebCore::Font::fontSelector):
     37        * platform/graphics/Font.h:
     38        * platform/graphics/FontData.h:
     39        * platform/graphics/SegmentedFontData.cpp:
     40        (WebCore::SegmentedFontData::isSVGFont):
     41        * platform/graphics/SegmentedFontData.h:
     42        * platform/graphics/SimpleFontData.cpp:
     43        (WebCore::SimpleFontData::SimpleFontData):
     44        * platform/graphics/SimpleFontData.h:
     45        (WebCore::SimpleFontData::ascent):
     46        (WebCore::SimpleFontData::descent):
     47        (WebCore::SimpleFontData::lineSpacing):
     48        (WebCore::SimpleFontData::lineGap):
     49        (WebCore::SimpleFontData::xHeight):
     50        (WebCore::SimpleFontData::isSVGFont):
     51        (WebCore::SimpleFontData::svgFontData):
     52        * platform/graphics/gtk/FontPlatformData.h:
     53        (WebCore::FontPlatformData::size):
     54        * platform/graphics/gtk/FontPlatformDataGtk.cpp:
     55        (WebCore::FontPlatformData):
     56        * platform/graphics/mac/FontPlatformData.h:
     57        (WebCore::FontPlatformData::FontPlatformData):
     58        (WebCore::FontPlatformData::size):
     59        * platform/graphics/win/FontPlatformData.h:
     60        * platform/graphics/win/FontPlatformDataWin.cpp:
     61        (WebCore::FontPlatformData::FontPlatformData):
     62        * rendering/RenderSVGText.cpp:
     63        (WebCore::RenderSVGText::relativeBBox):
     64        * svg/SVGFont.cpp:
     65        (WebCore::convertEmUnitToPixel):
     66        (WebCore::isCompatibleGlyph):
     67        (WebCore::svgFontAndFontFaceElementForFontData):
     68        (WebCore::SVGTextRunWalker::SVGTextRunWalker):
     69        (WebCore::SVGTextRunWalker::walk):
     70        (WebCore::floatWidthUsingSVGFontCallback):
     71        (WebCore::floatWidthMissingGlyphCallback):
     72        (WebCore::floatWidthOfSubStringUsingSVGFont):
     73        (WebCore::drawTextUsingSVGFontCallback):
     74        (WebCore::drawTextMissingGlyphCallback):
     75        (WebCore::Font::drawTextUsingSVGFont):
     76        * svg/SVGFontData.cpp: Added.
     77        (WebCore::SVGFontData::SVGFontData):
     78        (WebCore::SVGFontData::~SVGFontData):
     79        * svg/SVGFontData.h: Added.
     80        (WebCore::SVGFontData::svgFontFaceElement):
     81        (WebCore::SVGFontData::horizontalOriginX):
     82        (WebCore::SVGFontData::horizontalOriginY):
     83        (WebCore::SVGFontData::horizontalAdvanceX):
     84        (WebCore::SVGFontData::verticalOriginX):
     85        (WebCore::SVGFontData::verticalOriginY):
     86        (WebCore::SVGFontData::verticalAdvanceY):
     87        * svg/SVGFontFaceElement.cpp:
     88        (WebCore::SVGFontFaceElement::unitsPerEm):
     89        (WebCore::SVGFontFaceElement::xHeight):
     90        (WebCore::SVGFontFaceElement::horizontalOriginX):
     91        (WebCore::SVGFontFaceElement::horizontalOriginY):
     92        (WebCore::SVGFontFaceElement::horizontalAdvanceX):
     93        (WebCore::SVGFontFaceElement::verticalOriginX):
     94        (WebCore::SVGFontFaceElement::verticalOriginY):
     95        (WebCore::SVGFontFaceElement::verticalAdvanceY):
     96        (WebCore::SVGFontFaceElement::ascent):
     97        (WebCore::SVGFontFaceElement::descent):
     98        (WebCore::SVGFontFaceElement::fontFamily):
     99        (WebCore::SVGFontFaceElement::associatedFontElement):
     100        (WebCore::SVGFontFaceElement::rebuildFontFace):
     101        * svg/SVGFontFaceElement.h:
     102        * svg/SVGGlyphElement.cpp:
     103        (WebCore::SVGGlyphElement::inheritUnspecifiedAttributes):
     104        (WebCore::parseSVGGlyphAttribute):
     105        (WebCore::SVGGlyphElement::buildGenericGlyphIdentifier):
     106        (WebCore::SVGGlyphElement::buildGlyphIdentifier):
     107        * svg/SVGGlyphElement.h:
     108        * svg/SVGMissingGlyphElement.cpp:
     109        * svg/svgattrs.in:
     110
    11112008-01-21  Darin Adler  <darin@apple.com>
    2112
  • trunk/WebCore/GNUmakefile.am

    r29670 r29700  
    16341634        WebCore/css/SVGCSSParser.cpp \
    16351635        WebCore/css/SVGCSSStyleSelector.cpp \
    1636         WebCore/css/SVGCSSFontFace.cpp \
    16371636        WebCore/rendering/SVGRenderStyle.cpp \
    16381637        WebCore/rendering/SVGRenderStyleDefs.cpp \
     
    16951694        WebCore/svg/SVGFitToViewBox.cpp \
    16961695        WebCore/svg/SVGFont.cpp \
     1696        WebCore/svg/SVGFontData.cpp \
    16971697        WebCore/svg/SVGFontElement.cpp \
    16981698        WebCore/svg/SVGFontFaceElement.cpp \
  • trunk/WebCore/WebCore.pro

    r29624 r29700  
    13671367        css/SVGCSSParser.cpp \
    13681368        css/SVGCSSStyleSelector.cpp \
    1369         css/SVGCSSFontFace.cpp \
    13701369        rendering/SVGRenderStyle.cpp \
    13711370        rendering/SVGRenderStyleDefs.cpp \
     
    14281427        svg/SVGFitToViewBox.cpp \
    14291428        svg/SVGFont.cpp \
     1429        svg/SVGFontData.cpp \
    14301430        svg/SVGFontElement.cpp \
    14311431        svg/SVGFontFaceElement.cpp \
  • trunk/WebCore/WebCore.vcproj/WebCore.vcproj

    r29488 r29700  
    48954895                        </File>
    48964896                        <File
    4897                                 RelativePath="..\css\SVGCSSFontFace.cpp"
    4898                                 >
    4899                         </File>
    4900                         <File
    49014897                                RelativePath="..\css\SVGCSSParser.cpp"
    49024898                                >
     
    84038399                        <File
    84048400                                RelativePath="..\svg\SVGFont.cpp"
     8401                                >
     8402                        </File>
     8403                        <File
     8404                                RelativePath="..\svg\SVGFontData.cpp"
     8405                                >
     8406                        </File>
     8407                        <File
     8408                                RelativePath="..\svg\SVGFontData.h"
    84058409                                >
    84068410                        </File>
  • trunk/WebCore/WebCore.xcodeproj/project.pbxproj

    r29508 r29700  
    28302830                B23540F20D00782E002382FA /* StringTruncator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B23540F00D00782E002382FA /* StringTruncator.cpp */; };
    28312831                B23540F30D00782E002382FA /* StringTruncator.h in Headers */ = {isa = PBXBuildFile; fileRef = B23540F10D00782E002382FA /* StringTruncator.h */; settings = {ATTRIBUTES = (Private, ); }; };
     2832                B237C8A70D344D110013F707 /* SVGFontData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B237C8A50D344D110013F707 /* SVGFontData.cpp */; };
     2833                B237C8A80D344D110013F707 /* SVGFontData.h in Headers */ = {isa = PBXBuildFile; fileRef = B237C8A60D344D110013F707 /* SVGFontData.h */; };
    28322834                B24055650B5BE640002A28C0 /* DOMSVGElementInstanceInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = B24055630B5BE640002A28C0 /* DOMSVGElementInstanceInternal.h */; };
    28332835                B24055660B5BE640002A28C0 /* DOMSVGElementInstanceListInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = B24055640B5BE640002A28C0 /* DOMSVGElementInstanceListInternal.h */; };
     
    31563158                B2CCEC470C6CA9F1006A5424 /* RenderSVGViewportContainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2CCEC450C6CA9F1006A5424 /* RenderSVGViewportContainer.cpp */; };
    31573159                B2CCEC480C6CA9F1006A5424 /* RenderSVGViewportContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = B2CCEC460C6CA9F1006A5424 /* RenderSVGViewportContainer.h */; };
    3158                 B2D19A480CEF9DC1000E033B /* SVGCSSFontFace.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2D19A460CEF9DC1000E033B /* SVGCSSFontFace.cpp */; };
    3159                 B2D19A490CEF9DC1000E033B /* SVGCSSFontFace.h in Headers */ = {isa = PBXBuildFile; fileRef = B2D19A470CEF9DC1000E033B /* SVGCSSFontFace.h */; };
    31603160                B2D3FC8A0C2212CB00CF3618 /* JSSVGTransformListCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2D3FC890C2212CB00CF3618 /* JSSVGTransformListCustom.cpp */; };
    31613161                B2E27C9F0B0F2B0900F17C7B /* FloatPoint3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2E27C9D0B0F2B0900F17C7B /* FloatPoint3D.cpp */; };
     
    68946894                B23540F00D00782E002382FA /* StringTruncator.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = StringTruncator.cpp; sourceTree = "<group>"; };
    68956895                B23540F10D00782E002382FA /* StringTruncator.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = StringTruncator.h; sourceTree = "<group>"; };
     6896                B237C8A50D344D110013F707 /* SVGFontData.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFontData.cpp; sourceTree = "<group>"; };
     6897                B237C8A60D344D110013F707 /* SVGFontData.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGFontData.h; sourceTree = "<group>"; };
    68966898                B24055630B5BE640002A28C0 /* DOMSVGElementInstanceInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMSVGElementInstanceInternal.h; sourceTree = "<group>"; };
    68976899                B24055640B5BE640002A28C0 /* DOMSVGElementInstanceListInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMSVGElementInstanceListInternal.h; sourceTree = "<group>"; };
     
    72247226                B2CCEC450C6CA9F1006A5424 /* RenderSVGViewportContainer.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGViewportContainer.cpp; sourceTree = "<group>"; };
    72257227                B2CCEC460C6CA9F1006A5424 /* RenderSVGViewportContainer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RenderSVGViewportContainer.h; sourceTree = "<group>"; };
    7226                 B2D19A460CEF9DC1000E033B /* SVGCSSFontFace.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGCSSFontFace.cpp; sourceTree = "<group>"; };
    7227                 B2D19A470CEF9DC1000E033B /* SVGCSSFontFace.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGCSSFontFace.h; sourceTree = "<group>"; };
    72287228                B2D3FC890C2212CB00CF3618 /* JSSVGTransformListCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGTransformListCustom.cpp; sourceTree = "<group>"; };
    72297229                B2E27C9D0B0F2B0900F17C7B /* FloatPoint3D.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = FloatPoint3D.cpp; sourceTree = "<group>"; };
     
    1074310743                                B222787D0D00BF200071B782 /* SVGFitToViewBox.idl */,
    1074410744                                B262B8030D1F32D000158F09 /* SVGFont.cpp */,
     10745                                B237C8A50D344D110013F707 /* SVGFontData.cpp */,
     10746                                B237C8A60D344D110013F707 /* SVGFontData.h */,
    1074510747                                B2A1F2A10CEF0ABF00442F6A /* SVGFontElement.cpp */,
    1074610748                                B2A1F2A20CEF0ABF00442F6A /* SVGFontElement.h */,
     
    1195311955                                B2227B000D00BFF10071B782 /* SVGCSSComputedStyleDeclaration.cpp */,
    1195411956                                B2227B010D00BFF10071B782 /* SVGCSSParser.cpp */,
    11955                                 B2D19A460CEF9DC1000E033B /* SVGCSSFontFace.cpp */,
    11956                                 B2D19A470CEF9DC1000E033B /* SVGCSSFontFace.h */,
    1195711957                                B2227B020D00BFF10071B782 /* SVGCSSPropertyNames.in */,
    1195811958                                B2227B030D00BFF10071B782 /* SVGCSSStyleSelector.cpp */,
     
    1417114171                                B27B283E0CEF0C3600D39D54 /* DOMSVGMissingGlyphElement.h in Headers */,
    1417214172                                B27B28400CEF0C3600D39D54 /* DOMSVGMissingGlyphElementInternal.h in Headers */,
    14173                                 B2D19A490CEF9DC1000E033B /* SVGCSSFontFace.h in Headers */,
    1417414173                                BCA379150D163E5500B793D6 /* JSLocation.h in Headers */,
    1417514174                                BCA3793F0D1647E000B793D6 /* JSLocation.lut.h in Headers */,
     
    1419714196                                371F53E90D2704F900ECE0D5 /* CSSUnicodeRangeValue.h in Headers */,
    1419814197                                ABFE7E130D32FAF60066F4D2 /* MediaControlElements.h in Headers */,
     14198                                B237C8A80D344D110013F707 /* SVGFontData.h in Headers */,
    1419914199                                E4EEFFC90D34550C00469A58 /* JSAudioConstructor.h in Headers */,
    1420014200                                939B3E4E0D3C1E8400B4A92B /* StringBuffer.h in Headers */,
     
    1423714237                        isa = PBXProject;
    1423814238                        buildConfigurationList = 149C284308902B11008A9EFC /* Build configuration list for PBXProject "WebCore" */;
    14239                         compatibilityVersion = "Xcode 2.4";
    1424014239                        hasScannedForEncodings = 1;
    1424114240                        knownRegions = (
     
    1577115770                                B27B283C0CEF0C3600D39D54 /* DOMSVGGlyphElement.mm in Sources */,
    1577215771                                B27B283F0CEF0C3600D39D54 /* DOMSVGMissingGlyphElement.mm in Sources */,
    15773                                 B2D19A480CEF9DC1000E033B /* SVGCSSFontFace.cpp in Sources */,
    1577415772                                B262B8040D1F32D000158F09 /* SVGFont.cpp in Sources */,
    1577515773                                BC7FA6200D1F0CBD00DB22A9 /* DynamicNodeList.cpp in Sources */,
     
    1578815786                                371F53EA0D2704F900ECE0D5 /* CSSUnicodeRangeValue.cpp in Sources */,
    1578915787                                ABFE7E120D32FAF60066F4D2 /* MediaControlElements.cpp in Sources */,
     15788                                B237C8A70D344D110013F707 /* SVGFontData.cpp in Sources */,
    1579015789                                E4EEFFC80D34550C00469A58 /* JSAudioConstructor.cpp in Sources */,
    1579115790                        );
  • trunk/WebCore/css/CSSFontFaceSource.cpp

    r29663 r29700  
    3232#include "DocLoader.h"
    3333#include "FontCache.h"
    34 #include "SimpleFontData.h"
    3534#include "FontDescription.h"
    3635#include "GlyphPageTreeNode.h"
     36#include "SimpleFontData.h"
     37
     38#if ENABLE(SVG_FONTS)
     39#include "SVGFontData.h"
     40#include "FontCustomPlatformData.h"
     41#endif
    3742
    3843namespace WebCore {
     
    8994        return 0;
    9095
    91     if (!m_font)
    92         // We're local.  Just return a SimpleFontData from the normal cache.
    93         return FontCache::getCachedFontData(FontCache::getCachedFontPlatformData(fontDescription, m_string));
    94    
     96#if ENABLE(SVG_FONTS)
     97    if (!m_font && !m_svgFontFaceElement) {
     98#else
     99    if (!m_font) {
     100#endif
     101        FontPlatformData* data = FontCache::getCachedFontPlatformData(fontDescription, m_string);
     102        SimpleFontData* fontData = FontCache::getCachedFontData(data);
     103
     104        // We're local. Just return a SimpleFontData from the normal cache.
     105        return fontData;
     106    }
     107
    95108    // See if we have a mapping in our FontData cache.
    96     SimpleFontData* cachedData = m_fontDataTable.get(fontDescription.computedPixelSize());
    97     if (cachedData)
     109    if (SimpleFontData* cachedData = m_fontDataTable.get(fontDescription.computedPixelSize()))
    98110        return cachedData;
    99    
     111
     112    OwnPtr<SimpleFontData> fontData;
     113
    100114    // If we are still loading, then we let the system pick a font.
    101115    if (isLoaded()) {
    102         // Create new FontPlatformData from our CGFontRef, point size and ATSFontRef.
    103         if (!m_font->ensureCustomFontData())
    104             return 0;
    105         cachedData = new SimpleFontData(m_font->platformDataFromCustomData(fontDescription.computedPixelSize(), syntheticBold, syntheticItalic), true, false);
     116#if ENABLE(SVG_FONTS)
     117        if (m_svgFontFaceElement)
     118            fontData.set(new SimpleFontData(FontPlatformData(fontDescription.computedPixelSize(), syntheticBold, syntheticItalic),
     119                                            true, false, new SVGFontData(m_svgFontFaceElement.get())));
     120#endif
     121
     122        if (!fontData) {
     123            ASSERT(m_font);
     124
     125            // Create new FontPlatformData from our CGFontRef, point size and ATSFontRef.
     126            if (!m_font->ensureCustomFontData())
     127                return 0;
     128
     129            fontData.set(new SimpleFontData(m_font->platformDataFromCustomData(fontDescription.computedPixelSize(), syntheticBold, syntheticItalic), true, false));
     130        }
    106131    } else {
    107132        // Kick off the load now.
     
    111136        if (!tempData)
    112137            tempData = FontCache::getLastResortFallbackFont(fontDescription);
    113         cachedData = new SimpleFontData(*tempData, true, true);
     138        fontData.set(new SimpleFontData(*tempData, true, true));
    114139    }
    115140
    116     m_fontDataTable.set(fontDescription.computedPixelSize(), cachedData);
    117 
    118     return cachedData;
     141    m_fontDataTable.set(fontDescription.computedPixelSize(), fontData.get());
     142    return fontData.release();
    119143}
    120144
  • trunk/WebCore/css/CSSFontFaceSource.h

    r29663 r29700  
    2929#include "AtomicString.h"
    3030#include "CachedResourceClient.h"
     31#include "SVGFontFaceElement.h"
    3132#include <wtf/HashMap.h>
    3233
     
    5758    void pruneTable();
    5859
     60#if ENABLE(SVG_FONTS)
     61    SVGFontFaceElement* svgFontFaceElement() const { return m_svgFontFaceElement.get(); }
     62    void setSVGFontFaceElement(SVGFontFaceElement* element) { m_svgFontFaceElement = element; }
     63#endif
     64
    5965private:
    6066    AtomicString m_string; // URI for remote, built-in font name for local.
     
    6268    CSSFontFace* m_face; // Our owning font face.
    6369    HashMap<int, SimpleFontData*> m_fontDataTable; // A cache of FontDatas for various pixel sizes.
     70
     71#if ENABLE(SVG_FONTS)
     72    RefPtr<SVGFontFaceElement> m_svgFontFaceElement;
     73#endif
    6474};
    6575
  • trunk/WebCore/css/CSSFontFaceSrcValue.h

    r29663 r29700  
    2929#include "CSSValue.h"
    3030#include "PlatformString.h"
     31#include "SVGFontFaceElement.h"
    3132
    3233namespace WebCore {
    33 
    34 class SVGFontFaceElement;
    3534
    3635class CSSFontFaceSrcValue : public CSSValue {
     
    3837    CSSFontFaceSrcValue(const String& resource, bool local)
    3938    :m_resource(resource), m_isLocal(local)
    40 #if ENABLE(SVG_FONTS)
    41     , m_fontFaceElement(0)
    42 #endif   
    4339    {}
    44     virtual ~CSSFontFaceSrcValue() {};
     40    virtual ~CSSFontFaceSrcValue() {}
    4541
    4642    const String& resource() const { return m_resource; }
     
    5349
    5450#if ENABLE(SVG_FONTS)
    55     SVGFontFaceElement* svgFontFaceElement() const { return m_fontFaceElement; }
    56     void setSVGFontFaceElement(SVGFontFaceElement* element) { m_fontFaceElement = element; }
     51    SVGFontFaceElement* svgFontFaceElement() const { return m_svgFontFaceElement.get(); }
     52    void setSVGFontFaceElement(SVGFontFaceElement* element) { m_svgFontFaceElement = element; }
    5753#endif
    5854
     
    6359    String m_format;
    6460    bool m_isLocal;
     61
    6562#if ENABLE(SVG_FONTS)
    66     SVGFontFaceElement* m_fontFaceElement;
     63    RefPtr<SVGFontFaceElement> m_svgFontFaceElement;
    6764#endif
    6865};
  • trunk/WebCore/css/CSSFontSelector.cpp

    r29663 r29700  
    5050#include "Settings.h"
    5151#include "SimpleFontData.h"
    52 
     52#include "SVGFontFaceElement.h"
     53
     54// Ports which don't use SVG, don't generate SVGNames.h
    5355#if ENABLE(SVG)
    54 #include "SVGCSSFontFace.h"
    55 #include "SVGFontFaceElement.h"
    5656#include "SVGNames.h"
    5757#endif
     
    142142
    143143#if ENABLE(SVG_FONTS)
    144     SVGFontFaceElement* svgFontFaceElement = 0;
     144    bool foundInDocumentSVGFont = false;
    145145#endif
    146146
     
    160160
    161161#if ENABLE(SVG_FONTS)
    162             // SVG Fonts support (internal fonts, living within the document)
    163             svgFontFaceElement = item->svgFontFaceElement();
    164             if (svgFontFaceElement) {
    165                 // FIXME: If fontFace is not 0, it means that it is a CSSFontFace rather than a SVGCSSFontFace
    166                 // and therefore does not support SVG font-face elements, so we just skip this item.
    167                 if (fontFace)
    168                     continue;
    169                 foundLocal = true;
    170             }
     162            foundInDocumentSVGFont = item->svgFontFaceElement() != 0;
    171163#endif
    172164
    173165            // Test the validity of the local font now.  We don't want to include this font if it does not exist
    174166            // on the system.  If it *does* exist on the system, then we don't need to look any further.
    175             if (FontCache::fontExists(fontDescription, family) && !foundLocal) {
     167            if (FontCache::fontExists(fontDescription, family)
     168#if ENABLE(SVG_FONTS)   
     169                || foundInDocumentSVGFont
     170#endif
     171               ) {
    176172                source = new CSSFontFaceSource(family);
     173#if ENABLE(SVG_FONTS)
     174                source->setSVGFontFaceElement(item->svgFontFaceElement());
     175#endif
    177176                foundLocal = true;
    178177            }
    179178        }
    180179
    181         if (!fontFace) {
    182 #if ENABLE(SVG_FONTS)
    183             if (svgFontFaceElement)
    184                 fontFace = new SVGCSSFontFace(svgFontFaceElement);
    185             else
    186 #endif
    187                 fontFace = new CSSFontFace();
    188         }
     180        if (!fontFace)
     181            fontFace = new CSSFontFace();
    189182
    190183        if (source)
     
    241234        // SVG allows several <font> elements with the same font-family, differing only
    242235        // in ie. font-variant. Be sure to pick up the right one - in getFontData below.
    243         if (svgFontFaceElement && fontDescription.smallCaps())
     236        if (foundInDocumentSVGFont && fontDescription.smallCaps())
    244237            familyName += "-webkit-svg-small-caps";
    245238#endif
  • trunk/WebCore/platform/graphics/Font.cpp

    r29250 r29700  
    508508int Font::ascent() const
    509509{
    510     return primaryFont()->ascent(size());
     510    return primaryFont()->ascent();
    511511}
    512512
    513513int Font::descent() const
    514514{
    515     return primaryFont()->descent(size());
     515    return primaryFont()->descent();
    516516}
    517517
    518518int Font::lineSpacing() const
    519519{
    520     return primaryFont()->lineSpacing(size());
     520    return primaryFont()->lineSpacing();
    521521}
    522522
    523523float Font::xHeight() const
    524524{
    525     return primaryFont()->xHeight(size());
     525    return primaryFont()->xHeight();
    526526}
    527527
     
    790790}
    791791
    792 }
     792FontSelector* Font::fontSelector() const
     793{
     794    return m_fontList ? m_fontList->fontSelector() : 0;
     795}
     796
     797}
  • trunk/WebCore/platform/graphics/Font.h

    r29250 r29700  
    252252        return (((c & ~0xFF) == 0 && gRoundingHackCharacterTable[c]));
    253253    }
     254
     255    FontSelector* fontSelector() const;
    254256#endif
    255257    static bool treatAsSpace(UChar c) { return c == ' ' || c == '\t' || c == '\n' || c == 0x00A0; }
  • trunk/WebCore/platform/graphics/FontData.h

    r29663 r29700  
    4040    virtual const SimpleFontData* fontDataForCharacter(UChar32) const = 0;
    4141    virtual bool containsCharacters(const UChar*, int length) const = 0;
     42    virtual bool isSVGFont() const = 0;
    4243    virtual bool isCustomFont() const = 0;
    4344    virtual bool isLoading() const = 0;
  • trunk/WebCore/platform/graphics/SegmentedFontData.cpp

    r29663 r29700  
    5656}
    5757
     58#if ENABLE(SVG_FONTS)
     59bool SegmentedFontData::isSVGFont() const
     60{
     61    // We don't support segmented svg fonts at the moment.
     62    return false;
     63}
     64#endif
     65
    5866bool SegmentedFontData::isCustomFont() const
    5967{
  • trunk/WebCore/platform/graphics/SegmentedFontData.h

    r29663 r29700  
    5858    virtual const SimpleFontData* fontDataForCharacter(UChar32) const;
    5959    virtual bool containsCharacters(const UChar*, int length) const;
     60
     61#if ENABLE(SVG_FONTS)
     62    virtual bool isSVGFont() const;
     63#endif
     64
    6065    virtual bool isCustomFont() const;
    6166    virtual bool isLoading() const;
  • trunk/WebCore/platform/graphics/SimpleFontData.cpp

    r29250 r29700  
    3131#include "SimpleFontData.h"
    3232
    33 #include <wtf/MathExtras.h>
    34 
    3533#if ENABLE(SVG_FONTS)
     34#include "SVGFontData.h"
    3635#include "SVGFontFaceElement.h"
    3736#endif
    3837
     38#include <wtf/MathExtras.h>
     39
    3940namespace WebCore {
    4041
    41 #if ENABLE(SVG_FONTS)
    42 // Don't implement constructor in the header to save a SVGFontFaceElement.h include.
    43 SVGFontData::SVGFontData(SVGFontFaceElement* element)
    44     : fontFaceElement(element)
    45     , horizontalOriginX(0.0f)
    46     , horizontalOriginY(0.0f)
    47     , horizontalAdvanceX(0.0f)
    48     , verticalOriginX(0.0f)
    49     , verticalOriginY(0.0f)
    50     , verticalAdvanceY(0.0f)
    51 {
    52 }
    53 
    54 float SVGFontData::convertEmUnitToPixel(float fontSize, float unitsPerEm, float value)
    55 {
    56     ASSERT(unitsPerEm > 0.0f);
    57     return value * fontSize / unitsPerEm;
    58 }
    59 #endif
    60 
    61 SimpleFontData::SimpleFontData(const FontPlatformData& f, bool customFont, bool loading)
     42SimpleFontData::SimpleFontData(const FontPlatformData& f, bool customFont, bool loading, SVGFontData* svgFontData)
    6243    : m_font(f)
    6344    , m_treatAsFixedPitch(false)
    64 #if ENABLE(SVG_FONTS)
    65     , m_svgFontData(0)
    66 #endif
     45    , m_svgFontData(svgFontData)
    6746    , m_isCustomFont(customFont)
    6847    , m_isLoading(loading)
    6948    , m_smallCapsFontData(0)
    70 {   
     49{
     50#if ENABLE(SVG_FONTS) && !PLATFORM(QT)
     51    if (SVGFontFaceElement* svgFontFaceElement = svgFontData ? svgFontData->svgFontFaceElement() : 0) {
     52       m_unitsPerEm = svgFontFaceElement->unitsPerEm();
     53
     54       float scale = f.size();
     55       if (m_unitsPerEm)
     56           scale /= m_unitsPerEm;
     57
     58        m_ascent = svgFontFaceElement->ascent() * scale;
     59        m_descent = svgFontFaceElement->descent() * scale;
     60        m_xHeight = svgFontFaceElement->xHeight() * scale;
     61
     62        m_spaceGlyph = 0;
     63        m_spaceWidth = 0;
     64        m_adjustedSpaceWidth = 0;
     65        determinePitch();
     66        m_missingGlyphData.fontData = this;
     67        m_missingGlyphData.glyph = 0;
     68        return;
     69    }
     70#endif
     71
    7172    platformInit();
    72    
     73
    7374    GlyphPage* glyphPageZero = GlyphPageTreeNode::getRootChild(this, 0)->page();
    7475    if (!glyphPageZero) {
     
    117118}
    118119
    119 int SimpleFontData::ascent(float fontSize) const
    120 {
    121 #if ENABLE(SVG_FONTS)
    122     if (m_svgFontData)
    123         return SVGFontData::convertEmUnitToPixel(fontSize, m_unitsPerEm, m_ascent);
    124 #endif
    125 
    126     return m_ascent;
    127 }
    128 
    129 int SimpleFontData::descent(float fontSize) const
    130 {
    131 #if ENABLE(SVG_FONTS)
    132     if (m_svgFontData)
    133         return SVGFontData::convertEmUnitToPixel(fontSize, m_unitsPerEm, m_descent);
    134 #endif
    135 
    136     return m_descent;
    137 }
    138 
    139 int SimpleFontData::lineSpacing(float fontSize) const
    140 {
    141 #if ENABLE(SVG_FONTS)
    142     if (m_svgFontData)
    143         return (int) ceilf(SVGFontData::convertEmUnitToPixel(fontSize, m_unitsPerEm, m_lineSpacing));
    144 #endif
    145 
    146     return m_lineSpacing;
    147 }
    148 
    149 int SimpleFontData::lineGap(float fontSize) const
    150 {
    151 #if ENABLE(SVG_FONTS)
    152     if (m_svgFontData)
    153         return SVGFontData::convertEmUnitToPixel(fontSize, m_unitsPerEm, m_lineGap);
    154 #endif
    155 
    156     return m_lineGap;
    157 }
    158 
    159 float SimpleFontData::xHeight(float fontSize) const
    160 {
    161 #if ENABLE(SVG_FONTS)
    162     if (m_svgFontData)
    163         return SVGFontData::convertEmUnitToPixel(fontSize, m_unitsPerEm, m_xHeight);
    164 #endif
    165 
    166     return m_xHeight;
    167 }
    168 
    169120float SimpleFontData::widthForGlyph(Glyph glyph) const
    170121{
  • trunk/WebCore/platform/graphics/SimpleFontData.h

    r29663 r29700  
    2929#include "GlyphWidthMap.h"
    3030#include <wtf/OwnPtr.h>
     31
    3132#if PLATFORM(MAC)
    3233typedef struct OpaqueATSUStyle* ATSUStyle;
     
    4243class FontPlatformData;
    4344class SharedBuffer;
     45class SVGFontData;
    4446class WidthMap;
    45 
    46 #if ENABLE(SVG_FONTS)
    47 class SVGFontFaceElement;
    48 
    49 struct SVGFontData {
    50     SVGFontData(SVGFontFaceElement*);
    51 
    52     // Helper function
    53     static float convertEmUnitToPixel(float fontSize, float unitsPerEm, float value);
    54 
    55     // Hold pointer to our creator
    56     RefPtr<SVGFontFaceElement> fontFaceElement;
    57 
    58     // SVG Font specific metrics
    59     float horizontalOriginX;
    60     float horizontalOriginY;
    61     float horizontalAdvanceX;
    62 
    63     float verticalOriginX;
    64     float verticalOriginY;
    65     float verticalAdvanceY;
    66 };
    67 #endif
    6847
    6948enum Pitch { UnknownPitch, FixedPitch, VariablePitch };
     
    7150class SimpleFontData : public FontData {
    7251public:
    73     SimpleFontData(const FontPlatformData&, bool customFont = false, bool loading = false);
     52    SimpleFontData(const FontPlatformData&, bool customFont = false, bool loading = false, SVGFontData* data = 0);
    7453    virtual ~SimpleFontData();
    7554
     
    7958
    8059    // vertical metrics
    81     int ascent(float fontSize) const;
    82     int descent(float fontSize) const;
    83     int lineSpacing(float fontSize) const;
    84     int lineGap(float fontSize) const;
    85     float xHeight(float fontSize) const;
     60    int ascent() const { return m_ascent; }
     61    int descent() const { return m_descent; }
     62    int lineSpacing() const { return m_lineSpacing; }
     63    int lineGap() const { return m_lineGap; }
     64    float xHeight() const { return m_xHeight; }
    8665    unsigned unitsPerEm() const { return m_unitsPerEm; }
    8766
     
    9574    Pitch pitch() const { return m_treatAsFixedPitch ? FixedPitch : VariablePitch; }
    9675
    97 #if ENABLE(SVG_FONTS)
    98     bool isSVGFont() const { return m_svgFontData; }
    99     SVGFontData* svgFontData() const { return m_svgFontData.get(); }
    100 #endif
    101 
     76    virtual bool isSVGFont() const { return m_svgFontData; }
    10277    virtual bool isCustomFont() const { return m_isCustomFont; }
    10378    virtual bool isLoading() const { return m_isLoading; }
     
    10580
    10681    const GlyphData& missingGlyphData() const { return m_missingGlyphData; }
     82
     83#if ENABLE(SVG_FONTS)
     84    SVGFontData* svgFontData() const { return m_svgFontData.get(); }
     85#endif
    10786
    10887#if PLATFORM(MAC)
  • trunk/WebCore/platform/graphics/gtk/FontPlatformData.h

    r29418 r29700  
    5151    FontPlatformData(const FontDescription&, const AtomicString& family);
    5252
     53    FontPlatformData(float size, bool bold, bool italic);
    5354    FontPlatformData(cairo_font_face_t* fontFace, int size, bool bold, bool italic);
    5455
     
    5859
    5960    bool isFixedPitch();
     61    float size() const { return m_fontDescription.specifiedSize(); }
    6062
    6163    void setFont(cairo_t*) const;
  • trunk/WebCore/platform/graphics/gtk/FontPlatformDataGtk.cpp

    r29602 r29700  
    118118}
    119119
     120FontPlatformData(float size, bool bold, bool italic)
     121    : m_pattern(0)
     122    , m_fontDescription()
     123    , m_scaledFont(0)
     124{
     125}
     126
    120127FontPlatformData::FontPlatformData(cairo_font_face_t* fontFace, int size, bool bold, bool italic)
    121128    : m_pattern(0)
  • trunk/WebCore/platform/graphics/mac/FontPlatformData.h

    r29663 r29700  
    4848    {}
    4949
     50    FontPlatformData(float s, bool b, bool o)
     51        : m_syntheticBold(b)
     52        , m_syntheticOblique(o)
     53        , m_cgFont(0)
     54        , m_atsuFontID(0)
     55        , m_size(s)
     56        , m_font(0)
     57    {
     58    }
     59
    5060    FontPlatformData(NSFont* f = 0, bool b = false, bool o = false);
    5161   
     
    5868   
    5969    ~FontPlatformData();
     70
     71    float size() const { return m_size; }
    6072
    6173    bool m_syntheticBold;
  • trunk/WebCore/platform/graphics/win/FontPlatformData.h

    r28867 r29700  
    5959
    6060    FontPlatformData(HFONT, float size, bool bold, bool oblique, bool useGDI);
     61    FontPlatformData(float size, bool bold, bool oblique);
    6162    FontPlatformData(CGFontRef, float size, bool bold, bool oblique);
    6263    ~FontPlatformData();
  • trunk/WebCore/platform/graphics/win/FontPlatformDataWin.cpp

    r29170 r29700  
    198198}
    199199
     200FontPlatformData::FontPlatformData(float size, bool bold, bool oblique)
     201    : m_font(0)
     202    , m_size(size)
     203    , m_cgFont(0)
     204    , m_syntheticBold(bold)
     205    , m_syntheticOblique(oblique)
     206    , m_useGDI(false)
     207{
     208}
     209
    200210FontPlatformData::FontPlatformData(CGFontRef font, float size, bool bold, bool oblique)
    201211    : m_font(0)
  • trunk/WebCore/rendering/RenderSVGText.cpp

    r29258 r29700  
    196196        const Font& font = style()->font();
    197197        if (font.primaryFont()->isSVGFont()) {
    198             float scale = SVGFontData::convertEmUnitToPixel(font.size(), font.unitsPerEm(), 1.0f);
     198            float scale = font.unitsPerEm() > 0 ? font.size() / font.unitsPerEm() : 0.0f;
    199199
    200200            if (scale != 0.0f)
  • trunk/WebCore/svg/SVGFont.cpp

    r29663 r29700  
    11/**
    2  * Copyright (C) 2007 Nikolas Zimmermann <zimmermann@kde.org>
     2 * Copyright (C) 2007, 2008 Nikolas Zimmermann <zimmermann@kde.org>
    33 *
    44 * This library is free software; you can redistribute it and/or
     
    2424#include "Font.h"
    2525
     26#include "CSSFontSelector.h"
    2627#include "GraphicsContext.h"
    2728#include "RenderObject.h"
    2829#include "SimpleFontData.h"
     30#include "SVGFontData.h"
    2931#include "SVGGlyphElement.h"
    3032#include "SVGFontElement.h"
    3133#include "SVGFontFaceElement.h"
     34#include "SVGMissingGlyphElement.h"
    3235#include "SVGPaintServer.h"
    3336#include "XMLNames.h"
     
    3639
    3740namespace WebCore {
     41
     42static inline float convertEmUnitToPixel(float fontSize, float unitsPerEm, float value)
     43{
     44    if (unitsPerEm == 0.0f)
     45        return 0.0f;
     46
     47    return value * fontSize / unitsPerEm;
     48}
    3849
    3950static inline bool isVerticalWritingMode(const SVGRenderStyle* style)
     
    160171
    161172    // Check wheter languages are compatible
    162     if (!language.isEmpty() && !identifier.languages.isEmpty()) {
     173    if (!identifier.languages.isEmpty()) {
     174        // This glyph exists only in certain languages, if we're not specifying a
     175        // language on the referencing element we're unable to use this glyph.
     176        if (language.isEmpty())
     177            return false;
     178
    163179        // Split subcode from language, if existant.
    164180        String languagePrefix;
     
    189205}
    190206
    191 static inline SVGFontData* svgFontAndFontFaceElementForFontData(const SimpleFontData* fontData, SVGFontFaceElement*& fontFace, SVGFontElement*& font)
    192 {
    193     ASSERT(!fontData->isCustomFont());
     207static inline const SVGFontData* svgFontAndFontFaceElementForFontData(const SimpleFontData* fontData, SVGFontFaceElement*& fontFace, SVGFontElement*& font)
     208{
     209    ASSERT(fontData->isCustomFont());
    194210    ASSERT(fontData->isSVGFont());
    195211
    196     SVGFontData* svgFontData = fontData->svgFontData();
    197     ASSERT(svgFontData);
    198 
    199     fontFace = svgFontData->fontFaceElement.get();
     212    const SVGFontData* svgFontData = static_cast<const SVGFontData*>(fontData->svgFontData());
     213
     214    fontFace = svgFontData->svgFontFaceElement();
    200215    ASSERT(fontFace);
    201216
     
    209224struct SVGTextRunWalker {
    210225    typedef bool (*SVGTextRunWalkerCallback)(const SVGGlyphIdentifier&, SVGTextRunData&);
    211     typedef void (*SVGTextRunWalkerMissingGlyphCallback)(const TextRun&, unsigned int, SVGTextRunData&);
    212 
    213     SVGTextRunWalker(SVGFontData* fontData, SVGFontElement* fontElement, SVGTextRunData& data,
     226    typedef void (*SVGTextRunWalkerMissingGlyphCallback)(const TextRun&, SVGTextRunData&);
     227
     228    SVGTextRunWalker(const SVGFontData* fontData, SVGFontElement* fontElement, SVGTextRunData& data,
    214229                     SVGTextRunWalkerCallback callback, SVGTextRunWalkerMissingGlyphCallback missingGlyphCallback)
    215230        : m_fontData(fontData)
     
    268283
    269284            if (!foundGlyph) {
    270                 (*m_walkerMissingGlyphCallback)(run, i, m_walkerData);
    271                 continue;
     285                if (SVGMissingGlyphElement* element = m_fontElement->firstMissingGlyphElement()) {
     286                    // <missing-glyph> element support
     287                    identifier = SVGGlyphElement::buildGenericGlyphIdentifier(element);
     288                    SVGGlyphElement::inheritUnspecifiedAttributes(identifier, m_fontData);
     289                } else {
     290                    // Fallback to system font fallback
     291                    TextRun subRun(run);
     292                    subRun.setText(subRun.data(i), 1);
     293
     294                    (*m_walkerMissingGlyphCallback)(subRun, m_walkerData);
     295                    continue;
     296                }
    272297            }
    273298
     
    280305
    281306private:
    282     SVGFontData* m_fontData;
     307    const SVGFontData* m_fontData;
    283308    SVGFontElement* m_fontElement;
    284309    SVGTextRunData& m_walkerData;
     
    293318    int to;
    294319
     320    float scale;
    295321    float length;
    296     float fontSize;
    297     unsigned unitsPerEm;
    298322    const Font* font;
    299323};
     
    302326{
    303327    if (data.at >= data.from && data.at < data.to)
    304         data.length += SVGFontData::convertEmUnitToPixel(data.fontSize, data.unitsPerEm, identifier.horizontalAdvanceX);
     328        data.length += identifier.horizontalAdvanceX * data.scale;
    305329
    306330    data.at++;
     
    308332}
    309333
    310 void floatWidthMissingGlyphCallback(const TextRun& run, unsigned int position, SVGTextRunWalkerMeasuredLengthData& data)
    311 {
    312     // Construct a copy of the current SVG Font that in is use. Disable the SVG Font functionality
    313     // in that copy of the Font object, so drawText/floatWidth end up in the "simple" code paths.
    314     SimpleFontData* fontData = const_cast<SimpleFontData*>(data.font->primaryFont());
    315     SVGFontData* svgFontData = fontData->m_svgFontData.release();
    316 
     334void floatWidthMissingGlyphCallback(const TextRun& run, SVGTextRunWalkerMeasuredLengthData& data)
     335{
    317336    // Handle system font fallback
    318     TextRun subRun(run);
    319     subRun.setText(subRun.data(position), 1);
    320 
    321     data.length += data.font->floatWidth(subRun);
    322 
    323     // Switch back to SVG Font code path
    324     fontData->m_svgFontData.set(svgFontData);
     337    Font font(FontDescription(), 0, 0); // spacing handled by SVG text code.
     338    font.update(data.font->fontSelector());
     339
     340    data.length += font.floatWidth(run);
    325341}
    326342
     
    336352    SVGFontFaceElement* fontFaceElement = 0;
    337353
    338     if (SVGFontData* fontData = svgFontAndFontFaceElementForFontData(font->primaryFont(), fontFaceElement, fontElement)) {
     354    if (const SVGFontData* fontData = svgFontAndFontFaceElementForFontData(font->primaryFont(), fontFaceElement, fontElement)) {
    339355        if (!fontElement)
    340356            return 0.0f;
     
    346362        data.from = from;
    347363        data.to = to;
     364        data.scale = convertEmUnitToPixel(font->size(), fontFaceElement->unitsPerEm(), 1.0f);
    348365        data.length = 0.0f;
    349         data.fontSize = font->size();
    350         data.unitsPerEm = fontFaceElement->unitsPerEm();
    351366
    352367        if (RenderObject* renderObject = run.referencingRenderObject()) {
     
    354369
    355370            String language;
    356             if (renderObject->element())
    357                 language = static_cast<Element*>(renderObject->element())->getAttribute(XMLNames::langAttr);
     371            if (SVGElement* element = static_cast<SVGElement*>(renderObject->element()))
     372                language = element->getAttribute(XMLNames::langAttr);
    358373
    359374            SVGTextRunWalker<SVGTextRunWalkerMeasuredLengthData> runWalker(fontData, fontElement, data, floatWidthUsingSVGFontCallback, floatWidthMissingGlyphCallback);
     
    374389// Callback & data structures to draw text using SVG Fonts
    375390struct SVGTextRunWalkerDrawTextData {
    376     float fontSize;
    377391    float scale;
    378     unsigned unitsPerEm;
    379392    bool isVerticalText;
    380393
     
    396409
    397410        if (data.isVerticalText) {
    398             data.glyphOrigin.setX(SVGFontData::convertEmUnitToPixel(data.fontSize, data.unitsPerEm, identifier.verticalOriginX));
    399             data.glyphOrigin.setY(SVGFontData::convertEmUnitToPixel(data.fontSize, data.unitsPerEm, identifier.verticalOriginY));
     411            data.glyphOrigin.setX(identifier.verticalOriginX * data.scale);
     412            data.glyphOrigin.setY(identifier.verticalOriginY * data.scale);
    400413        }
    401414
     
    422435
    423436    if (data.isVerticalText)
    424         data.currentPoint.move(0.0f, SVGFontData::convertEmUnitToPixel(data.fontSize, data.unitsPerEm, identifier.verticalAdvanceY));
     437        data.currentPoint.move(0.0f, identifier.verticalAdvanceY * data.scale);
    425438    else
    426         data.currentPoint.move(SVGFontData::convertEmUnitToPixel(data.fontSize, data.unitsPerEm, identifier.horizontalAdvanceX), 0.0f);
     439        data.currentPoint.move(identifier.horizontalAdvanceX * data.scale, 0.0f);
    427440
    428441    return true;
    429442}
    430443
    431 void drawTextMissingGlyphCallback(const TextRun& run, unsigned int position, SVGTextRunWalkerDrawTextData& data)
    432 {
    433     // Construct a copy of the current SVG Font that in is use. Disable the SVG Font functionality
    434     // in that copy of the Font object, so drawText/floatWidth end up in the "simple" code paths.
    435     const Font& font = data.context->font();
    436 
    437     SimpleFontData* fontData = const_cast<SimpleFontData*>(font.primaryFont());
    438     SVGFontData* svgFontData = fontData->m_svgFontData.release();
    439 
     444void drawTextMissingGlyphCallback(const TextRun& run, SVGTextRunWalkerDrawTextData& data)
     445{
    440446    // Handle system font fallback
    441     TextRun subRun(run);
    442     subRun.setText(subRun.data(position), 1);
    443 
    444     font.drawText(data.context, subRun, data.currentPoint);
     447    Font font(FontDescription(), 0, 0); // spacing handled by SVG text code.
     448    font.update(data.context->font().fontSelector());
     449
     450    font.drawText(data.context, run, data.currentPoint);
    445451
    446452    if (data.isVerticalText)
    447         data.currentPoint.move(0.0f, data.context->font().floatWidth(subRun));
     453        data.currentPoint.move(0.0f, font.floatWidth(run));
    448454    else
    449         data.currentPoint.move(data.context->font().floatWidth(subRun), 0.0f);
    450 
    451     // Switch back to SVG Font code path
    452     fontData->m_svgFontData.set(svgFontData);
     455        data.currentPoint.move(font.floatWidth(run), 0.0f);
    453456}
    454457
     
    459462    SVGFontFaceElement* fontFaceElement = 0;
    460463
    461     if (SVGFontData* fontData = svgFontAndFontFaceElementForFontData(primaryFont(), fontFaceElement, fontElement)) {
     464    if (const SVGFontData* fontData = svgFontAndFontFaceElementForFontData(primaryFont(), fontFaceElement, fontElement)) {
    462465        if (!fontElement)
    463466            return;
     
    471474        ASSERT(data.activePaintServer);
    472475
    473         data.fontSize = size();
    474         data.unitsPerEm = fontFaceElement->unitsPerEm();
    475         data.scale = SVGFontData::convertEmUnitToPixel(data.fontSize, data.unitsPerEm, 1.0f);
     476        data.scale = convertEmUnitToPixel(size(), fontFaceElement->unitsPerEm(), 1.0f);
    476477        data.isVerticalText = isVerticalWritingMode(data.renderObject->style()->svgStyle());   
    477478        data.xStartOffset = floatWidthOfSubStringUsingSVGFont(this, run, run.rtl() ? to : 0, run.rtl() ? run.length() : from);
     
    481482
    482483        String language;
    483         if (data.renderObject->element())
    484             language = static_cast<Element*>(data.renderObject->element())->getAttribute(XMLNames::langAttr);
     484        if (SVGElement* element = static_cast<SVGElement*>(data.renderObject->element()))
     485            language = element->getAttribute(XMLNames::langAttr);
    485486
    486487        if (!data.isVerticalText) {
    487             data.glyphOrigin.setX(SVGFontData::convertEmUnitToPixel(data.fontSize, data.unitsPerEm, fontData->horizontalOriginX));
    488             data.glyphOrigin.setY(SVGFontData::convertEmUnitToPixel(data.fontSize, data.unitsPerEm, fontData->horizontalOriginY));
    489         }
    490    
     488            data.glyphOrigin.setX(fontData->horizontalOriginX() * data.scale);
     489            data.glyphOrigin.setY(fontData->horizontalOriginY() * data.scale);
     490        }
     491
    491492        SVGTextRunWalker<SVGTextRunWalkerDrawTextData> runWalker(fontData, fontElement, data, drawTextUsingSVGFontCallback, drawTextMissingGlyphCallback);
    492493        runWalker.walk(run, data.isVerticalText, language, from, to);
  • trunk/WebCore/svg/SVGFontFaceElement.cpp

    r29663 r29700  
    11/*
    22   Copyright (C) 2007 Eric Seidel <eric@webkit.org>
    3    Copyright (C) 2007 Nikolas Zimmermann <zimmermann@kde.org>
     3   Copyright (C) 2007, 2008 Nikolas Zimmermann <zimmermann@kde.org>
    44   
    55   This library is free software; you can redistribute it and/or
     
    2323#if ENABLE(SVG_FONTS)
    2424#include "SVGFontFaceElement.h"
    25 
     25#include "CString.h"
    2626#include "CSSFontFaceRule.h"
    2727#include "CSSFontFaceSrcValue.h"
     
    139139unsigned SVGFontFaceElement::unitsPerEm() const
    140140{
    141     if (hasAttribute(units_per_emAttr))
    142         return static_cast<int>(ceilf(getAttribute(units_per_emAttr).toFloat()));
    143 
    144     return 1000;
    145 }
    146 
    147 String SVGFontFaceElement::fontFamily() const
    148 {
    149     return m_styleDeclaration->getPropertyValue(CSS_PROP_FONT_FAMILY);
    150 }
    151 
    152 SimpleFontData* SVGFontFaceElement::createFontData(const FontDescription& fontDescription) const
    153 {
    154     // We only expect to have this method called by a parent font element
    155     ASSERT(parentNode());
    156     ASSERT(parentNode()->hasTagName(fontTag));
    157     SVGFontElement* fontElement = static_cast<SVGFontElement*>(parentNode());
    158 
    159     FontPlatformData* cachedPlatformData = FontCache::getLastResortFallbackFont(fontDescription);
    160     if (!cachedPlatformData)
     141    AtomicString value(getAttribute(units_per_emAttr));
     142    if (value.isEmpty())
     143        return 1000;
     144
     145    return static_cast<unsigned>(ceilf(value.toFloat()));
     146}
     147
     148int SVGFontFaceElement::xHeight() const
     149{
     150    AtomicString value(getAttribute(x_heightAttr));
     151    if (value.isEmpty())
    161152        return 0;
    162153
    163     OwnPtr<SimpleFontData> fontData(new SimpleFontData(*cachedPlatformData));
    164 
    165     SVGFontData* svgFontData = new SVGFontData(const_cast<SVGFontFaceElement*>(this));
    166     fontData->m_svgFontData.set(svgFontData);
    167 
    168     fontData->m_xHeight = fontElement->getAttribute(x_heightAttr).toFloat();
    169     fontData->m_unitsPerEm = unitsPerEm();
     154    return static_cast<int>(ceilf(value.toFloat()));
     155}
     156
     157float SVGFontFaceElement::horizontalOriginX() const
     158{
     159    if (!m_fontElement)
     160        return 0.0f;
    170161
    171162    // Spec: The X-coordinate in the font coordinate system of the origin of a glyph to be used when
    172163    // drawing horizontally oriented text. (Note that the origin applies to all glyphs in the font.)
    173164    // If the attribute is not specified, the effect is as if a value of "0" were specified.
    174     if (fontElement->hasAttribute(horiz_origin_xAttr))
    175         svgFontData->horizontalOriginX = fontElement->getAttribute(horiz_origin_xAttr).toFloat();
     165    AtomicString value(m_fontElement->getAttribute(horiz_origin_xAttr));
     166    if (value.isEmpty())
     167        return 0.0f;
     168
     169    return value.toFloat();
     170}
     171
     172float SVGFontFaceElement::horizontalOriginY() const
     173{
     174    if (!m_fontElement)
     175        return 0.0f;
    176176
    177177    // Spec: The Y-coordinate in the font coordinate system of the origin of a glyph to be used when
    178178    // drawing horizontally oriented text. (Note that the origin applies to all glyphs in the font.)
    179179    // If the attribute is not specified, the effect is as if a value of "0" were specified.
    180     if (fontElement->hasAttribute(horiz_origin_yAttr))
    181         svgFontData->horizontalOriginY = fontElement->getAttribute(horiz_origin_yAttr).toFloat();
     180    AtomicString value(m_fontElement->getAttribute(horiz_origin_yAttr));
     181    if (value.isEmpty())
     182        return 0.0f;
     183
     184    return value.toFloat();
     185}
     186
     187float SVGFontFaceElement::horizontalAdvanceX() const
     188{
     189    if (!m_fontElement)
     190        return 0.0f;
    182191
    183192    // Spec: The default horizontal advance after rendering a glyph in horizontal orientation. Glyph
    184193    // widths are required to be non-negative, even if the glyph is typically rendered right-to-left,
    185194    // as in Hebrew and Arabic scripts.
    186     if (fontElement->hasAttribute(horiz_adv_xAttr)) {
    187         float advance = fontElement->getAttribute(horiz_adv_xAttr).toFloat();
    188 
    189         // TODO: Report errors, instead of silent ignore?
    190         if (advance >= 0.0)
    191             svgFontData->horizontalAdvanceX = advance;
    192     }
     195    AtomicString value(m_fontElement->getAttribute(horiz_adv_xAttr));
     196    if (value.isEmpty())
     197        return 0.0f;
     198
     199    return value.toFloat();
     200}
     201
     202float SVGFontFaceElement::verticalOriginX() const
     203{
     204    if (!m_fontElement)
     205        return 0.0f;
    193206
    194207    // Spec: The default X-coordinate in the font coordinate system of the origin of a glyph to be used when
    195208    // drawing vertically oriented text. If the attribute is not specified, the effect is as if the attribute
    196209    // were set to half of the effective value of attribute horiz-adv-x.
    197     if (fontElement->hasAttribute(vert_origin_xAttr))
    198         svgFontData->verticalOriginX = fontElement->getAttribute(vert_origin_xAttr).toFloat();
    199     else
    200         svgFontData->verticalOriginX = svgFontData->horizontalAdvanceX / 2.0f;
     210    AtomicString value(m_fontElement->getAttribute(vert_origin_xAttr));
     211    if (value.isEmpty())
     212        return horizontalAdvanceX() / 2.0f;
     213
     214    return value.toFloat();
     215}
     216
     217float SVGFontFaceElement::verticalOriginY() const
     218{
     219    if (!m_fontElement)
     220        return 0.0f;
    201221
    202222    // Spec: The default Y-coordinate in the font coordinate system of the origin of a glyph to be used when
    203223    // drawing vertically oriented text. If the attribute is not specified, the effect is as if the attribute
    204224    // were set to the position specified by the font's ascent attribute.             
    205     if (fontElement->hasAttribute(vert_origin_yAttr))
    206         svgFontData->verticalOriginY = fontElement->getAttribute(vert_origin_yAttr).toFloat();
    207     else
    208         svgFontData->verticalOriginY = fontElement->getAttribute(ascentAttr).toFloat();
     225    AtomicString value(m_fontElement->getAttribute(vert_origin_yAttr));
     226    if (value.isEmpty())
     227        return ascent();
     228
     229    return value.toFloat();
     230}
     231
     232float SVGFontFaceElement::verticalAdvanceY() const
     233{
     234    if (!m_fontElement)
     235        return 0.0f;
    209236
    210237    // Spec: The default vertical advance after rendering a glyph in vertical orientation. If the attribute is
    211238    // not specified, the effect is as if a value equivalent of one em were specified (see units-per-em).                   
    212     if (fontElement->hasAttribute(vert_adv_yAttr))
    213         svgFontData->verticalAdvanceY = fontElement->getAttribute(vert_adv_yAttr).toFloat();
    214     else
    215         svgFontData->verticalAdvanceY = 1.0f;
     239    AtomicString value(m_fontElement->getAttribute(vert_adv_yAttr));
     240       if (value.isEmpty())
     241        return 1.0f;
     242
     243    return value.toFloat();
     244}
     245
     246int SVGFontFaceElement::ascent() const
     247{
     248    if (!m_fontElement)
     249        return 0.0f;
    216250
    217251    // Spec: Same syntax and semantics as the 'ascent' descriptor within an @font-face rule. The maximum
     
    219253    // the effect is as if the attribute were set to the difference between the units-per-em value and the
    220254    // vert-origin-y value for the corresponding font.
    221     if (hasAttribute(ascentAttr))
    222         fontData->m_ascent = static_cast<int>(ceilf(getAttribute(ascentAttr).toFloat()));
    223     else if (fontElement->hasAttribute(vert_origin_yAttr))
    224         fontData->m_ascent = fontData->m_unitsPerEm - static_cast<int>(ceilf(fontElement->getAttribute(vert_origin_yAttr).toFloat()));
    225     else // Match Batik's default value.
    226         fontData->m_ascent = fontData->m_unitsPerEm * 0.8f;
     255    AtomicString value(m_fontElement->getAttribute(ascentAttr));
     256    if (!value.isEmpty())
     257        return static_cast<int>(ceilf(value.toFloat()));
     258
     259    value = m_fontElement->getAttribute(vert_origin_yAttr);
     260    if (!value.isEmpty())
     261        return static_cast<int>(unitsPerEm()) - static_cast<int>(ceilf(value.toFloat()));
     262
     263    // Match Batiks default value
     264    return static_cast<int>(ceilf(unitsPerEm() * 0.8f));
     265}
     266
     267int SVGFontFaceElement::descent() const
     268{
     269    if (!m_fontElement)
     270        return 0.0f;
    227271
    228272    // Spec: Same syntax and semantics as the 'descent' descriptor within an @font-face rule. The maximum
    229273    // unaccented depth of the font within the font coordinate system. If the attribute is not specified,
    230274    // the effect is as if the attribute were set to the vert-origin-y value for the corresponding font.
    231     if (hasAttribute(descentAttr)) {
    232         fontData->m_descent = static_cast<int>(ceilf(getAttribute(descentAttr).toFloat()));
    233 
     275    AtomicString value(m_fontElement->getAttribute(descentAttr));
     276    if (!value.isEmpty()) {
    234277        // Some testcases use a negative descent value, where a positive was meant to be used :(
    235         if (fontData->m_descent < 0)
    236             fontData->m_descent = -fontData->m_descent;
    237     } else if (fontElement->hasAttribute(vert_origin_yAttr))
    238         fontData->m_descent = static_cast<int>(ceilf(fontElement->getAttribute(vert_origin_yAttr).toFloat()));
    239     else // Match Batik's default value.
    240         fontData->m_descent = fontData->m_unitsPerEm * 0.2f;
    241 
    242     return fontData.release();
     278        int descent = static_cast<int>(ceilf(value.toFloat()));
     279        return descent < 0 ? -descent : descent;
     280    }
     281
     282    value = m_fontElement->getAttribute(vert_origin_yAttr);
     283    if (!value.isEmpty())
     284        return static_cast<int>(ceilf(value.toFloat()));
     285
     286    // Match Batiks default value
     287    return static_cast<int>(ceilf(unitsPerEm() * 0.2f));
     288}
     289
     290String SVGFontFaceElement::fontFamily() const
     291{
     292    return m_styleDeclaration->getPropertyValue(CSS_PROP_FONT_FAMILY);
     293}
     294
     295SVGFontElement* SVGFontFaceElement::associatedFontElement() const
     296{
     297    return m_fontElement.get();
    243298}
    244299
     
    253308        RefPtr<CSSValueList> list = new CSSValueList;
    254309
    255         RefPtr<CSSFontFaceSrcValue> src = new CSSFontFaceSrcValue(StringImpl::empty(), true /* isLocal */);
     310        RefPtr<CSSFontFaceSrcValue> src = new CSSFontFaceSrcValue(fontFamily(), true /* isLocal */);
    256311        src->setSVGFontFaceElement(this);
    257312        list->append(src);
     
    261316        m_styleDeclaration->addParsedProperties(&srcPropertyRef, 1);
    262317
     318        m_fontElement = static_cast<SVGFontElement*>(parentNode());
    263319        document()->updateStyleSelector();
    264320        return;
     
    305361}
    306362
    307 SVGFontElement* SVGFontFaceElement::associatedFontElement() const
    308 {
    309     if (Node* parent = parentNode()) {
    310         if (parent->hasTagName(fontTag))
    311             return static_cast<SVGFontElement*>(parent);
    312         else if (parent->hasTagName(defsTag)) {
    313             // TODO: Support external SVG fonts!
    314             return 0;
    315         }
    316     }
    317 
    318     return 0;
    319 }
    320 
    321363}
    322364
  • trunk/WebCore/svg/SVGFontFaceElement.h

    r29663 r29700  
    2929    class CSSFontFaceRule;
    3030    class CSSMutableStyleDeclaration;
    31     class FontDescription;
    32     class SimpleFontData;
    3331    class SVGFontElement;
    3432
     
    4442
    4543        unsigned unitsPerEm() const;
     44        int xHeight() const;
     45        float horizontalOriginX() const;
     46        float horizontalOriginY() const;
     47        float horizontalAdvanceX() const;
     48        float verticalOriginX() const;
     49        float verticalOriginY() const;
     50        float verticalAdvanceY() const;
     51        int ascent() const;
     52        int descent() const;
    4653        String fontFamily() const;
    4754
     55        SVGFontElement* associatedFontElement() const;
    4856        void rebuildFontFace();
    49         SimpleFontData* createFontData(const FontDescription&) const;
    50 
    51         // If our parent element is <font>, it will be returned. (this is the case for a SVG Font described in the same document)
    52         // Otherwhise it will return the <font> element that is referenced by the first valid <font-face-src> element.
    53         SVGFontElement* associatedFontElement() const;
    5457
    5558    private:
    5659        RefPtr<CSSFontFaceRule> m_fontFaceRule;
    5760        RefPtr<CSSMutableStyleDeclaration> m_styleDeclaration;
     61
     62        RefPtr<SVGFontElement> m_fontElement;
    5863    };
    5964
  • trunk/WebCore/svg/SVGGlyphElement.cpp

    r29663 r29700  
    11/*
    22   Copyright (C) 2007 Eric Seidel <eric@webkit.org>
    3    Copyright (C) 2007 Nikolas Zimmermann <zimmermann@kde.org>
     3   Copyright (C) 2007, 2008 Nikolas Zimmermann <zimmermann@kde.org>
    44
    55   This library is free software; you can redistribute it and/or
     
    2626#include "SVGFontElement.h"
    2727#include "SVGFontFaceElement.h"
     28#include "SVGFontData.h"
    2829#include "SVGNames.h"
    2930#include "SVGParserUtilities.h"
     
    9495}
    9596
    96 void SVGGlyphElement::inheritUnspecifiedAttributes(SVGGlyphIdentifier& identifier, SVGFontData* svgFontData)
     97void SVGGlyphElement::inheritUnspecifiedAttributes(SVGGlyphIdentifier& identifier, const SVGFontData* svgFontData)
    9798{
    9899    if (identifier.horizontalAdvanceX == SVGGlyphIdentifier::inheritedValue())
    99         identifier.horizontalAdvanceX = svgFontData->horizontalAdvanceX;
     100        identifier.horizontalAdvanceX = svgFontData->horizontalAdvanceX();
    100101
    101102    if (identifier.verticalOriginX == SVGGlyphIdentifier::inheritedValue())
    102         identifier.verticalOriginX = svgFontData->verticalOriginX;
     103        identifier.verticalOriginX = svgFontData->verticalOriginX();
    103104
    104105    if (identifier.verticalOriginY == SVGGlyphIdentifier::inheritedValue())
    105         identifier.verticalOriginY = svgFontData->verticalOriginY;
     106        identifier.verticalOriginY = svgFontData->verticalOriginY();
    106107
    107108    if (identifier.verticalAdvanceY == SVGGlyphIdentifier::inheritedValue())
    108         identifier.verticalAdvanceY = svgFontData->verticalAdvanceY;
     109        identifier.verticalAdvanceY = svgFontData->verticalAdvanceY();
     110}
     111
     112static inline float parseSVGGlyphAttribute(const SVGElement* element, const WebCore::QualifiedName& name)
     113{
     114    AtomicString value(element->getAttribute(name));
     115    if (value.isEmpty())
     116        return SVGGlyphIdentifier::inheritedValue();
     117
     118    return value.toFloat();
     119}
     120
     121SVGGlyphIdentifier SVGGlyphElement::buildGenericGlyphIdentifier(const SVGElement* element)
     122{
     123    SVGGlyphIdentifier identifier;
     124    identifier.pathData = parsePathData(element->getAttribute(dAttr));
     125 
     126    // Spec: The horizontal advance after rendering the glyph in horizontal orientation.
     127    // If the attribute is not specified, the effect is as if the attribute were set to the
     128    // value of the font's horiz-adv-x attribute. Glyph widths are required to be non-negative,
     129    // even if the glyph is typically rendered right-to-left, as in Hebrew and Arabic scripts.
     130    identifier.horizontalAdvanceX = parseSVGGlyphAttribute(element, horiz_adv_xAttr);
     131
     132    // Spec: The X-coordinate in the font coordinate system of the origin of the glyph to be
     133    // used when drawing vertically oriented text. If the attribute is not specified, the effect
     134    // is as if the attribute were set to the value of the font's vert-origin-x attribute.
     135    identifier.verticalOriginX = parseSVGGlyphAttribute(element, vert_origin_xAttr);
     136
     137    // Spec: The Y-coordinate in the font coordinate system of the origin of a glyph to be
     138    // used when drawing vertically oriented text. If the attribute is not specified, the effect
     139    // is as if the attribute were set to the value of the font's vert-origin-y attribute.
     140    identifier.verticalOriginY = parseSVGGlyphAttribute(element, vert_origin_yAttr);
     141
     142    // Spec: The vertical advance after rendering a glyph in vertical orientation.
     143    // If the attribute is not specified, the effect is as if the attribute were set to the
     144    // value of the font's vert-adv-y attribute.
     145    identifier.verticalAdvanceY = parseSVGGlyphAttribute(element, vert_adv_yAttr);
     146
     147    return identifier;
    109148}
    110149
    111150SVGGlyphIdentifier SVGGlyphElement::buildGlyphIdentifier() const
    112151{
    113     SVGGlyphIdentifier identifier;
     152    SVGGlyphIdentifier identifier(buildGenericGlyphIdentifier(this));
    114153    identifier.glyphName = getAttribute(glyph_nameAttr);
    115154    identifier.orientation = parseOrientation(getAttribute(orientationAttr));
    116155    identifier.arabicForm = parseArabicForm(getAttribute(arabic_formAttr));
    117     identifier.pathData = parsePathData(getAttribute(dAttr));
    118156
    119     String language = getAttribute(XMLNames::langAttr);
    120     if (language.isEmpty()) // SVG defines a non-xml prefixed "lang" propert for <glyph> it seems.
    121         language = getAttribute("lang");
    122 
    123     identifier.languages = parseDelimitedString(language, ',');
    124 
    125     // Spec: The horizontal advance after rendering the glyph in horizontal orientation.
    126     // If the attribute is not specified, the effect is as if the attribute were set to the
    127     // value of the font's horiz-adv-x attribute. Glyph widths are required to be non-negative,
    128     // even if the glyph is typically rendered right-to-left, as in Hebrew and Arabic scripts.
    129     if (hasAttribute(horiz_adv_xAttr))
    130         identifier.horizontalAdvanceX = getAttribute(horiz_adv_xAttr).toFloat();
    131     else
    132         identifier.horizontalAdvanceX = SVGGlyphIdentifier::inheritedValue();
    133 
    134     // Spec: The X-coordinate in the font coordinate system of the origin of the glyph to be
    135     // used when drawing vertically oriented text. If the attribute is not specified, the effect
    136     // is as if the attribute were set to the value of the font's vert-origin-x attribute.
    137     if (hasAttribute(vert_origin_xAttr))
    138         identifier.verticalOriginX = getAttribute(vert_origin_xAttr).toFloat();
    139     else
    140         identifier.verticalOriginX = SVGGlyphIdentifier::inheritedValue();
    141 
    142     // Spec: The Y-coordinate in the font coordinate system of the origin of a glyph to be
    143     // used when drawing vertically oriented text. If the attribute is not specified, the effect
    144     // is as if the attribute were set to the value of the font's vert-origin-y attribute.
    145     if (hasAttribute(vert_origin_yAttr))
    146         identifier.verticalOriginY = getAttribute(vert_origin_yAttr).toFloat();
    147     else
    148         identifier.verticalOriginY = SVGGlyphIdentifier::inheritedValue();
    149 
    150     // Spec: The vertical advance after rendering a glyph in vertical orientation.
    151     // If the attribute is not specified, the effect is as if the attribute were set to the
    152     // value of the font's vert-adv-y attribute.
    153     if (hasAttribute(vert_adv_yAttr))
    154         identifier.verticalAdvanceY = getAttribute(vert_adv_yAttr).toFloat();
    155     else
    156         identifier.verticalAdvanceY = SVGGlyphIdentifier::inheritedValue();
     157    String language = getAttribute(langAttr);
     158    if (!language.isEmpty())
     159        identifier.languages = parseDelimitedString(language, ',');
    157160
    158161    return identifier;
  • trunk/WebCore/svg/SVGGlyphElement.h

    r29663 r29700  
    3030namespace WebCore {
    3131
     32    class AtomicString;
    3233    struct SVGFontData;
    3334
     
    107108
    108109        SVGGlyphIdentifier buildGlyphIdentifier() const;
    109         static void inheritUnspecifiedAttributes(SVGGlyphIdentifier&, SVGFontData*);
     110
     111        // Helper function used by SVGFont
     112        static void inheritUnspecifiedAttributes(SVGGlyphIdentifier&, const SVGFontData*);
     113        static String querySVGFontLanguage(const SVGElement*);
     114
     115        // Helper function shared between SVGGlyphElement & SVGMissingGlyphElement
     116        static SVGGlyphIdentifier buildGenericGlyphIdentifier(const SVGElement*);
    110117    };
    111 
    112118
    113119} // namespace WebCore
  • trunk/WebCore/svg/SVGMissingGlyphElement.cpp

    r29663 r29700  
    2323#include "SVGMissingGlyphElement.h"
    2424
    25 #include "SVGNames.h"
    26 
    2725namespace WebCore {
    28 
    29 using namespace SVGNames;
    3026
    3127SVGMissingGlyphElement::SVGMissingGlyphElement(const QualifiedName& tagName, Document* doc)
  • trunk/WebCore/svg/svgattrs.in

    r26507 r29700  
    103103keySplines
    104104keyTimes
     105lang
    105106lengthAdjust
    106107letter-spacing
Note: See TracChangeset for help on using the changeset viewer.