2010-05-08 Dirk Schulze <krit@webkit.org>
authorkrit@webkit.org <krit@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 8 May 2010 09:06:59 +0000 (09:06 +0000)
committerkrit@webkit.org <krit@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 8 May 2010 09:06:59 +0000 (09:06 +0000)
        Reviewed by Nikolas Zimmermann.

        SVGFont's VKern implementation missing
        https://bugs.webkit.org/show_bug.cgi?id=38663

        Implementation of vkern, needed by SVGFont. Also added DOM and JS bindings
        for vkern and hkern. Made some clean-up in SVGParserUtilities and SVGFontElement.
        SVGHKernElement and SVGVKernElement share most of the code now.

        Test: svg/text/text-vkern.svg

        * Android.derived.jscbindings.mk:
        * Android.derived.v8bindings.mk:
        * Android.mk:
        * DerivedSources.make:
        * GNUmakefile.am:
        * WebCore.gyp/WebCore.gyp:
        * WebCore.gypi:
        * WebCore.pri:
        * WebCore.pro:
        * WebCore.vcproj/WebCore.vcproj:
        * WebCore.xcodeproj/project.pbxproj:
        * page/DOMWindow.idl:
        * rendering/SVGRootInlineBox.cpp:
        (WebCore::applySVGKerning):
        (WebCore::SVGRootInlineBox::buildLayoutInformationForTextBox):
        * svg/SVGAllInOne.cpp:
        * svg/SVGFontElement.cpp:
        (WebCore::SVGFontElement::invalidateGlyphCache):
        (WebCore::SVGFontElement::ensureGlyphCache):
        (WebCore::matches):
        (WebCore::kerningForPairOfStringsAndGlyphs):
        (WebCore::SVGFontElement::horizontalKerningForPairOfStringsAndGlyphs):
        (WebCore::SVGFontElement::verticalKerningForPairOfStringsAndGlyphs):
        * svg/SVGFontElement.h:
        (WebCore::SVGKerningPair::SVGKerningPair):
        (WebCore::SVGFontElement::rendererIsNeeded):
        * svg/SVGHKernElement.cpp:
        (WebCore::SVGHKernElement::buildHorizontalKerningPair):
        * svg/SVGHKernElement.h:
        * svg/SVGParserUtilities.cpp:
        (WebCore::parseGlyphName):
        (WebCore::parseKerningUnicodeString):
        * svg/SVGParserUtilities.h:
        * svg/SVGVKernElement.cpp: Added.
        (WebCore::SVGVKernElement::SVGVKernElement):
        (WebCore::SVGVKernElement::~SVGVKernElement):
        (WebCore::SVGVKernElement::insertedIntoDocument):
        (WebCore::SVGVKernElement::removedFromDocument):
        (WebCore::SVGVKernElement::buildVerticalKerningPair):
        * svg/SVGVKernElement.h: Added.
        (WebCore::SVGVKernElement::rendererIsNeeded):
        * svg/SVGVKernElement.idl: Added.
        * svg/svgtags.in:

2010-05-08  Dirk Schulze  <krit@webkit.org>

        Reviewed by Nikolas Zimmermann.

        SVGFont's VKern implementation missing
        https://bugs.webkit.org/show_bug.cgi?id=38663

        The changes in DOMWindow.idl and the implementation of the DOM
        and JS bindings of VKern and HKern made some updates necessary.
        Added new test case for SVGFont's VKern.

        * fast/dom/Window/window-properties-expected.txt:
        * fast/dom/Window/window-property-descriptors-expected.txt:
        * fast/dom/prototype-inheritance-2-expected.txt:
        * fast/dom/prototype-inheritance-expected.txt:
        * fast/js/global-constructors-expected.txt:
        * platform/mac/svg/text/text-vkern-expected.checksum: Added.
        * platform/mac/svg/text/text-vkern-expected.png: Added.
        * platform/mac/svg/text/text-vkern-expected.txt: Added.
        * svg/custom/global-constructors-expected.txt:
        * svg/text/text-vkern.svg: Added.

2010-05-08  Dirk Schulze  <krit@webkit.org>

        Reviewed by Nikolas Zimmermann.

        SVGFont's VKern implementation missing
        https://bugs.webkit.org/show_bug.cgi?id=38663

        * projects/svg/status.xml:

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

38 files changed:
LayoutTests/ChangeLog
LayoutTests/fast/dom/Window/window-properties-expected.txt
LayoutTests/fast/dom/Window/window-property-descriptors-expected.txt
LayoutTests/fast/dom/prototype-inheritance-2-expected.txt
LayoutTests/fast/dom/prototype-inheritance-expected.txt
LayoutTests/fast/js/global-constructors-expected.txt
LayoutTests/platform/mac/svg/text/text-vkern-expected.checksum [new file with mode: 0644]
LayoutTests/platform/mac/svg/text/text-vkern-expected.png [new file with mode: 0644]
LayoutTests/platform/mac/svg/text/text-vkern-expected.txt [new file with mode: 0644]
LayoutTests/svg/custom/global-constructors-expected.txt
LayoutTests/svg/text/text-vkern.svg [new file with mode: 0644]
WebCore/Android.derived.jscbindings.mk
WebCore/Android.derived.v8bindings.mk
WebCore/Android.mk
WebCore/ChangeLog
WebCore/DerivedSources.make
WebCore/GNUmakefile.am
WebCore/WebCore.gyp/WebCore.gyp
WebCore/WebCore.gypi
WebCore/WebCore.pri
WebCore/WebCore.pro
WebCore/WebCore.vcproj/WebCore.vcproj
WebCore/WebCore.xcodeproj/project.pbxproj
WebCore/page/DOMWindow.idl
WebCore/rendering/SVGRootInlineBox.cpp
WebCore/svg/SVGAllInOne.cpp
WebCore/svg/SVGFontElement.cpp
WebCore/svg/SVGFontElement.h
WebCore/svg/SVGHKernElement.cpp
WebCore/svg/SVGHKernElement.h
WebCore/svg/SVGParserUtilities.cpp
WebCore/svg/SVGParserUtilities.h
WebCore/svg/SVGVKernElement.cpp [new file with mode: 0644]
WebCore/svg/SVGVKernElement.h [new file with mode: 0644]
WebCore/svg/SVGVKernElement.idl [new file with mode: 0644]
WebCore/svg/svgtags.in
WebKitSite/ChangeLog
WebKitSite/projects/svg/status.xml

index a58093d..58f5bf7 100644 (file)
@@ -1,3 +1,25 @@
+2010-05-08  Dirk Schulze  <krit@webkit.org>
+
+        Reviewed by Nikolas Zimmermann.
+
+        SVGFont's VKern implementation missing
+        https://bugs.webkit.org/show_bug.cgi?id=38663
+
+        The changes in DOMWindow.idl and the implementation of the DOM
+        and JS bindings of VKern and HKern made some updates necessary.
+        Added new test case for SVGFont's VKern.
+
+        * fast/dom/Window/window-properties-expected.txt:
+        * fast/dom/Window/window-property-descriptors-expected.txt:
+        * fast/dom/prototype-inheritance-2-expected.txt:
+        * fast/dom/prototype-inheritance-expected.txt:
+        * fast/js/global-constructors-expected.txt:
+        * platform/mac/svg/text/text-vkern-expected.checksum: Added.
+        * platform/mac/svg/text/text-vkern-expected.png: Added.
+        * platform/mac/svg/text/text-vkern-expected.txt: Added.
+        * svg/custom/global-constructors-expected.txt:
+        * svg/text/text-vkern.svg: Added.
+
 2010-05-08  Eric Seidel  <eric@webkit.org>
 
         Unreviewed, just reverting commit.
index 1e92d49..32c880c 100644 (file)
@@ -1476,6 +1476,8 @@ window.SVGGradientElement.SVG_SPREADMETHOD_REFLECT [number]
 window.SVGGradientElement.SVG_SPREADMETHOD_REPEAT [number]
 window.SVGGradientElement.SVG_SPREADMETHOD_UNKNOWN [number]
 window.SVGGradientElement.prototype [printed above as window.Element.prototype]
+window.SVGHKernElement [object SVGHKernElementConstructor]
+window.SVGHKernElement.prototype [printed above as window.Element.prototype]
 window.SVGImageElement [object SVGImageElementConstructor]
 window.SVGImageElement.prototype [printed above as window.Element.prototype]
 window.SVGLength [object SVGLengthConstructor]
@@ -1818,6 +1820,8 @@ window.SVGUnitTypes.prototype.SVG_UNIT_TYPE_UNKNOWN [number]
 window.SVGUnitTypes.prototype.SVG_UNIT_TYPE_USERSPACEONUSE [number]
 window.SVGUseElement [object SVGUseElementConstructor]
 window.SVGUseElement.prototype [printed above as window.Element.prototype]
+window.SVGVKernElement [object SVGVKernElementConstructor]
+window.SVGVKernElement.prototype [printed above as window.Element.prototype]
 window.SVGViewElement [object SVGViewElementConstructor]
 window.SVGViewElement.SVG_ZOOMANDPAN_DISABLE [number]
 window.SVGViewElement.SVG_ZOOMANDPAN_MAGNIFY [number]
index 4b7a62d..1815e2d 100644 (file)
@@ -217,6 +217,7 @@ PASS typeof Object.getOwnPropertyDescriptor(window, 'SVGForeignObjectElement') i
 PASS typeof Object.getOwnPropertyDescriptor(window, 'SVGGElement') is 'object'
 PASS typeof Object.getOwnPropertyDescriptor(window, 'SVGGlyphElement') is 'object'
 PASS typeof Object.getOwnPropertyDescriptor(window, 'SVGGradientElement') is 'object'
+PASS typeof Object.getOwnPropertyDescriptor(window, 'SVGHKernElement') is 'object'
 PASS typeof Object.getOwnPropertyDescriptor(window, 'SVGImageElement') is 'object'
 PASS typeof Object.getOwnPropertyDescriptor(window, 'SVGLength') is 'object'
 PASS typeof Object.getOwnPropertyDescriptor(window, 'SVGLengthList') is 'object'
@@ -281,6 +282,7 @@ PASS typeof Object.getOwnPropertyDescriptor(window, 'SVGTransform') is 'object'
 PASS typeof Object.getOwnPropertyDescriptor(window, 'SVGTransformList') is 'object'
 PASS typeof Object.getOwnPropertyDescriptor(window, 'SVGUnitTypes') is 'object'
 PASS typeof Object.getOwnPropertyDescriptor(window, 'SVGUseElement') is 'object'
+PASS typeof Object.getOwnPropertyDescriptor(window, 'SVGVKernElement') is 'object'
 PASS typeof Object.getOwnPropertyDescriptor(window, 'SVGViewElement') is 'object'
 PASS typeof Object.getOwnPropertyDescriptor(window, 'SVGZoomEvent') is 'object'
 PASS typeof Object.getOwnPropertyDescriptor(window, 'SharedWorker') is 'object'
index 7425f98..b8a990f 100644 (file)
@@ -341,6 +341,7 @@ Never found SVGForeignObjectElement
 Never found SVGGElement
 Never found SVGGlyphElement
 Never found SVGGradientElement
+Never found SVGHKernElement
 Never found SVGImageElement
 Never found SVGLength
 Never found SVGLengthList
@@ -404,6 +405,7 @@ Never found SVGTransform
 Never found SVGTransformList
 Never found SVGUnitTypes
 Never found SVGUseElement
+Never found SVGVKernElement
 Never found SVGViewElement
 Never found SharedWorker
 Never found StyleSheet
index b44b9b2..5737c40 100644 (file)
@@ -407,6 +407,8 @@ PASS inner.SVGGlyphElement.isInner is true
 PASS inner.SVGGlyphElement.constructor.isInner is true
 PASS inner.SVGGradientElement.isInner is true
 PASS inner.SVGGradientElement.constructor.isInner is true
+PASS inner.SVGHKernElement.isInner is true
+PASS inner.SVGHKernElement.constructor.isInner is true
 PASS inner.SVGImageElement.isInner is true
 PASS inner.SVGImageElement.constructor.isInner is true
 PASS inner.SVGLength.isInner is true
@@ -535,6 +537,8 @@ PASS inner.SVGUnitTypes.isInner is true
 PASS inner.SVGUnitTypes.constructor.isInner is true
 PASS inner.SVGUseElement.isInner is true
 PASS inner.SVGUseElement.constructor.isInner is true
+PASS inner.SVGVKernElement.isInner is true
+PASS inner.SVGVKernElement.constructor.isInner is true
 PASS inner.SVGViewElement.isInner is true
 PASS inner.SVGViewElement.constructor.isInner is true
 PASS inner.SVGZoomEvent.isInner is true
index 4987c64..d32791c 100644 (file)
@@ -201,6 +201,7 @@ PASS SVGForeignObjectElement.toString() is '[object SVGForeignObjectElementConst
 PASS SVGGElement.toString() is '[object SVGGElementConstructor]'
 PASS SVGGlyphElement.toString() is '[object SVGGlyphElementConstructor]'
 PASS SVGGradientElement.toString() is '[object SVGGradientElementConstructor]'
+PASS SVGHKernElement.toString() is '[object SVGHKernElementConstructor]'
 PASS SVGImageElement.toString() is '[object SVGImageElementConstructor]'
 PASS SVGLength.toString() is '[object SVGLengthConstructor]'
 PASS SVGLengthList.toString() is '[object SVGLengthListConstructor]'
@@ -265,6 +266,7 @@ PASS SVGTransform.toString() is '[object SVGTransformConstructor]'
 PASS SVGTransformList.toString() is '[object SVGTransformListConstructor]'
 PASS SVGUnitTypes.toString() is '[object SVGUnitTypesConstructor]'
 PASS SVGUseElement.toString() is '[object SVGUseElementConstructor]'
+PASS SVGVKernElement.toString() is '[object SVGVKernElementConstructor]'
 PASS SVGViewElement.toString() is '[object SVGViewElementConstructor]'
 PASS SVGZoomEvent.toString() is '[object SVGZoomEventConstructor]'
 PASS SharedWorker.toString() is '[object SharedWorkerConstructor]'
diff --git a/LayoutTests/platform/mac/svg/text/text-vkern-expected.checksum b/LayoutTests/platform/mac/svg/text/text-vkern-expected.checksum
new file mode 100644 (file)
index 0000000..97f81a5
--- /dev/null
@@ -0,0 +1 @@
+cfa00b62ef3d935f5414e3cbab0a8814
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/svg/text/text-vkern-expected.png b/LayoutTests/platform/mac/svg/text/text-vkern-expected.png
new file mode 100644 (file)
index 0000000..6ed7222
Binary files /dev/null and b/LayoutTests/platform/mac/svg/text/text-vkern-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/text/text-vkern-expected.txt b/LayoutTests/platform/mac/svg/text/text-vkern-expected.txt
new file mode 100644 (file)
index 0000000..ff69775
--- /dev/null
@@ -0,0 +1,21 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderSVGRoot {svg} at (0,0) size 800x600
+    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
+      RenderPath {path} at (0,0) size 0x0 [fill={[type=SOLID] [color=#000000]}] [data="M2.50,90.00 L200.00,90.00"]
+    RenderSVGText {text} at (0,0) size 25x10 contains 1 chunk(s)
+      RenderSVGInlineText {#text} at (0,-8) size 25x10
+        chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 4 width 25.00: "1234"
+    RenderSVGContainer {g} at (10,90) size 70x116
+      RenderSVGText {text} at (-5,8) size 10x58 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,-8) size 10x58
+          chunk 1 (vertical) text run 1 at (-5.00,8.00) startOffset 0 endOffset 4 height 40.00: "1234"
+      RenderSVGText {text} at (-5,8) size 10x52 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (3,-8) size 4x10
+          chunk 1 (vertical) text run 1 at (-1.25,8.00) startOffset 0 endOffset 1 height 10.00: "1"
+        RenderSVGTSpan {tspan} at (0,0) size 8x26
+          RenderSVGInlineText {#text} at (1,2) size 8x26
+            chunk 1 (vertical) text run 2 at (-3.75,18.00) startOffset 0 endOffset 2 height 20.00: "23"
+        RenderSVGInlineText {#text} at (0,34) size 10x10
+          chunk 1 (vertical) text run 3 at (-5.00,50.00) startOffset 0 endOffset 1 height 10.00: "4"
index 2f883ca..8b0ef7a 100644 (file)
@@ -150,8 +150,8 @@ PASS SVGAnimateTransformElement.toString() is '[object SVGAnimateTransformElemen
 PASS SVGFontElement.toString() is '[object SVGFontElementConstructor]'
 PASS SVGGlyphElement.toString() is '[object SVGGlyphElementConstructor]'
 PASS SVGMissingGlyphElement.toString() is '[object SVGMissingGlyphElementConstructor]'
-FAIL SVGHKernElement.toString() should be [object SVGHKernElementConstructor]. Threw exception ReferenceError: Can't find variable: SVGHKernElement
-FAIL SVGVKernElement.toString() should be [object SVGVKernElementConstructor]. Threw exception ReferenceError: Can't find variable: SVGVKernElement
+PASS SVGHKernElement.toString() is '[object SVGHKernElementConstructor]'
+PASS SVGVKernElement.toString() is '[object SVGVKernElementConstructor]'
 PASS SVGFontFaceElement.toString() is '[object SVGFontFaceElementConstructor]'
 PASS SVGFontFaceSrcElement.toString() is '[object SVGFontFaceSrcElementConstructor]'
 PASS SVGFontFaceUriElement.toString() is '[object SVGFontFaceUriElementConstructor]'
diff --git a/LayoutTests/svg/text/text-vkern.svg b/LayoutTests/svg/text/text-vkern.svg
new file mode 100644 (file)
index 0000000..429e5f4
--- /dev/null
@@ -0,0 +1,20 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<font>
+    <font-face font-family="svgFont" units-per-em="1000"/>
+    <missing-glyph horiz-adv-x="800" d="M 0 0 L 750 0 L 750 1000 L 0 1000 Z"/>
+    <glyph unicode="1" glyph-name="gl_1" horiz-adv-x="250" d="M 0 0 L 250 0 L 250 250 L 0 250 Z"/>
+    <glyph unicode="2" glyph-name="gl_2" horiz-adv-x="500" d="M 0 0 L 500 0 L 500 500 L 0 500 Z"/>
+    <glyph unicode="3" glyph-name="gl_3" horiz-adv-x="750" d="M 0 0 L 750 0 L 750 750 L 0 750 Z"/>
+    <glyph unicode="4" glyph-name="gl_4" horiz-adv-x="1000" d="M 0 0 L 1000 0 L 1000 1000 L 0 1000 Z"/>
+    <vkern g1="gl_1,gl_2,gl_3" g2="gl_2,gl_3,gl_4" k="-600"/>
+</font>
+<path id="textPath" d="M2.5,90 L200,90"/>
+</defs>
+<text font-family="svgFont" font-size="10" transform="translate(5, 45) scale(2)">1234</text>
+<g writing-mode="tb" glyph-orientation-vertical="0">
+    <text font-family="svgFont" font-size="10" transform="translate(20, 90) scale(2)">1234</text>
+    <text font-family="svgFont" font-size="10" transform="translate(70, 90) scale(2)">1<tspan>23</tspan>4</text>
+</g>
+</svg>
+
index 786a90c..35c9e78 100644 (file)
@@ -488,6 +488,7 @@ GEN := \
     $(intermediates)/svg/JSSVGUnitTypes.h \
     $(intermediates)/svg/JSSVGUseElement.h \
     $(intermediates)/svg/JSSVGViewElement.h \
+    $(intermediates)/svg/JSSVGVKernElement.h \
     $(intermediates)/svg/JSSVGZoomEvent.h
 $(GEN): PRIVATE_PATH := $(LOCAL_PATH)
 $(GEN): PRIVATE_CUSTOM_TOOL = perl -I$(PRIVATE_PATH)/bindings/scripts $(PRIVATE_PATH)/bindings/scripts/generate-bindings.pl --defines "$(FEATURE_DEFINES) LANGUAGE_JAVASCRIPT" --generator JS --include external/webkit/WebCore/dom --include external/webkit/WebCore/html --include external/webkit/WebCore/svg --outputdir $(dir $@) $<
index be9f7a1..bc6435b 100644 (file)
@@ -457,6 +457,7 @@ GEN += \
     $(intermediates)/bindings/V8SVGUnitTypes.h \
     $(intermediates)/bindings/V8SVGUseElement.h \
     $(intermediates)/bindings/V8SVGViewElement.h \
+    $(intermediates)/bindings/V8SVGVKernElement.h \
     \
     $(intermediates)/bindings/V8SVGAnimatedAngle.h \
     $(intermediates)/bindings/V8SVGAnimatedEnumeration.h \
index 906953d..9bfb62a 100644 (file)
@@ -853,6 +853,7 @@ LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \
        svg/SVGUseElement.cpp \
        svg/SVGViewElement.cpp \
        svg/SVGViewSpec.cpp \
+       svg/SVGVKernElement.cpp \
        svg/SVGZoomAndPan.cpp \
        svg/SVGZoomEvent.cpp \
        \
index 8008cbf..0f3f243 100644 (file)
@@ -1,3 +1,60 @@
+2010-05-08  Dirk Schulze  <krit@webkit.org>
+
+        Reviewed by Nikolas Zimmermann.
+
+        SVGFont's VKern implementation missing
+        https://bugs.webkit.org/show_bug.cgi?id=38663
+
+        Implementation of vkern, needed by SVGFont. Also added DOM and JS bindings
+        for vkern and hkern. Made some clean-up in SVGParserUtilities and SVGFontElement.
+        SVGHKernElement and SVGVKernElement share most of the code now.
+
+        Test: svg/text/text-vkern.svg
+
+        * Android.derived.jscbindings.mk:
+        * Android.derived.v8bindings.mk:
+        * Android.mk:
+        * DerivedSources.make:
+        * GNUmakefile.am:
+        * WebCore.gyp/WebCore.gyp:
+        * WebCore.gypi:
+        * WebCore.pri:
+        * WebCore.pro:
+        * WebCore.vcproj/WebCore.vcproj:
+        * WebCore.xcodeproj/project.pbxproj:
+        * page/DOMWindow.idl:
+        * rendering/SVGRootInlineBox.cpp:
+        (WebCore::applySVGKerning):
+        (WebCore::SVGRootInlineBox::buildLayoutInformationForTextBox):
+        * svg/SVGAllInOne.cpp:
+        * svg/SVGFontElement.cpp:
+        (WebCore::SVGFontElement::invalidateGlyphCache):
+        (WebCore::SVGFontElement::ensureGlyphCache):
+        (WebCore::matches):
+        (WebCore::kerningForPairOfStringsAndGlyphs):
+        (WebCore::SVGFontElement::horizontalKerningForPairOfStringsAndGlyphs):
+        (WebCore::SVGFontElement::verticalKerningForPairOfStringsAndGlyphs):
+        * svg/SVGFontElement.h:
+        (WebCore::SVGKerningPair::SVGKerningPair):
+        (WebCore::SVGFontElement::rendererIsNeeded):
+        * svg/SVGHKernElement.cpp:
+        (WebCore::SVGHKernElement::buildHorizontalKerningPair):
+        * svg/SVGHKernElement.h:
+        * svg/SVGParserUtilities.cpp:
+        (WebCore::parseGlyphName):
+        (WebCore::parseKerningUnicodeString):
+        * svg/SVGParserUtilities.h:
+        * svg/SVGVKernElement.cpp: Added.
+        (WebCore::SVGVKernElement::SVGVKernElement):
+        (WebCore::SVGVKernElement::~SVGVKernElement):
+        (WebCore::SVGVKernElement::insertedIntoDocument):
+        (WebCore::SVGVKernElement::removedFromDocument):
+        (WebCore::SVGVKernElement::buildVerticalKerningPair):
+        * svg/SVGVKernElement.h: Added.
+        (WebCore::SVGVKernElement::rendererIsNeeded):
+        * svg/SVGVKernElement.idl: Added.
+        * svg/svgtags.in:
+
 2010-05-08  Jer Noble  <jer.noble@apple.com>
 
         Unreviewed, just fixing windows build.
index 9a63c2d..788929b 100644 (file)
@@ -402,6 +402,7 @@ DOM_CLASSES = \
     SVGUnitTypes \
     SVGUseElement \
     SVGViewElement \
+    SVGVKernElement \
     SVGZoomAndPan \
     SVGZoomEvent \
     Screen \
index 542a882..ea7a01b 100644 (file)
@@ -3090,6 +3090,7 @@ IDL_BINDINGS += \
        WebCore/svg/SVGUseElement.idl \
        WebCore/svg/SVGViewElement.idl \
        WebCore/svg/SVGViewSpec.idl \
+       WebCore/svg/SVGVKernElement.idl \
        WebCore/svg/SVGZoomAndPan.idl \
        WebCore/svg/SVGZoomEvent.idl
 
@@ -3460,6 +3461,8 @@ webcore_sources += \
        WebCore/svg/SVGUseElement.h \
        WebCore/svg/SVGViewElement.cpp \
        WebCore/svg/SVGViewElement.h \
+       WebCore/svg/SVGVKernElement.cpp \
+       WebCore/svg/SVGVKernElement.h \
        WebCore/svg/SVGViewSpec.cpp \
        WebCore/svg/SVGViewSpec.h \
        WebCore/svg/SVGZoomAndPan.cpp \
index e9ab1d7..adf6d94 100644 (file)
       '../svg/SVGFilterPrimitiveStandardAttributes.idl',
       '../svg/SVGFitToViewBox.idl',
 
-      '../svg/SVGHKernElement.idl',
       '../svg/SVGLangSpace.idl',
       '../svg/SVGLocatable.idl',
       '../svg/SVGStylable.idl',
index 4c3a35d..93fd4c2 100644 (file)
             'svg/SVGUseElement.idl',
             'svg/SVGViewElement.idl',
             'svg/SVGViewSpec.idl',
+            'svg/SVGVKernElement.idl',
             'svg/SVGZoomAndPan.idl',
             'svg/SVGZoomEvent.idl',
         ],
             'svg/SVGViewElement.h',
             'svg/SVGViewSpec.cpp',
             'svg/SVGViewSpec.h',
+            'svg/SVGVKernElement.cpp',
+            'svg/SVGVKernElement.h',
             'svg/SVGZoomAndPan.cpp',
             'svg/SVGZoomAndPan.h',
             'svg/SVGZoomEvent.cpp',
index d614ba4..46c9154 100644 (file)
@@ -583,6 +583,7 @@ IDL_BINDINGS += \
     svg/SVGUnitTypes.idl \
     svg/SVGUseElement.idl \
     svg/SVGViewElement.idl \
+    svg/SVGVKernElement.idl \
     websockets/WebSocket.idl \
     workers/AbstractWorker.idl \
     workers/DedicatedWorkerContext.idl \
index 46f39ab..2e3fa25 100644 (file)
@@ -1962,6 +1962,7 @@ HEADERS += \
     svg/SVGUseElement.h \
     svg/SVGViewElement.h \
     svg/SVGViewSpec.h \
+    svg/SVGVKernElement.h \
     svg/SVGZoomAndPan.h \
     svg/SVGZoomEvent.h \
     wml/WMLAccessElement.h \
@@ -2699,6 +2700,7 @@ contains(DEFINES, ENABLE_SVG=1) {
         svg/SVGUseElement.cpp \
         svg/SVGViewElement.cpp \
         svg/SVGViewSpec.cpp \
+        svg/SVGVKernElement.cpp \
         svg/SVGZoomAndPan.cpp \
         svg/animation/SMILTime.cpp \
         svg/animation/SMILTimeContainer.cpp \
index 4734a35..ce72ead 100644 (file)
                                        Name="Release_Cairo|Win32"\r
                                        ExcludedFromBuild="true"\r
                                        >\r
+\r
                                        <Tool\r
                                                Name="VCCLCompilerTool"\r
                                        />\r
                        <File\r
                                RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSSVGPathSegLinetoVerticalRel.h"\r
                                >\r
+\r
                        </File>\r
                        <File\r
                                RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSSVGPathSegList.cpp"\r
                                        <Tool\r
                                                Name="VCCLCompilerTool"\r
                                        />\r
+\r
                                </FileConfiguration>\r
                                <FileConfiguration\r
                                        Name="Debug_Internal|Win32"\r
                        </File>\r
                        <File\r
                                RelativePath="..\loader\DocumentThreadableLoader.h"\r
+\r
                                >\r
                        </File>\r
                        <File\r
                                </File>\r
                                <File\r
                                        RelativePath="..\platform\graphics\Color.h"\r
+\r
                                        >\r
                                </File>\r
                                <File\r
                        <File\r
                                RelativePath="..\rendering\RenderTableCol.h"\r
                                >\r
+\r
                        </File>\r
                        <File\r
                                RelativePath="..\rendering\RenderTableRow.cpp"\r
                                                />\r
                                        </FileConfiguration>\r
                                        <FileConfiguration\r
+\r
                                                Name="Debug_Cairo|Win32"\r
                                                ExcludedFromBuild="true"\r
                                                >\r
                                                <Tool\r
                                                        Name="VCCLCompilerTool"\r
                                                />\r
+\r
                                        </FileConfiguration>\r
                                        <FileConfiguration\r
                                                Name="Debug_Internal|Win32"\r
                                >\r
                        </File>\r
                        <File\r
+                               RelativePath="..\svg\SVGVKernElement.cpp"\r
+                               >\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32"\r
+                                       ExcludedFromBuild="true"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                       />\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32"\r
+                                       ExcludedFromBuild="true"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                       />\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Debug_Internal|Win32"\r
+                                       ExcludedFromBuild="true"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+\r
+                                       />\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Debug_Cairo|Win32"\r
+                                       ExcludedFromBuild="true"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                       />\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release_Cairo|Win32"\r
+                                       ExcludedFromBuild="true"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                       />\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Debug_All|Win32"\r
+                                       ExcludedFromBuild="true"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                       />\r
+                               </FileConfiguration>\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\svg\SVGVKernElement.h"\r
+                               >\r
+                       </File>\r
+                       <File\r
                                RelativePath="..\svg\SVGZoomAndPan.h"\r
                                >\r
                        </File>\r
index 1b3eb6a..279ae6e 100644 (file)
                845E72FC0FD2623900A87D79 /* SVGFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 845E72FA0FD2623900A87D79 /* SVGFilter.h */; };
                84801954108BAFB300CB2B1F /* FEGaussianBlur.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84801952108BAFB300CB2B1F /* FEGaussianBlur.cpp */; };
                84801955108BAFB300CB2B1F /* FEGaussianBlur.h in Headers */ = {isa = PBXBuildFile; fileRef = 84801953108BAFB300CB2B1F /* FEGaussianBlur.h */; };
+               8485227B1190162C006EDC7F /* JSSVGHKernElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 848522771190162C006EDC7F /* JSSVGHKernElement.cpp */; };
+               8485227C1190162C006EDC7F /* JSSVGHKernElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 848522781190162C006EDC7F /* JSSVGHKernElement.h */; };
+               8485227D1190162C006EDC7F /* JSSVGVKernElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 848522791190162C006EDC7F /* JSSVGVKernElement.cpp */; };
+               8485227E1190162C006EDC7F /* JSSVGVKernElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8485227A1190162C006EDC7F /* JSSVGVKernElement.h */; };
+               84852283119016A7006EDC7F /* DOMSVGHKernElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8485227F119016A7006EDC7F /* DOMSVGHKernElement.h */; };
+               84852284119016A7006EDC7F /* DOMSVGHKernElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 84852280119016A7006EDC7F /* DOMSVGHKernElement.mm */; };
+               84852285119016A7006EDC7F /* DOMSVGVKernElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 84852281119016A7006EDC7F /* DOMSVGVKernElement.h */; };
+               84852286119016A7006EDC7F /* DOMSVGVKernElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 84852282119016A7006EDC7F /* DOMSVGVKernElement.mm */; };
+               8485228A1190173C006EDC7F /* SVGVKernElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 848522871190173C006EDC7F /* SVGVKernElement.cpp */; };
+               8485228B1190173C006EDC7F /* SVGVKernElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 848522881190173C006EDC7F /* SVGVKernElement.h */; };
                8499A514115FB33000F566E3 /* RenderSVGResourceMarker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8499A512115FB33000F566E3 /* RenderSVGResourceMarker.cpp */; };
                8499A515115FB33000F566E3 /* RenderSVGResourceMarker.h in Headers */ = {isa = PBXBuildFile; fileRef = 8499A513115FB33000F566E3 /* RenderSVGResourceMarker.h */; };
                849F77760EFEC6200090849D /* StrokeStyleApplier.h in Headers */ = {isa = PBXBuildFile; fileRef = 849F77750EFEC6200090849D /* StrokeStyleApplier.h */; };
                845E72FA0FD2623900A87D79 /* SVGFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGFilter.h; sourceTree = "<group>"; };
                84801952108BAFB300CB2B1F /* FEGaussianBlur.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FEGaussianBlur.cpp; path = filters/FEGaussianBlur.cpp; sourceTree = "<group>"; };
                84801953108BAFB300CB2B1F /* FEGaussianBlur.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FEGaussianBlur.h; path = filters/FEGaussianBlur.h; sourceTree = "<group>"; };
+               848522771190162C006EDC7F /* JSSVGHKernElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGHKernElement.cpp; sourceTree = "<group>"; };
+               848522781190162C006EDC7F /* JSSVGHKernElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSVGHKernElement.h; sourceTree = "<group>"; };
+               848522791190162C006EDC7F /* JSSVGVKernElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGVKernElement.cpp; sourceTree = "<group>"; };
+               8485227A1190162C006EDC7F /* JSSVGVKernElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSVGVKernElement.h; sourceTree = "<group>"; };
+               8485227F119016A7006EDC7F /* DOMSVGHKernElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMSVGHKernElement.h; sourceTree = "<group>"; };
+               84852280119016A7006EDC7F /* DOMSVGHKernElement.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMSVGHKernElement.mm; sourceTree = "<group>"; };
+               84852281119016A7006EDC7F /* DOMSVGVKernElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMSVGVKernElement.h; sourceTree = "<group>"; };
+               84852282119016A7006EDC7F /* DOMSVGVKernElement.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMSVGVKernElement.mm; sourceTree = "<group>"; };
+               848522871190173C006EDC7F /* SVGVKernElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGVKernElement.cpp; sourceTree = "<group>"; };
+               848522881190173C006EDC7F /* SVGVKernElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGVKernElement.h; sourceTree = "<group>"; };
+               848522891190173C006EDC7F /* SVGVKernElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = SVGVKernElement.idl; sourceTree = "<group>"; };
                8499A512115FB33000F566E3 /* RenderSVGResourceMarker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGResourceMarker.cpp; sourceTree = "<group>"; };
                8499A513115FB33000F566E3 /* RenderSVGResourceMarker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGResourceMarker.h; sourceTree = "<group>"; };
                849F77750EFEC6200090849D /* StrokeStyleApplier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StrokeStyleApplier.h; sourceTree = "<group>"; };
                                85C9A2EC0AD7E90300FBFF1E /* DOMSVGGradientElement.h */,
                                85C9A2ED0AD7E90300FBFF1E /* DOMSVGGradientElement.mm */,
                                A8E5444B0CA9D1C10097D09B /* DOMSVGGradientElementInternal.h */,
+                               8485227F119016A7006EDC7F /* DOMSVGHKernElement.h */,
+                               84852280119016A7006EDC7F /* DOMSVGHKernElement.mm */,
                                85C9A2EE0AD7E90300FBFF1E /* DOMSVGImageElement.h */,
                                85C9A2EF0AD7E90300FBFF1E /* DOMSVGImageElement.mm */,
                                A8E544470CA9D1C10097D09B /* DOMSVGImageElementInternal.h */,
                                859D62970AD888EF00012995 /* DOMSVGViewElement.h */,
                                859D62980AD888EF00012995 /* DOMSVGViewElement.mm */,
                                A8E543C90CA9D1C10097D09B /* DOMSVGViewElementInternal.h */,
+                               84852281119016A7006EDC7F /* DOMSVGVKernElement.h */,
+                               84852282119016A7006EDC7F /* DOMSVGVKernElement.mm */,
                                859D62990AD888EF00012995 /* DOMSVGZoomAndPan.h */,
                                A8E543C70CA9D1C10097D09B /* DOMSVGZoomEvent.h */,
                                859D629A0AD888EF00012995 /* DOMSVGZoomEvent.h */,
                                B27B28220CEF0C0700D39D54 /* JSSVGGlyphElement.h */,
                                B2FA3CB40AB75A6E000E5AC4 /* JSSVGGradientElement.cpp */,
                                B2FA3CB50AB75A6E000E5AC4 /* JSSVGGradientElement.h */,
+                               848522771190162C006EDC7F /* JSSVGHKernElement.cpp */,
+                               848522781190162C006EDC7F /* JSSVGHKernElement.h */,
                                B2FA3CB60AB75A6E000E5AC4 /* JSSVGImageElement.cpp */,
                                B2FA3CB70AB75A6E000E5AC4 /* JSSVGImageElement.h */,
                                B2FA3CB80AB75A6E000E5AC4 /* JSSVGLength.cpp */,
                                B2FA3D2D0AB75A6F000E5AC4 /* JSSVGUseElement.h */,
                                B2FA3D2E0AB75A6F000E5AC4 /* JSSVGViewElement.cpp */,
                                B2FA3D2F0AB75A6F000E5AC4 /* JSSVGViewElement.h */,
+                               848522791190162C006EDC7F /* JSSVGVKernElement.cpp */,
+                               8485227A1190162C006EDC7F /* JSSVGVKernElement.h */,
                                B2FA3D300AB75A6F000E5AC4 /* JSSVGZoomEvent.cpp */,
                                B2FA3D310AB75A6F000E5AC4 /* JSSVGZoomEvent.h */,
                        );
                                B222795C0D00BF210071B782 /* SVGViewSpec.cpp */,
                                B222795D0D00BF210071B782 /* SVGViewSpec.h */,
                                B222795E0D00BF210071B782 /* SVGViewSpec.idl */,
+                               848522871190173C006EDC7F /* SVGVKernElement.cpp */,
+                               848522881190173C006EDC7F /* SVGVKernElement.h */,
+                               848522891190173C006EDC7F /* SVGVKernElement.idl */,
                                B222795F0D00BF210071B782 /* SVGZoomAndPan.cpp */,
                                B22279600D00BF210071B782 /* SVGZoomAndPan.h */,
                                B22279610D00BF210071B782 /* SVGZoomAndPan.idl */,
                                85C9A2F70AD7E90300FBFF1E /* DOMSVGGradientElement.h in Headers */,
                                85C9A31C0AD7E9A400FBFF1E /* DOMSVGGradientElementInternal.h in Headers */,
                                A8E545490CA9D1C20097D09B /* DOMSVGGradientElementInternal.h in Headers */,
+                               84852283119016A7006EDC7F /* DOMSVGHKernElement.h in Headers */,
                                85C9A2F90AD7E90300FBFF1E /* DOMSVGImageElement.h in Headers */,
                                85C9A31D0AD7E9A400FBFF1E /* DOMSVGImageElementInternal.h in Headers */,
                                A8E545450CA9D1C20097D09B /* DOMSVGImageElementInternal.h in Headers */,
                                859D62C20AD888EF00012995 /* DOMSVGViewElement.h in Headers */,
                                859D62EF0AD8892700012995 /* DOMSVGViewElementInternal.h in Headers */,
                                A8E544C70CA9D1C20097D09B /* DOMSVGViewElementInternal.h in Headers */,
+                               84852285119016A7006EDC7F /* DOMSVGVKernElement.h in Headers */,
                                859D62C40AD888EF00012995 /* DOMSVGZoomAndPan.h in Headers */,
                                859D62C50AD888EF00012995 /* DOMSVGZoomEvent.h in Headers */,
                                A8E544C50CA9D1C20097D09B /* DOMSVGZoomEvent.h in Headers */,
                                B2FA3D9B0AB75A6F000E5AC4 /* JSSVGGElement.h in Headers */,
                                B27B28280CEF0C0700D39D54 /* JSSVGGlyphElement.h in Headers */,
                                B2FA3D9D0AB75A6F000E5AC4 /* JSSVGGradientElement.h in Headers */,
+                               8485227C1190162C006EDC7F /* JSSVGHKernElement.h in Headers */,
                                B2FA3D9F0AB75A6F000E5AC4 /* JSSVGImageElement.h in Headers */,
                                B2FA3DA10AB75A6F000E5AC4 /* JSSVGLength.h in Headers */,
                                B2FA3DA30AB75A6F000E5AC4 /* JSSVGLengthList.h in Headers */,
                                B2FA3E130AB75A6F000E5AC4 /* JSSVGUnitTypes.h in Headers */,
                                B2FA3E150AB75A6F000E5AC4 /* JSSVGUseElement.h in Headers */,
                                B2FA3E170AB75A6F000E5AC4 /* JSSVGViewElement.h in Headers */,
+                               8485227E1190162C006EDC7F /* JSSVGVKernElement.h in Headers */,
                                B2FA3E190AB75A6F000E5AC4 /* JSSVGZoomEvent.h in Headers */,
                                65DF320409D1CC60000BE325 /* JSText.h in Headers */,
                                933A14B90B7D1D5200A53FFD /* JSTextEvent.h in Headers */,
                                B2227AED0D00BF220071B782 /* SVGUseElement.h in Headers */,
                                B2227AF00D00BF220071B782 /* SVGViewElement.h in Headers */,
                                B2227AF30D00BF220071B782 /* SVGViewSpec.h in Headers */,
+                               8485228B1190173C006EDC7F /* SVGVKernElement.h in Headers */,
                                B2227AF60D00BF220071B782 /* SVGZoomAndPan.h in Headers */,
                                B2E4EC980D00C22B00432643 /* SVGZoomEvent.h in Headers */,
                                93E62D9B0985F41600E1B5E3 /* SystemTime.h in Headers */,
                                85C9A2F60AD7E90300FBFF1E /* DOMSVGGElement.mm in Sources */,
                                B27B283C0CEF0C3600D39D54 /* DOMSVGGlyphElement.mm in Sources */,
                                85C9A2F80AD7E90300FBFF1E /* DOMSVGGradientElement.mm in Sources */,
+                               84852284119016A7006EDC7F /* DOMSVGHKernElement.mm in Sources */,
                                85C9A2FA0AD7E90300FBFF1E /* DOMSVGImageElement.mm in Sources */,
                                854163760AC7180B0001E01B /* DOMSVGLength.mm in Sources */,
                                854163740AC7180B0001E01B /* DOMSVGLengthList.mm in Sources */,
                                859D62BF0AD888EF00012995 /* DOMSVGUnitTypes.mm in Sources */,
                                859D62C10AD888EF00012995 /* DOMSVGUseElement.mm in Sources */,
                                859D62C30AD888EF00012995 /* DOMSVGViewElement.mm in Sources */,
+                               84852286119016A7006EDC7F /* DOMSVGVKernElement.mm in Sources */,
                                859D62C60AD888EF00012995 /* DOMSVGZoomEvent.mm in Sources */,
                                85ACA99D0A9B575900671E90 /* DOMText.mm in Sources */,
                                933A14AA0B7D1D0900A53FFD /* DOMTextEvent.mm in Sources */,
                                B2FA3D9A0AB75A6F000E5AC4 /* JSSVGGElement.cpp in Sources */,
                                B27B28270CEF0C0700D39D54 /* JSSVGGlyphElement.cpp in Sources */,
                                B2FA3D9C0AB75A6F000E5AC4 /* JSSVGGradientElement.cpp in Sources */,
+                               8485227B1190162C006EDC7F /* JSSVGHKernElement.cpp in Sources */,
                                B2FA3D9E0AB75A6F000E5AC4 /* JSSVGImageElement.cpp in Sources */,
                                B2FA3DA00AB75A6F000E5AC4 /* JSSVGLength.cpp in Sources */,
                                08E4FE460E2BD41400F4CAE0 /* JSSVGLengthCustom.cpp in Sources */,
                                B2FA3E120AB75A6F000E5AC4 /* JSSVGUnitTypes.cpp in Sources */,
                                B2FA3E140AB75A6F000E5AC4 /* JSSVGUseElement.cpp in Sources */,
                                B2FA3E160AB75A6F000E5AC4 /* JSSVGViewElement.cpp in Sources */,
+                               8485227D1190162C006EDC7F /* JSSVGVKernElement.cpp in Sources */,
                                B2FA3E180AB75A6F000E5AC4 /* JSSVGZoomEvent.cpp in Sources */,
                                65DF320309D1CC60000BE325 /* JSText.cpp in Sources */,
                                1A2C40AB0DEB55AA005AF19E /* JSTextCustom.cpp in Sources */,
                                B2227AEC0D00BF220071B782 /* SVGUseElement.cpp in Sources */,
                                B2227AEF0D00BF220071B782 /* SVGViewElement.cpp in Sources */,
                                B2227AF20D00BF220071B782 /* SVGViewSpec.cpp in Sources */,
+                               8485228A1190173C006EDC7F /* SVGVKernElement.cpp in Sources */,
                                B2227AF50D00BF220071B782 /* SVGZoomAndPan.cpp in Sources */,
                                B2E4EC970D00C22B00432643 /* SVGZoomEvent.cpp in Sources */,
                                6582A16309999D6D00BEEB6D /* SystemTimeMac.cpp in Sources */,
index 59755aa..6ab8f97 100644 (file)
@@ -672,9 +672,9 @@ module window {
         attribute SVGFontFaceUriElementConstructor SVGFontFaceUriElement;
         attribute SVGGlyphElementConstructor SVGGlyphElement;
 //      attribute SVGGlyphRefElementConstructor SVGGlyphRefElement;
-//      attribute SVGHKernElementConstructor SVGHKernElement;
+        attribute SVGHKernElementConstructor SVGHKernElement;
         attribute SVGMissingGlyphElementConstructor SVGMissingGlyphElement;
-//      attribute SVGVKernElementConstructor SVGVKernElement;
+        attribute SVGVKernElementConstructor SVGVKernElement;
 #endif
 
 #if defined(ENABLE_SVG_FOREIGN_OBJECT) && ENABLE_SVG_FOREIGN_OBJECT
index 6c99b1a..83fabae 100644 (file)
@@ -336,28 +336,35 @@ static float calculateCSSKerning(RenderObject* item)
     return kerning;
 }
 
-static bool applySVGKerning(SVGCharacterLayoutInfo& info, RenderObject* item, LastGlyphInfo& lastGlyph, const String& unicodeString, const String& glyphName)
+static bool applySVGKerning(SVGCharacterLayoutInfo& info, RenderObject* item, LastGlyphInfo& lastGlyph, const String& unicodeString, const String& glyphName, bool isVerticalText)
 {
 #if ENABLE(SVG_FONTS)
-    float kerning = 0.0f;
+    float horizontalKerning = 0.0f;
+    float verticalKerning = 0.0f;
     const RenderStyle* style = item->style();
     SVGFontElement* svgFont = 0;
     if (style->font().isSVGFont())
         svgFont = style->font().svgFont();
 
-    if (lastGlyph.isValid && style->font().isSVGFont())
-        kerning = svgFont->getHorizontalKerningPairForStringsAndGlyphs(lastGlyph.unicode, lastGlyph.glyphName, unicodeString, glyphName);
-
     if (style->font().isSVGFont()) {
+        if (lastGlyph.isValid) {
+            horizontalKerning = svgFont->horizontalKerningForPairOfStringsAndGlyphs(lastGlyph.unicode, lastGlyph.glyphName, unicodeString, glyphName);
+            if (isVerticalText)
+                verticalKerning = svgFont->verticalKerningForPairOfStringsAndGlyphs(lastGlyph.unicode, lastGlyph.glyphName, unicodeString, glyphName);
+        }
+
         lastGlyph.unicode = unicodeString;
         lastGlyph.glyphName = glyphName;
         lastGlyph.isValid = true;
-        kerning *= style->font().size() / style->font().primaryFont()->unitsPerEm();
+        float scaleToFontSpace = style->font().size() / style->font().primaryFont()->unitsPerEm();
+        horizontalKerning *= scaleToFontSpace;
+        verticalKerning *= scaleToFontSpace;
     } else
         lastGlyph.isValid = false;
 
-    if (kerning != 0.0f) {
-        info.curx -= kerning;
+    if (horizontalKerning != 0.0f || verticalKerning != 0.0f) {
+        info.curx -= horizontalKerning;
+        info.cury -= verticalKerning;
         return true;
     }
 #else
@@ -1342,7 +1349,7 @@ void SVGRootInlineBox::buildLayoutInformationForTextBox(SVGCharacterLayoutInfo&
         }
 
         // FIXME: SVG Kerning doesn't get applied on texts on path.
-        bool appliedSVGKerning = applySVGKerning(info, textBox->renderer()->node()->renderer(), lastGlyph, unicodeStr, glyphName);
+        bool appliedSVGKerning = applySVGKerning(info, textBox->renderer()->node()->renderer(), lastGlyph, unicodeStr, glyphName, isVerticalText);
         if (info.nextDrawnSeperated || spacing != 0.0f || appliedSVGKerning) {
             info.nextDrawnSeperated = false;
             svgChar.drawnSeperated = true;
index 067adf2..e9008dc 100644 (file)
 #include "SVGTransformList.cpp"
 #include "SVGURIReference.cpp"
 #include "SVGUseElement.cpp"
+#include "SVGVKernElement.cpp"
 #include "SVGViewElement.cpp"
 #include "SVGViewSpec.cpp"
 #include "SVGZoomAndPan.cpp"
index a573350..b9e8c0e 100644 (file)
@@ -1,6 +1,7 @@
 /*
     Copyright (C) 2007 Eric Seidel <eric@webkit.org>
     Copyright (C) 2007 Nikolas Zimmermann <zimmermann@kde.org>
+    Copyright (C) Research In Motion Limited 2010. All rights reserved.
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
 #include "Font.h"
 #include "GlyphPageTreeNode.h"
 #include "SVGGlyphElement.h"
+#include "SVGHKernElement.h"
 #include "SVGMissingGlyphElement.h"
 #include "SVGNames.h"
-#include "SVGParserUtilities.h"
+#include "SVGVKernElement.h"
 #include <wtf/ASCIICType.h>
 
 using namespace WTF;
@@ -60,7 +62,8 @@ void SVGFontElement::invalidateGlyphCache()
 {
     if (m_isGlyphCacheValid) {
         m_glyphMap.clear();
-        m_kerningPairs.clear();
+        m_horizontalKerningPairs.clear();
+        m_verticalKerningPairs.clear();
     }
     m_isGlyphCacheValid = false;
 }
@@ -88,8 +91,10 @@ void SVGFontElement::ensureGlyphCache() const
                 m_glyphMap.add(unicode, glyph->buildGlyphIdentifier());
         } else if (child->hasTagName(hkernTag)) {
             SVGHKernElement* hkern = static_cast<SVGHKernElement*>(child);
-            SVGHorizontalKerningPair kerningPair = hkern->buildHorizontalKerningPair();
-            m_kerningPairs.append(kerningPair);
+            hkern->buildHorizontalKerningPair(m_horizontalKerningPairs);
+        } else if (child->hasTagName(vkernTag)) {
+            SVGVKernElement* vkern = static_cast<SVGVKernElement*>(child);
+            vkern->buildVerticalKerningPair(m_verticalKerningPairs);
         }
     }
         
@@ -127,7 +132,7 @@ static bool stringMatchesGlyphName(const String& glyphName, const HashSet<String
     return false;
 }
     
-static bool matches(const String& u1, const String& g1, const String& u2, const String& g2, const SVGHorizontalKerningPair& kerningPair)
+static bool matches(const String& u1, const String& g1, const String& u2, const String& g2, const SVGKerningPair& kerningPair)
 {
     if (!stringMatchesUnicodeRange(u1, kerningPair.unicodeRange1, kerningPair.unicodeName1)
         && !stringMatchesGlyphName(g1, kerningPair.glyphName1))
@@ -139,14 +144,11 @@ static bool matches(const String& u1, const String& g1, const String& u2, const
 
     return true;
 }
-    
-float SVGFontElement::getHorizontalKerningPairForStringsAndGlyphs(const String& u1, const String& g1, const String& u2, const String& g2) const
-{
-    if (m_kerningPairs.isEmpty())
-        return 0.0f;
 
-    KerningPairVector::const_iterator it = m_kerningPairs.end() - 1;
-    const KerningPairVector::const_iterator begin = m_kerningPairs.begin() - 1;
+static float kerningForPairOfStringsAndGlyphs(KerningPairVector& kerningPairs, const String& u1, const String& g1, const String& u2, const String& g2)
+{
+    KerningPairVector::const_iterator it = kerningPairs.end() - 1;
+    const KerningPairVector::const_iterator begin = kerningPairs.begin() - 1;
     for (; it != begin; --it) {
         if (matches(u1, g1, u2, g2, *it))
             return it->kerning;
@@ -154,6 +156,22 @@ float SVGFontElement::getHorizontalKerningPairForStringsAndGlyphs(const String&
 
     return 0.0f;
 }
+    
+float SVGFontElement::horizontalKerningForPairOfStringsAndGlyphs(const String& u1, const String& g1, const String& u2, const String& g2) const
+{
+    if (m_horizontalKerningPairs.isEmpty())
+        return 0.0f;
+
+    return kerningForPairOfStringsAndGlyphs(m_horizontalKerningPairs, u1, g1, u2, g2);
+}
+
+float SVGFontElement::verticalKerningForPairOfStringsAndGlyphs(const String& u1, const String& g1, const String& u2, const String& g2) const
+{
+    if (m_verticalKerningPairs.isEmpty())
+        return 0.0f;
+
+    return kerningForPairOfStringsAndGlyphs(m_verticalKerningPairs, u1, g1, u2, g2);
+}
 
 void SVGFontElement::getGlyphIdentifiersForString(const String& string, Vector<SVGGlyphIdentifier>& glyphs) const
 {
index 31d83c4..068f55c 100644 (file)
@@ -1,6 +1,7 @@
 /*
    Copyright (C) 2007 Eric Seidel <eric@webkit.org>
    Copyright (C) 2007 Nikolas Zimmermann <zimmermann@kde.org>
+   Copyright (C) Research In Motion Limited 2010. All rights reserved.
 
    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Library General Public
 #include "SVGExternalResourcesRequired.h"
 #include "SVGGlyphElement.h"
 #include "SVGGlyphMap.h"
-#include "SVGHKernElement.h"
+#include "SVGParserUtilities.h"
 #include "SVGStyledElement.h"
 
 namespace WebCore {
 
-    class SVGMissingGlyphElement;    
-    class SVGFontElement : public SVGStyledElement
-                         , public SVGExternalResourcesRequired {
-    public:
-        SVGFontElement(const QualifiedName&, Document*);
-        virtual ~SVGFontElement();
-
-        virtual void synchronizeProperty(const QualifiedName&);
-        virtual bool rendererIsNeeded(RenderStyle*) { return false; }    
-
-        void invalidateGlyphCache();
-
-        void getGlyphIdentifiersForString(const String&, Vector<SVGGlyphIdentifier>&) const;
-
-        float getHorizontalKerningPairForStringsAndGlyphs(const String& u1, const String& g1, const String& u2, const String& g2) const;
-
-        SVGMissingGlyphElement* firstMissingGlyphElement() const;
-
-    private:
-        // SVGExternalResourcesRequired
-        DECLARE_ANIMATED_PROPERTY(SVGFontElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
-
-        void ensureGlyphCache() const;
-
-        typedef Vector<SVGHorizontalKerningPair> KerningPairVector;
-
-        mutable KerningPairVector m_kerningPairs;
-        mutable SVGGlyphMap m_glyphMap;
-        mutable bool m_isGlyphCacheValid;
-    };
+// Describe an SVG <hkern>/<vkern> element
+struct SVGKerningPair {
+    float kerning;
+    UnicodeRanges unicodeRange1;
+    UnicodeRanges unicodeRange2;
+    HashSet<String> unicodeName1;
+    HashSet<String> unicodeName2;
+    HashSet<String> glyphName1;
+    HashSet<String> glyphName2;
+    
+    SVGKerningPair()
+        : kerning(0.0f)
+    {
+    }
+};
+
+typedef Vector<SVGKerningPair> KerningPairVector;
+
+class SVGMissingGlyphElement;    
+class SVGFontElement : public SVGStyledElement
+                     , public SVGExternalResourcesRequired {
+public:
+    SVGFontElement(const QualifiedName&, Document*);
+    virtual ~SVGFontElement();
+
+    virtual void synchronizeProperty(const QualifiedName&);
+    virtual bool rendererIsNeeded(RenderStyle*) { return false; }    
+
+    void invalidateGlyphCache();
+
+    void getGlyphIdentifiersForString(const String&, Vector<SVGGlyphIdentifier>&) const;
+
+    float horizontalKerningForPairOfStringsAndGlyphs(const String& u1, const String& g1, const String& u2, const String& g2) const;
+    float verticalKerningForPairOfStringsAndGlyphs(const String& u1, const String& g1, const String& u2, const String& g2) const;
+    
+    SVGMissingGlyphElement* firstMissingGlyphElement() const;
+
+private:
+    // SVGExternalResourcesRequired
+    DECLARE_ANIMATED_PROPERTY(SVGFontElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
+
+    void ensureGlyphCache() const;
+
+    mutable KerningPairVector m_horizontalKerningPairs;
+    mutable KerningPairVector m_verticalKerningPairs;
+    mutable SVGGlyphMap m_glyphMap;
+    mutable bool m_isGlyphCacheValid;
+};
 
 } // namespace WebCore
 
index 1b8746b..491bd77 100644 (file)
@@ -62,18 +62,23 @@ void SVGHKernElement::removedFromDocument()
     }
 }
 
-SVGHorizontalKerningPair SVGHKernElement::buildHorizontalKerningPair() const
+void SVGHKernElement::buildHorizontalKerningPair(KerningPairVector& kerningPairs)
 {
-    SVGHorizontalKerningPair kerningPair;
-
-    // FIXME: KerningPairs shouldn't be created on parsing errors.
-    parseGlyphName(getAttribute(g1Attr), kerningPair.glyphName1);
-    parseGlyphName(getAttribute(g2Attr), kerningPair.glyphName2);
-    parseKerningUnicodeString(getAttribute(u1Attr), kerningPair.unicodeRange1, kerningPair.unicodeName1);
-    parseKerningUnicodeString(getAttribute(u2Attr), kerningPair.unicodeRange2, kerningPair.unicodeName2);
-    kerningPair.kerning = getAttribute(kAttr).string().toFloat();
-
-    return kerningPair;
+    String u1 = getAttribute(u1Attr);
+    String g1 = getAttribute(g1Attr);
+    String u2 = getAttribute(u2Attr);
+    String g2 = getAttribute(g2Attr);
+    if ((u1.isEmpty() && g1.isEmpty()) || (u2.isEmpty() && g2.isEmpty()))
+        return;
+
+    SVGKerningPair kerningPair;
+    if (parseGlyphName(g1, kerningPair.glyphName1)
+        && parseGlyphName(g2, kerningPair.glyphName2)
+        && parseKerningUnicodeString(u1, kerningPair.unicodeRange1, kerningPair.unicodeName1)
+        && parseKerningUnicodeString(u2, kerningPair.unicodeRange2, kerningPair.unicodeName2)) {
+        kerningPair.kerning = getAttribute(kAttr).string().toFloat();
+        kerningPairs.append(kerningPair);
+    }
 }
 
 }
index 3d13119..59d59ac 100644 (file)
@@ -23,6 +23,7 @@
 #define SVGHKernElement_h
 
 #if ENABLE(SVG_FONTS)
+#include "SVGFontElement.h"
 #include "SVGParserUtilities.h"
 #include "SVGStyledElement.h"
 
@@ -33,22 +34,6 @@ namespace WebCore {
     class AtomicString;
     class SVGFontData;
 
-    // Describe an SVG <hkern> element
-    struct SVGHorizontalKerningPair {
-        UnicodeRanges unicodeRange1;
-        HashSet<String> unicodeName1;
-        HashSet<String> glyphName1;
-        UnicodeRanges unicodeRange2;
-        HashSet<String> unicodeName2;
-        HashSet<String> glyphName2;
-        float kerning;
-        
-        SVGHorizontalKerningPair()
-            : kerning(0)
-        {
-        }
-    };
-
     class SVGHKernElement : public SVGElement {
     public:
         SVGHKernElement(const QualifiedName&, Document*);
@@ -59,7 +44,7 @@ namespace WebCore {
 
         virtual bool rendererIsNeeded(RenderStyle*) { return false; }
 
-        SVGHorizontalKerningPair buildHorizontalKerningPair() const;
+        void buildHorizontalKerningPair(KerningPairVector&);
     };
 
 } // namespace WebCore
index b24c3cc..c722232 100644 (file)
@@ -841,8 +841,9 @@ bool pathSegListFromSVGData(SVGPathSegList* path, const String& d, bool process)
     return builder.build(path, d, process);
 }
 
-void parseGlyphName(const String& input, HashSet<String>& values)
+bool parseGlyphName(const String& input, HashSet<String>& values)
 {
+    // FIXME: Parsing error detection is missing.
     values.clear();
 
     const UChar* ptr = input.characters();
@@ -866,6 +867,8 @@ void parseGlyphName(const String& input, HashSet<String>& values)
         values.add(String(inputStart, inputEnd - inputStart + 1));
         skipOptionalSpacesOrDelimiter(ptr, end, ',');
     }
+
+    return true;
 }
 
 static bool parseUnicodeRange(const UChar* characters, unsigned length, UnicodeRange& range)
@@ -937,8 +940,9 @@ static bool parseUnicodeRange(const UChar* characters, unsigned length, UnicodeR
     return true;
 }
 
-void parseKerningUnicodeString(const String& input, UnicodeRanges& rangeList, HashSet<String>& stringList)
+bool parseKerningUnicodeString(const String& input, UnicodeRanges& rangeList, HashSet<String>& stringList)
 {
+    // FIXME: Parsing error detection is missing.
     const UChar* ptr = input.characters();
     const UChar* end = ptr + input.length();
 
@@ -958,6 +962,8 @@ void parseKerningUnicodeString(const String& input, UnicodeRanges& rangeList, Ha
             stringList.add(String(inputStart, ptr - inputStart));
         ++ptr;
     }
+
+    return true;
 }
 
 Vector<String> parseDelimitedString(const String& input, const char seperator)
index 3761688..cd6cbbe 100644 (file)
@@ -68,8 +68,8 @@ namespace WebCore {
     bool pathFromSVGData(Path& path, const String& d);
     bool pathSegListFromSVGData(SVGPathSegList* pathSegList, const String& d, bool process = false);
     Vector<String> parseDelimitedString(const String& input, const char seperator);
-    void parseKerningUnicodeString(const String& input, UnicodeRanges&, HashSet<String>& stringList);
-    void parseGlyphName(const String& input, HashSet<String>& values);
+    bool parseKerningUnicodeString(const String& input, UnicodeRanges&, HashSet<String>& stringList);
+    bool parseGlyphName(const String& input, HashSet<String>& values);
 
 } // namespace WebCore
 
diff --git a/WebCore/svg/SVGVKernElement.cpp b/WebCore/svg/SVGVKernElement.cpp
new file mode 100644 (file)
index 0000000..ee748fb
--- /dev/null
@@ -0,0 +1,84 @@
+/*
+   Copyright (C) Research In Motion Limited 2010. All rights reserved.
+
+   This library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public
+   License as published by the Free Software Foundation; either
+   version 2 of the License, or (at your option) any later version.
+
+   This library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public License
+   along with this library; see the file COPYING.LIB.  If not, write to
+   the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.
+*/
+
+#include "config.h"
+
+#if ENABLE(SVG_FONTS)
+#include "SVGVKernElement.h"
+
+#include "SVGFontData.h"
+#include "SVGFontElement.h"
+#include "SVGFontFaceElement.h"
+#include "SVGNames.h"
+#include "SimpleFontData.h"
+#include "XMLNames.h"
+
+namespace WebCore {
+
+using namespace SVGNames;
+
+SVGVKernElement::SVGVKernElement(const QualifiedName& tagName, Document* doc)
+    : SVGElement(tagName, doc)
+{
+}
+
+SVGVKernElement::~SVGVKernElement()
+{
+}
+
+void SVGVKernElement::insertedIntoDocument()
+{
+    Node* fontNode = parentNode();
+    if (fontNode && fontNode->hasTagName(SVGNames::fontTag)) {
+        if (SVGFontElement* element = static_cast<SVGFontElement*>(fontNode))
+            element->invalidateGlyphCache();
+    }
+}
+
+void SVGVKernElement::removedFromDocument()
+{
+    Node* fontNode = parentNode();
+    if (fontNode && fontNode->hasTagName(SVGNames::fontTag)) {
+        if (SVGFontElement* element = static_cast<SVGFontElement*>(fontNode))
+            element->invalidateGlyphCache();
+    }
+}
+
+void SVGVKernElement::buildVerticalKerningPair(KerningPairVector& kerningPairs)
+{
+    String u1 = getAttribute(u1Attr);
+    String g1 = getAttribute(g1Attr);
+    String u2 = getAttribute(u2Attr);
+    String g2 = getAttribute(g2Attr);
+    if ((u1.isEmpty() && g1.isEmpty()) || (u2.isEmpty() && g2.isEmpty()))
+        return;
+
+    SVGKerningPair kerningPair;
+    if (parseGlyphName(g1, kerningPair.glyphName1)
+        && parseGlyphName(g2, kerningPair.glyphName2)
+        && parseKerningUnicodeString(u1, kerningPair.unicodeRange1, kerningPair.unicodeName1)
+        && parseKerningUnicodeString(u2, kerningPair.unicodeRange2, kerningPair.unicodeName2)) {
+        kerningPair.kerning = getAttribute(kAttr).string().toFloat();
+        kerningPairs.append(kerningPair);
+    }
+}
+
+}
+
+#endif // ENABLE(SVG_FONTS)
diff --git a/WebCore/svg/SVGVKernElement.h b/WebCore/svg/SVGVKernElement.h
new file mode 100644 (file)
index 0000000..0592702
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+   Copyright (C) Research In Motion Limited 2010. All rights reserved.
+
+   This library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public
+   License as published by the Free Software Foundation; either
+   version 2 of the License, or (at your option) any later version.
+
+   This library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public License
+   along with this library; see the file COPYING.LIB.  If not, write to
+   the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.
+ */
+
+#ifndef SVGVKernElement_h
+#define SVGVKernElement_h
+
+#if ENABLE(SVG_FONTS)
+#include "SVGFontElement.h"
+#include "SVGParserUtilities.h"
+#include "SVGStyledElement.h"
+
+#include <limits>
+
+namespace WebCore {
+
+class AtomicString;
+class SVGFontData;
+
+class SVGVKernElement : public SVGElement {
+public:
+    SVGVKernElement(const QualifiedName&, Document*);
+    virtual ~SVGVKernElement();
+
+    virtual void insertedIntoDocument();
+    virtual void removedFromDocument();
+
+    virtual bool rendererIsNeeded(RenderStyle*) { return false; }
+
+    void buildVerticalKerningPair(KerningPairVector&);
+};
+
+} // namespace WebCore
+
+#endif // ENABLE(SVG_FONTS)
+#endif
diff --git a/WebCore/svg/SVGVKernElement.idl b/WebCore/svg/SVGVKernElement.idl
new file mode 100644 (file)
index 0000000..2cf7124
--- /dev/null
@@ -0,0 +1,25 @@
+/*
+    Copyright (C) Research In Motion Limited 2010. All rights reserved.
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Library General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Library General Public License for more details.
+
+    You should have received a copy of the GNU Library General Public License
+    along with this library; see the file COPYING.LIB.  If not, write to
+    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+    Boston, MA 02110-1301, USA.
+*/
+
+module svg {
+
+    interface [Conditional=SVG&SVG_FONTS] SVGVKernElement : SVGElement {
+    };
+
+}
index adc05f2..4ab6c5c 100644 (file)
@@ -105,6 +105,4 @@ tref interfaceName=SVGTRefElement, createWithNew
 tspan interfaceName=SVGTSpanElement, createWithNew
 use createWithNew
 view createWithNew
-#if 0
 vkern interfaceName=SVGVKernElement, createWithNew
-#endif
index 5422183..944c9cf 100644 (file)
@@ -1,3 +1,12 @@
+2010-05-08  Dirk Schulze  <krit@webkit.org>
+
+        Reviewed by Nikolas Zimmermann.
+
+        SVGFont's VKern implementation missing
+        https://bugs.webkit.org/show_bug.cgi?id=38663
+
+        * projects/svg/status.xml:
+
 2010-05-05  Shinichiro Hamaji  <hamaji@chromium.org>
 
         Reviewed by Adam Barth.
index 8467fa0..d38cb67 100644 (file)
             <element>
                 <name>vkern</name>
                 <url>http://www.w3.org/TR/SVG11/fonts.html#VKernElement</url>
-                <status>Unimplemented</status>
+                <status>Implemented</status>
             </element>
             <element>
                 <name>font-face-src</name>